使用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容器日志的主要内容,如果未能解决你的问题,请参考以下文章

fluentd收集Docker stdout日志

centos7下安装docker(18.3docker日志---logging driver---fluentd)

Docker 容器日志管理Fluentd

EFK(Elasticsearch + Fluentd + Kibana)方式进行Docker日志收集检索展示

Nginx容器日志收集方案fluentd+elasticsearch+kilbana

rancher使用fluentd-pilot收集日志分享