1. 程式人生 > >使用MongoDB儲存Docker日誌(續)

使用MongoDB儲存Docker日誌(續)

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