Filebeat的架构分析、配置解释与示例
寫在前邊的話
在看filebeat之前我們先來看下Beats,Beats 平臺是 Elastic.co 從 packetbeat 發展出來的數據收集器系統。beat 收集器可以直接寫入 Elasticsearch,也可以傳輸給 Logstash。其中抽象出來的 libbeat,提供了統一的數據發送方法,輸入配置解析,日志記錄框架等功能。也就是說,所有的 beat 工具,在配置上,除了 input 以外,在output、filter、shipper、logging、run-options 上的配置規則都是完全一致的
而這里的filebeat就是beats 的一員,目前beat可以發送數據給Elasticsearch,Logstash,File,Console四個目的地址。filebeat 是基于原先 logstash-forwarder 的源碼改造出來的。換句話說:filebeat 就是新版的 logstash-forwarder,也會是 ELK Stack 在 shipper 端的第一選擇。
Filebeat的架構設計
當我們安裝完filebeat之后,我們可以在filebeat的安裝目錄下看到兩個文件
filebeat.template.json (輸出的文件格式,在filebeat的template中指定,當服務啟動時,會被加載)
filebeat.yml(所有的配置都在該文件下進行)
Filebeat由兩個主要組成部分組成:prospector和 harvesters。這些組件一起工作來讀取文件并將事件數據發送到您指定的output。
什么是harvesters?
harvesters負責讀取單個文件的內容。harvesters逐行讀取每個文件,并將內容發送到output中。每個文件都將啟動一個harvesters。harvesters負責文件的打開和關閉,這意味著harvesters運行時,文件會保持打開狀態。如果在收集過程中,即使刪除了這個文件或者是對文件進行重命名,Filebeat依然會繼續對這個文件進行讀取,這時候將會一直占用著文件所對應的磁盤空間,直到Harvester關閉。默認情況下,Filebeat會一直保持文件的開啟狀態,直到超過配置的close_inactive參數,Filebeat才會把Harvester關閉。
關閉Harvesters會帶來的影響:
file Handler將會被關閉,如果在Harvester關閉之前,讀取的文件已經被刪除或者重命名,這時候會釋放之前被占用的磁盤資源。
當時間到達配置的scan_frequency參數,將會重新啟動為文件內容的收集。
如果在Havester關閉以后,移動或者刪除了文件,Havester再次啟動時,將會無法收集文件數據。
當需要關閉Harvester的時候,可以通過close_*配置項來控制。
什么是Prospector?
Prospector負責管理Harvsters,并且找到所有需要進行讀取的數據源。如果input type配置的是log類型,Prospector將會去配置度路徑下查找所有能匹配上的文件,然后為每一個文件創建一個Harvster。每個Prospector都運行在自己的Go routine里。
Filebeat目前支持兩種Prospector類型:log和stdin。每個Prospector類型可以在配置文件定義多個。log Prospector將會檢查每一個文件是否需要啟動Harvster,啟動的Harvster是否還在運行,或者是該文件是否被忽略(可以通過配置 ignore_order,進行文件忽略)。如果是在Filebeat運行過程中新創建的文件,只要在Harvster關閉后,文件大小發生了變化,新文件才會被Prospector選擇到。
filebeat工作原理
Filebeat可以保持每個文件的狀態,并且頻繁地把文件狀態從注冊表里更新到磁盤。這里所說的文件狀態是用來記錄上一次Harvster讀取文件時讀取到的位置,以保證能把全部的日志數據都讀取出來,然后發送給output。如果在某一時刻,作為output的ElasticSearch或者Logstash變成了不可用,Filebeat將會把最后的文件讀取位置保存下來,直到output重新可用的時候,快速地恢復文件數據的讀取。在Filebaet運行過程中,每個Prospector的狀態信息都會保存在內存里。如果Filebeat出行了重啟,完成重啟之后,會從注冊表文件里恢復重啟之前的狀態信息,讓FIlebeat繼續從之前已知的位置開始進行數據讀取。
Prospector會為每一個找到的文件保持狀態信息。因為文件可以進行重命名或者是更改路徑,所以文件名和路徑不足以用來識別文件。對于Filebeat來說,都是通過實現存儲的唯一標識符來判斷文件是否之前已經被采集過。
如果在你的使用場景中,每天會產生大量的新文件,你將會發現Filebeat的注冊表文件會變得非常大。這個時候,你可以參考(the section called “Registry file is too large?edit),來解決這個問題。
總結
以上是生活随笔為你收集整理的Filebeat的架构分析、配置解释与示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6. 纯 CSS 绘制一颗闪闪发光的璀璨
- 下一篇: GO的下载和环境配置,Goland编译器