使用log-pilot收集docker容器日志

  1. 实践

本文档介绍一款新的 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>:自定义字符串,分别指代:

  1. eleasticsearch->index
  2. 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" 转载请保留原文链接及作者。

0 条评论
未登录用户
Error: Not Found.
支持 Markdown 语法

来做第一个留言的人吧!

目录
  1. 实践
×

喜欢就点赞,疼爱就打赏