ELK系列~Fluentd對大日誌的處理過程~16K

Fluentd是一個日誌收集工具,有輸入端和輸出端的概念,前者主要是日誌的來源,你能夠走多種來源方式,http,forward,tcp均可以,後者輸出端主要指把日誌進行持久化的過程,你能夠直接把它持久化到elasticsearch裏,也能夠直接在控制檯輸出,這看你如何配置了,更多基礎配置能夠看大叔這篇文章《ELK系列~對fluentd參數的理解》。html

Fluentd輸入端的小知識git

今天寫這篇文章主要是由於在實際工做中遇到的問題,咱們爲了查詢方便把日誌定義成了json格式,當你的輸入日誌不是json時,這條日誌將會被拋棄,這個功能點由fluentd的filter過濾器實現,它能夠判斷你的輸入日誌是否爲json,即不是json會被拋棄!github

在項目中出現了大日誌沒法寫入elasticsearch的問題

問題的出現json

通過屢次測試,發現大於16K的json日誌,沒法寫入elastic,緣由通過分析得出結論:當fluentd輸入端的日誌大於16K時,會被拆封成小日誌進行收集,這時被拆封的json就不是標準的了,因此在通過filter時,將會被拋棄!elasticsearch

Fluentd工做流程圖tcp

 

Fluentd大日誌分塊收集工具

對於大於16K的日誌來講,Fluentd的輸入端會分塊收集,即大日誌被拆封成多個小日誌,這時咱們設想一下,若是你輸入的是json,那被折斷以後就必定不是標準的json了,這時,再走filter過濾器時,這條不是json的日誌將被折斷!測試

解決方法

目前這個問題在國外開發人員中也出現了,在github上也有人提這個issue,多是fluentd的bug,咱們將繼續關注!spa

https://github.com/moby/moby/issues/34620日誌

相關文章
相關標籤/搜索