美文网首页
容器日志智能收集工具log-pilot无法推送到es的问题

容器日志智能收集工具log-pilot无法推送到es的问题

作者: sexy_cyber | 来源:发表于2023-08-15 08:14 被阅读0次

问题

  • 很怪啊,如果以Docker的方式启动log-pilot并且将采集的日志推送到es,根据网上的启动方式总是报错
  > 启动命令
docker run --name mypilot --rm -it \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /:/host \
    --privileged  \
    -e PILOT_LOG_PREFIX=test \
    -e FLUENTD_OUTPUT=elasticsearch \
    -e LOGGING_OUTPUT=elasticsearch \
    -e ELASTICSEARCH_HOSTS=10.12.1.238:9200 \
    registry.cn-hangzhou.aliyuncs.com/acs-sample/log-pilot:latest

错误日志

DEBU[0000] 7c6526936a0abb312ade0e2668450b1ccb185154251825145a762633004d5f27 has not log config, skip

根据错误日志也大概能明白是我启动的容器没有在启动的时候配置参数让log-pilot来采集,但是实际上我设置了啊

docker run --name test2 -it --rm \
-v /usr/local/hellowworld/logs \
--label aliyun.logs.catalina=stdout \
--entrypoint python 227ec9895a53 manage.py -e prod -s ethbtc_volume.run

解决方案

  • 被监控容器的参数--label aliyun.logs.catalina=stdout 与 log-pilot启动的参数-e PILOT_LOG_PREFIX=test \必须要匹配

    也就是说aliyun这个位置的参数必须要等于test这个位置的参数

  • PILOT_LOG_PREFIX到底是什么意思

    完全弄明白这个参数的含义,基本上就能够找到问题所在了;
    来看官方文档给的解释:

    参数用法含义
    官方文档
  • 官方文档说的并不清楚,阿里云就这鸟样,各种东西提供的官方文档垃圾的要死,很敷衍;把官方文档翻译成人话:如果你想改变被监控容器的启动参数--label aliyun.logs.catalina名称aliyun的话也可以(这个名称的前缀aliyun是可以被替换修改的),你需要在log-pilot启动参数中通过PILOT_LOG_PREFIX这个参数名来指定;

  • 比如你想改成bitget;那么你被监控的容器启动该是这样:

docker run --name test2 -it --rm \
-v /usr/local/hellowworld/logs \
--label bitget.logs.spider=stdout \
--entrypoint python 227ec9895a53 manage.py -e prod -s ethbtc_volume.run

log-pilot的启动该是这样:

docker run --name mypilot --rm -it \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /:/host \
    --privileged  \
    -e PILOT_LOG_PREFIX=bitget \
    -e FLUENTD_OUTPUT=elasticsearch \
    -e LOGGING_OUTPUT=elasticsearch \
    -e ELASTICSEARCH_HOSTS=10.12.1.238:9200 \
    registry.cn-hangzhou.aliyuncs.com/acs-sample/log-pilot:latest
  • 解释下--label bitget.logs.spider=stdout这个参数的含义:

    --label是标签的意思,固定写法;
    bitget.logs.spider这个参数名氛围三段,bitget这个位置默认是aliyun,但是也支持修改;
    logs这个是固定的,意思是捕获日志;
    spider对应的是ES的索引(index)名称;
    stdout是容器的一个概念属于,指的是容器的标准日志输出,就是print

log-pilot相关信息


Docker仓库地址:

registry.cn-hangzhou.aliyuncs.com/acs-sample/log-pilot:latest

Github地址:

很怪啊,这项目有三年没有更新了

https://github.com/AliyunContainerService/log-pilot

相关文章

网友评论

      本文标题:容器日志智能收集工具log-pilot无法推送到es的问题

      本文链接:https://www.haomeiwen.com/subject/dnqhmdtx.html