天天看點

ELK系列~對fluentd參數的了解

這段時候一直在研究ELK架構,主要內建在對fluentd和nxlog的研究上,國内文章不多,主要看了一下官方的API,配合自己的了解,總結了一下,希望可以幫到剛入行的朋友們!

Fluentd是一個免費,而且完全開源的日志管理工具,簡化了日志的收集、處理、和存儲,你可以不需要在維護編寫特殊的日志處理腳本。Fluentd的性能已經在各領域得到了證明:目前最大的使用者從5000+伺服器收集日志,每天5TB的資料量,在高峰時間處理50,000條資訊每秒。它可以在用戶端和服務端分别部署,用戶端收集日志輸出到服務端。

fluentd的工作由它的配置檔案決定,我們可以設定它的類型,格式,端口,綁定主機,tag标簽等。

Source節點

source主要是配置一個TCP,格式為所有,端口為預設的24224,綁定主機為自己IP的服務,它對應的用戶端就要是TCP的,我們的nxlog就是這種協定的,架構上說就是一個c/s結構,由nxlog負責把資料發到fluentd上面。

filter節點

filter就是過濾規則,當source.tag複合filter的規則時,就執行這個filter進行過濾行為

match是fluentd收到資料後的處理, @type stdout是指在控制台輸出,而我們生産環境把它輸出到了elasticsearch上面( @type elasticsearch),處理的格式是json,如果在進行parser.json失敗後,資料就不會正常的寫入指定的資料表了,當然你可以把異常的資料存儲到elasticsearch的其它表裡。

自己在實踐中總結的地方:

source裡類型為@tcp類型時,它的tag是很重要的,我們的程式需要提供這個tag,當然如果你指定了端口,那這個tag就是目前端口的,而filter要根據這個tag去比對自己,比如windows的tag,它會找以windows開頭的fitler。

filter裡的key_name,對應用戶端發送消息時的主屬性名稱,有的是log,有的是message,有的是msg,像nxlog這種用戶端它在使用tcp時key)name是message,下面說幾種情況:

1 比對了filter但沒有找到key_name會有下面提示

ELK系列~對fluentd參數的了解

2 沒有任務key_name,會在結尾出現\r符号,我們需要去自己在output裡過濾它,否則json轉換失敗

ELK系列~對fluentd參數的了解

 3 找到了對應的key_name

ELK系列~對fluentd參數的了解

4 fluentd.conf配置注意點:

ELK系列~對fluentd參數的了解

感謝各位的閱讀!

希望本文章可以幫您快速的解決問題!