日志是系统很重要的一个组成部分,通过日志可以及时发现系统中存在的问题,也可以为修复问题提供线索.Docker提供了多种插件方式管理日志,本文就对使用MongoDB存储码头工人日志的过程做个记录。
# curl https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh - l
上面命令会在/etct/yum.repo。d/目录中,创建一个td-agent的安装库td.repo,然后自动安装td-agent。安装完毕后设为自动启动。
# systemctl开始td-agent # systemctl启用td-agent
如果在启动过程中出现问题,可以查看位于/var/log/td-agent/下日志文件td-agent.log
<强> 2。配置将码头工人日志转存到MongoDB 强>
转存到MongoDB需要插件支持,但是默认情况下td-agent是没有安装该插件的,需要安装。
#安装td-agent-gemt yum - y # td-agent-gem安装fluent-plugin-mongo
编辑/etc/td-agent/td-agent.conf,增加
# #匹配标签=码头工人。*和转储到mongodb # #在码头工人启动容器时,日志的标签要符合码头工人。*的形式 & lt;匹配码头工人。*比; @type mongo #数据库地址 主机127.0.0.1 #数据库端口 端口22017 #存储日志的数据库和数据集名称 数据库码头工人 收集日志 & lt;/match>
重启td-agent。
启动容器的命令改为:
码头工人——山类型=绑定运行,美元源=/home/演示/应用程序,目标=/app——log-driver=fluentd log-opt标签="码头工人。最新日志“python3: python3/app/test.py
运行完毕后,可以到MongoDB中查看日志。
但是在实际的使用过程中,却发现码头工人生成的日志并不会立即写入到MongoDB中,有大概1分钟左右的延迟。
查阅Fluentd的文档得知,有一个刷新参数可以控制日志的写入频率,默认的是60年代。更改flush_interval参数就可以提高写入频率,具体更改如下:
# #匹配标签=码头工人。*和转储控制台& lt;匹配码头工人。*比;@type mongo主机127.0.0.1端口22017数据库码头工人收集日志& lt; buffer>flush_mode间隔flush_interval 1 s & lt;/buffer>& lt;/match>
刚开始对文档理解不太透彻,增加了flush_interval参数后,并没有发挥作用,第一次更改时,并没有将flush_mode和flush_interval放在缓冲结构中。也就是:
# #匹配标签=码头工人。*和转储控制台& lt;匹配码头工人。*比;@type mongo主机127.0.0.1端口22017数据库码头工人收集日志flush_mode间隔flush_interval 1 s & lt;/match>
从日志中也可以看出上面的配置,并没有发挥作用:
2018-01-19 14:33:32 + 0800[警告]:参数“* * flush_mode * *”& lt;匹配码头工人。*比;@type mongo主机“1270.0.0.1”端口22017数据库“码头工人”收集“日志”flush_mode间隔flush_interval 1 s buffer_chunk_limit 8 m time_key时间& lt; inject>time_key时间time_format Y % - % - % d % H: % m: % S。% L & lt;/inject>& lt;/match>是不习惯。
引用>
上面说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 李>
如何利用MongoDB存储码头工人日志详解