七叶笔记 » 数据库 » 如何利用MongoDB存储Docker日志详解

如何利用MongoDB存储Docker日志详解

上面命令会在/etct/yum.repo.d/目录中,创建一个td-agent的安装库 td.repo,然后自动安装td-agent。安装完毕后设为自动启动。

如果在启动过程中出现问题,可以查看位于/var/log/td-agent/下日志文件td-agent.log

2. 配置将docker日志转存到MongoDB

转存到MongoDB需要插件支持,但是默认情况下td-agent是没有安装该插件的,需要安装。

编辑/etc/td-agent/td-agent.conf,增加

重启td-agent。

启动容器

启动容器的命令改为:

运行完毕后,可以到MongoDB中查看日志。

后续

但是在实际的使用过程中,却发现Docker生成的日志并不会立即写入到MongoDB中,有大概1分钟左右的延迟。

查阅Fluentd的文档得知,有一个flush参数可以控制日志的写入频率,默认的是60s。更改flush_interval参数就可以提高写入频率,具体更改如下:

刚开始对文档理解不太透彻,增加了flush_interval参数后,并没有发挥作用,第一次更改时,并没有将flush_mode和flush_interval放在buffer结构中。也就是:

从日志中也可以看出上面的配置,并没有发挥作用:

2018-01-19 14:33:32 +0800 [warn]: parameter '**flush_mode**' in <match docker.*> @type mongo host "1270.0.0.1" port 22017 database "docker" collection "log" flush_mode interval flush_interval 1s buffer_chunk_limit 8m time_key time <inject> time_key time time_format %Y-%m-%d %H:%M:%S.%L </inject> </match> is not used.

上面说flush_mode并没有起作用。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对七叶笔记的支持。

参考文档:

https://docs.treasuredata.com/articles/td-agent https://docs.docker.com/engine/admin/logging/fluentd/ https://docs.fluentd.org/v1.0/articles/out_mongo

相关文章