在上一篇文章《使用MongoDB存储Docker日志》中完成了Docker + Fluentd + MongoDB的基本配置。但是在实际的使用过程中,却发现Docker生成的日志并不会立即写入到MongoDB中,有大概1分钟左右的延迟。
查阅Fluentd的文档得知,有一个flush参数可以控制日志的写入频率,默认的是60s。更改flush_interval参数就可以提高写入频率,具体更改如下:
## match tag=docker.* and dump to console
<match docker.*>
@type mongo
host 127.0.0.1
port 22017
database docker
collection log
<buffer>
flush_mode interval
flush_interval 1s
</buffer>
</match>
刚开始对文档理解不太透彻,增加了flush_interval参数后,并没有发挥作用,第一次更改时,并没有将flush_mode和flush_interval放在buffer结构中。也就是:
## match tag=docker.* and dump to console
<match docker.*>
@type mongo
host 127.0.0.1
port 22017
database docker
collection log
flush_mode interval
flush_interval 1s
</match>
从日志中也可以看出上面的配置,并没有发挥作用:
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并没有起作用。