docker daemon 的日誌是輸出到標準輸出和標準出錯的.
為管理方便, 決定用systemd 做dockerd 的啟停, 這樣日誌就被systemd 的journal 模組收集去了.
通過journalctl -u docker -f -n 0
可以即時follow, 類似tail -f
.
對接logstash 的pipe 也沒問題.
但不完美.
一旦 logstash 掛掉, 或者重啟, 下次再重新 follow 日誌的時候, 就接不上了, 會丟一部分.
看了幾天的 systemd 沒有找到好的方法.
現在正在考慮直接把 syslog 日誌全部收集出來, 看有沒有辦法後面再做區分.
我們加了一層fluentd,把journald / syslog / container的log倒到s3和ELK.
fluentd有可以設定的buffer,在logstash出錯時暫停,重新連上後再繼續寫。