filebeat工作原理

2022-06-15 10:42:13 字數 2478 閱讀 3926

filebeat是本地檔案的日誌資料採集器。 作為伺服器上的**安裝,filebeat監視日誌目錄或特定日誌檔案,tail file,並將它們**給elasticsearch或logstash進行索引、kafka 等。

filebeat由兩個主要元件組成:prospector 和harvester。這些元件一起工作來讀取檔案(tail file)並將事件資料傳送到您指定的輸出

啟動filebeat時,它會啟動乙個或多個查詢器,檢視您為日誌檔案指定的本地路徑。 對於prospector 所在的每個日誌檔案,prospector 啟動harvester。 每個harvester都會為新內容讀取單個日誌檔案,並將新日誌資料傳送到libbeat,後者將聚合事件並將聚合資料傳送到您為filebeat配置的輸出。

harvester :負責讀取單個檔案的內容。讀取每個檔案,並將內容傳送到 the output

每個檔案啟動乙個harvester, harvester 負責開啟和關閉檔案,這意味著在執行時檔案描述符保持開啟狀態

如果檔案在讀取時被刪除或重新命名,filebeat將繼續讀取檔案。

這有***,即在harvester關閉之前,磁碟上的空間被保留。預設情況下,filebeat將檔案保持開啟狀態,直到達到close_inactive狀態

關閉harvester會產生以下結果:

1)如果在harvester仍在讀取檔案時檔案被刪除,則關閉檔案控制代碼,釋放底層資源。

2)檔案的採集只會在scan_frequency過後重新開始。

3)如果在harvester關閉的情況下移動或移除檔案,則不會繼續處理檔案。

要控制收割機何時關閉,請使用close_ *配置選項

prospector 負責管理harvester並找到所有要讀取的檔案**。

如果輸入型別為日誌,則查詢器將查詢路徑匹配的所有檔案,並為每個檔案啟動乙個harvester。

每個prospector都在自己的go協程中執行。

以下示例將filebeat配置為從與指定的匹配的所有日誌檔案中收集行:

filebeat.prospectors:

- type: log

paths:

- /var/log/*.log

- /var/path2/*.log

filebeat目前支援兩種prospector型別:log和stdin。

每個prospector型別可以定義多次。

日誌prospector檢查每個檔案以檢視harvester是否需要啟動,是否已經執行,

或者該檔案是否可以被忽略(請參閱ignore_older)。

只有在harvester關閉後檔案的大小發生了變化,才會讀取到新行。

注:filebeat prospector只能讀取本地檔案, 沒有功能可以連線到遠端主機來讀取儲存的檔案或日誌。

filebeat 儲存每個檔案的狀態並經常將狀態重新整理到磁碟上的註冊檔案中。

該狀態用於記住harvester正在讀取的最後偏移量,並確保傳送所有日誌行。

如果輸出(例如elasticsearch或logstash)無法訪問,filebeat會跟蹤最後傳送的行,並在輸出再次可用時繼續讀取檔案。

在filebeat執行時,每個prospector記憶體中也會儲存的檔案狀態資訊,

當重新啟動filebeat時,將使用註冊檔案的資料來重建檔案狀態,filebeat將每個harvester在從儲存的最後偏移量繼續讀取。

每個prospector為它找到的每個檔案保留乙個狀態。

由於檔案可以被重新命名或移動,因此檔名和路徑不足以識別檔案。

對於每個檔案,filebeat儲存唯一識別符號以檢測檔案是否先前已採集過。

如果您的使用案例涉及每天建立大量新檔案,您可能會發現註冊檔案增長過大。請參閱登錄檔檔案太大?編輯有關您可以設定以解決此問題的配置選項的詳細資訊。

filebeat保證事件至少會被傳送到配置的輸出一次,並且不會丟失資料。 filebeat能夠實現此行為,因為它將每個事件的傳遞狀態儲存在註冊檔案中。

在輸出阻塞或未確認所有事件的情況下,filebeat將繼續嘗試傳送事件,直到接收端確認已收到。

如果filebeat在傳送事件的過程中關閉,它不會等待輸出確認所有收到事件。

傳送到輸出但在filebeat關閉前未確認的任何事件在重新啟動filebeat時會再次傳送。

這可以確保每個事件至少傳送一次,但最終會將重複事件傳送到輸出。

也可以通過設定shutdown_timeout選項來配置filebeat以在關閉之前等待特定時間。

注意:filebeat的至少一次交付保證包括日誌輪換和刪除舊檔案的限制。如果將日誌檔案寫入磁碟並且寫入速度超過filebeat可以處理的速度,或者在輸出不可用時刪除了檔案,則可能會丟失資料。

在linux上,filebeat也可能因inode重用而跳過行。有關inode重用問題的更多詳細資訊,請參閱filebeat常見問題解答。

Filebeat工作原理

filebeat儲存檔案狀態 filebeat檢測事件策略 filebeat如何確保至少一次交付?filebeat如何避免資料重複?filebeat什麼情況會丟資料?總結前面幾節課我們講述了關於filebeat的一些基本應用和高階配置。本節課我們講深入 filebeat的原理,了解filebeat是...

Filebeat的工作原理

在這篇文章中,您可以了解filebeat的關鍵構建模組以及它們如何一起工作。了解這些概念將有助於您針對特定用例對filebeat進行配置做出明智的決定。filebeat由兩個主要元件組成 prospectors 和 harvesters。這些元件一起工作來尾隨檔案並將事件資料傳送到您指定的輸出。ha...

ELK日誌處理之Filebeat工作原理

beats是elastic stack技術棧中輕量級的日誌採集器,beats家族包括以下五個成員 elk架構中使用logstash收集 解析日誌,但是logstash對記憶體 cpu io等資源消耗比較高。相比 logstash,beats所佔系統的cpu和記憶體幾乎可以忽略不計。elasticse...