问题
- 很怪啊,如果以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
网友评论