Filebeat的工作原理

2022-07-13 08:33:08 字數 1801 閱讀 1551

在這篇文章中,您可以了解filebeat的關鍵構建模組以及它們如何一起工作。了解這些概念將有助於您針對特定用例對filebeat進行配置做出明智的決定。

filebeat由兩個主要元件組成: prospectors 和 harvesters。 這些元件一起工作來尾隨檔案並將事件資料傳送到您指定的輸出。

harvesters負責讀取單個檔案的內容。 harvesters逐行讀取每個檔案,並將內容傳送到輸出。 每個檔案啟動一台harvesters。 harvesters負責開啟和關閉檔案,這意味著在harvesters執行時檔案描述符保持開啟狀態。 如果在收穫檔案時刪除或重新命名檔案,filebeat將繼續讀取檔案。 這有***,在harvesters關閉之前,磁碟上的空間被保留。 預設情況下,filebeat保持檔案開啟,直到達到close_inactive的設定(close_inactive預設為5分鐘,即5分鐘之內,沒有最新的日誌資訊產生則關閉檔案控制代碼)。

關閉harvester有以下情況:

prospector負責管理harvesters並找到所有的讀取源。如果輸入型別是日誌,則prospector會查詢驅動器上與所定義的全域性路徑匹配的所有檔案,並為每個檔案啟動乙個harvesters。 每個prospector都在自己的go例程中執行。

以下示例將filebeat配置為從與指定的glob模式匹配的所有日誌檔案中獲取行:

filebeat.prospectors:

- type: log

paths:

- /var/log/*.log

- /var/path2/*.log

filebeat目前支援兩種prospector型別:log和stdin。 每個prospector型別可以定義多次。 日誌prospector檢查每個檔案以檢視是否需要啟動harvesters,是否已經執行,還是可以忽略檔案(請參閱ignore_older,如果啟用此選項,filebeat將忽略在指定時間範圍之前修改的任何檔案。 如果長時間儲存日誌檔案,配置ignore_older會特別有用。 例如,如果要啟動filebeat,但只想從上週傳送最新的檔案和檔案,則可以配置此選項。)。 只有在harvesters關閉後檔案的大小發生了變化的情況下,才會選擇新行。

filebeat的prospectors只能讀取本地檔案。 沒有功能連線到遠端主機讀取儲存的檔案或日誌。

filebeat保持每個檔案的狀態,並經常重新整理登錄檔檔案中的磁碟狀態。狀態用於記住收割機正在讀取的最後偏移量,並確保傳送所有日誌行。

狀態資訊記錄在/usr/local/filebeat-6.1.1/data目錄中的registry檔案

[root@vl010001134060 data]# pwd

/usr/local/filebeat-6.1.1/data

[root@vl010001134060 data]# ls

meta.json registry

如果輸出(如elasticsearch或logstash)無法訪問,filebeat將跟蹤傳送的最後一行,並在輸出再次可用時繼續讀取檔案。當filebeat正在執行時,每個prospectors的狀態資訊也被儲存在記憶體中。當filebeat重新啟動時,來自登錄檔檔案的資料被用來重建狀態,並且filebeat繼續在最後乙個已知位置的每個harvester。

每個prospectors為每個找到的檔案保留乙個狀態。由於檔案可以被重新命名或移動,檔名和路徑不足以識別檔案。對於每個檔案,filebeat儲存唯一識別符號以檢測檔案是否先前被收集。

如果您的使用案例涉及每天建立大量新檔案,您可能會發現登錄檔檔案會變得太大。(使用clean_inactive、clean_removed引數來調整)

Filebeat工作原理

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

filebeat工作原理

filebeat是本地檔案的日誌資料採集器。作為伺服器上的 安裝,filebeat監視日誌目錄或特定日誌檔案,tail file,並將它們 給elasticsearch或logstash進行索引 kafka 等。filebeat由兩個主要元件組成 prospector 和harvester。這些元件...

ELK日誌處理之Filebeat工作原理

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