在上一篇文章《使用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並沒有起作用。