使用log-pilot收集docker容器日志
本文档介绍一款新的 Docker 日志收集工具:log-pilot。log-pilot 是阿里云提供的日志收集镜像。我们可以在每台机器上部署一个 log-pilot 实例,就可以收集机器上所有 Docker 应用日志。(注意:只支持Linux版本的Docker,不支持Windows/Mac版)。
log-pilot 具有如下特性:
- 一个单独的 log 进程收集机器上所有容器的日志。不需要为每个容器启动一个 log 进程。
- 支持文件日志和 stdout。docker log dirver 亦或 logspout 只能处理 stdout,log-pilot 不仅支持收集 stdout 日志,还可以收集文件日志。
- 声明式配置。当您的容器有日志要收集,只要通过 label 声明要收集的日志文件的路径,无需改动其他任何配置,log-pilot 就会自动收集新容器的日志。
- 支持多种日志存储方式。无论是强大的阿里云日志服务,还是比较流行的 elasticsearch 组合,甚至是 graylog,log-pilot 都能把日志投递到正确的地点。
开源。log-pilot 完全开源,您可以从 Git项目地址 下载代码。如果现有的功能不能满足您的需要,欢迎提 issue。
实践
先有应用使用单机docker部署,需要将docker容器产生的日志发送到kafka.
首先部署log-pilot镜像,用来感知容器日志并发送日志到目的地:
docker run --name log-pilot -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/localtime:/etc/localtime \
-v /:/host:ro \
--cap-add SYS_ADMIN \
-e LOGGING_OUTPUT=kafka \ #选择输入类型 kafka
-e KAFKA_BROKERS=kafka:9092 \ # 配置kafka的地址
registry.cn-hangzhou.aliyuncs.com/acs/log-pilot:0.9.5-filebeat
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
运行docker应用的时候只需要增加标签 aliyun.$name.*:
如:
docker run -it --rm -p 10080:8080 \
-v /usr/local/tomcat/logs \
--label aliyun.logs.catalina=stdout \
--label aliyun.logs.access=/usr/local/tomcat/logs/localhost_access_log.*.txt \
tomcat
- 1
- 2
- 3
- 4
- 5
还可以自定义输入的target:
aliyun.$name.target=<target>
<target>:自定义字符串,分别指代:
- eleasticsearch->index
- kafka->topic
参考文章:
日志采集利器
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 wzslw@163.com
文章标题:使用log-pilot收集docker容器日志
文章字数:514
本文作者:武继明
发布时间:2019-05-21, 16:25:15
最后更新:2020-08-21, 06:30:57
原始链接:https://www.omingo.com/2019/05/21/使用log-pilot收集docker容器日志/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。
来做第一个留言的人吧!