Fluentd 配置文件-client fluentd 到 server fluentd,从客户端机器收集日志,发送到服务器端。客户端收集日志的时候,使用docker的log-driver。打印出来的日志格式大致如下:
2016-09-18T23:42:36+08:00 docker.temp01 {“container_id”:”cc3c42b73c43eb56f53804da81f3ea7850d0f85bf48f7b3095b73d841dee7010″,”container_name”:”/temp01″,”source”:”stdout”,”log”:”hello”}
在日志中
source
字段,fluentd接收docker的log-driver会接收两个来源,stdout
/stderr
(官网说明),在一般的日志收集中我们不会用到stdout
,所以需要将其除去。这里主要使用
fluent-plugin-rewrite-tag-filter
插件,插件官网文档,Github地址安装:
fluent-gem install fluent-plugin-rewrite-tag-filter
或者
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-rewrite-tag-filter
客户端Fluent
<source> type forward log_level error port 24224 bind 0.0.0.0 </source> # 接收来docker的log-driver的tag <match docker.*> type rewrite_tag_filter # 根据source字段,重新把tag进行标记 rewriterule1 source stdout out.${tag} rewriterule2 source stderr err.${tag} </match> # source字段为stdout的,重新标记tag,新的tag为out.docker.* <match out.docker.*> type stdout </match> # source字段为stderr的,重新标记tag,新的tag为err.docker.* # 发送给192.168.126.136 Fluentd 服务器 <match err.docker.*> type forward <server> host 192.168.126.136 port 24224 </server> flush_interval 5s </match>
用此配置文件运行fluentd:fluentd -c docker_in06.conf
服务器端fluentd
<source> type forward port 24224 bind 0.0.0.0 log_level error </source> <match err.docker.*> type forest subtype file <template> type file_alternative path /home/lee/fluentd-log/${tag_parts[2]}/temp </template> </match>
从客户端转发过来的日志,会根据服务器端的match进行相应的匹配,并存储在相应的地方