使用Fluentd收集Docker容器日志
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Fluentd收集Docker容器日志相关的知识,希望对你有一定的参考价值。
参考技术A 本文介绍使用Fluentd收集standalone容器日志的方法。Docker提供了很多 logging driver ,默认情况下使用的 json-file ,它会把容器打到stdout/stderr的日志收集起来存到json文件中, docker logs 所看到的日志就是来自于这些json文件。
当有多个docker host的时候你会希望能够把日志汇集起来,集中存放到一处,本文讲的是如何通过 fluentd logging driver 配合 fluentd 来达成这一目标。
目标:
首先是配置文件 fluent.conf :
新建一个目录比如/home/ubuntu/container-logs,并赋予权限chmod 777 /home/ubuntu/container-logs。
然后启动Fluentd实例,这里使用的Docker方式:
在启动容器的时候执行使用fluentd作为logging driver,下面以standalone容器举例:
注意上面的--log-opt tag=.Name参数。
如果是docker compose / docker stack deploy部署,则在docker-compose.yaml中这样做 :
到/home/ubuntu/container-logs目录下能够看到类似这样的目录结构:
上面的示例,在实践中,并没有完全采用,不过采用日期形式记录容器日志的 fluentd 配置信息基本完全采用。我采用独立的docker-compose编辑文件处理fluentd的启动
其他输出日志的容器采用独立的编排
以上是关于使用Fluentd收集Docker容器日志的主要内容,如果未能解决你的问题,请参考以下文章
centos7下安装docker(18.3docker日志---logging driver---fluentd)
EFK(Elasticsearch + Fluentd + Kibana)方式进行Docker日志收集检索展示