ELK系列~对fluentd参数的理解
這段時候一直在研究ELK框架,主要集成在對fluentd和nxlog的研究上,國內文章不多,主要看了一下官方的API,配合自己的理解,總結了一下,希望可以幫到剛入行的朋友們!
Fluentd(日志收集與過濾,server)
Fluentd是一個免費,而且完全開源的日志管理工具,簡化了日志的收集、處理、和存儲,你可以不需要在維護編寫特殊的日志處理腳本。Fluentd的性能已經在各領域得到了證明:目前最大的用戶從5000+服務器收集日志,每天5TB的數據量,在高峰時間處理50,000條信息每秒。它可以在客戶端和服務端分別部署,客戶端收集日志輸出到服務端。 fluentd的工作由它的配置文件決定,我們可以設置它的類型,格式,端口,綁定主機,tag標簽等。 <source>@type tcptag pilipaformat noneport 24224bind 0.0.0.0</source><filter docker.**>type parserformat jsontime_format %Y-%m-%dT%H:%M:%S.%L%Zkey_name logreserve_data true</filter><match **>@type stdout</match> </ROOT>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會有下面提示
2 沒有任務key_name,會在結尾出現\r符號,我們需要去自己在output里過濾它,否則json轉換失敗
?3 找到了對應的key_name
4 fluentd.conf配置注意點:感謝各位的閱讀!
希望本文章可以幫您快速的解決問題!
?
轉載于:https://www.cnblogs.com/lori/p/7740143.html
總結
以上是生活随笔為你收集整理的ELK系列~对fluentd参数的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用pipenv代替virtualenv
- 下一篇: 【初学者必读】:前端工程师的知识体系