天天看點

Beats & FileBeat

beats是一個開放源代碼的資料發送器。我們可以把beats作為一種代理安裝在我們的伺服器上,這樣就可以比較友善地将資料發送到elasticsearch或者logstash中。elastic stack提供了多種類型的beats元件。

Beats & FileBeat

beats可以直接将資料發送到elasticsearch或者發送到logstash, 基于logstash可以進一步地對資料進行處理,然後将處理後的資料存入到elasticsearch,最後使用kibana進行資料可視化。

Beats & FileBeat

filebeat簡介

filebeat專門用于轉發和收集日志資料的輕量級采集工具。它可以作為代理安裝在伺服器上,filebeat監視指定路徑的日志檔案,收集日志資料,并将收集到的日志轉發到elasticsearch或者logstash。

filebeat的工作原理

啟動filebeat時,會啟動一個或者多個輸入(input),這些input監控指定的日志資料位置。filebeat會針對每一個檔案啟動一個harvester(收割機)。harvester讀取每一個檔案的日志,将新的日志發送到libbeat,libbeat将資料收集到一起,并将資料發送給輸

出(output)。

Beats & FileBeat

在filebeat的配置中,專門有一個解決一條日志跨多行問題的配置。主要為以下三個配置:

multiline.pattern:表示能夠比對一條日志的模式,預設配置的是以[開頭的才認為是一條新的日志。 ^[表示比對以[開頭的消息

multiline.negate:配置為false,正常比對(預設),表示不需要取反,配置為true,表示取反

multiline.match:表示是否将未比對到的行追加到上一日志,還是追加到下一個日志。

filebeat是如何工作的

filebeat主要由input和harvesters(收割機)組成。這兩個元件協同工作,并将資料發送到指定的輸出。

input是負責管理harvesters和查找所有要讀取的檔案的元件

如果輸入類型是 log,input元件會查找磁盤上與路徑描述的所有檔案,并為每個檔案啟動一個harvester,每個輸入都獨立地運作

harvesters負責讀取單個檔案的内容,它負責打開/關閉檔案,并逐行讀取每個檔案的内容,将讀取到的内容發送給輸出

每個檔案都會啟動一個harvester

harvester運作時,檔案将處于打開狀态。如果檔案在讀取時,被移除或者重命名,filebeat将繼續讀取該檔案

filebeats如何保持檔案狀态

filebeat儲存每個檔案的狀态,并定時将狀态資訊儲存在磁盤的「系統資料庫」檔案中

該狀态記錄harvester讀取的最後一次偏移量,并確定發送所有的日志資料

如果輸出(elasticsearch或者logstash)無法通路,filebeat會記錄成功發送的最後一行,并在輸出(elasticsearch或者logstash)可用時,繼續讀取檔案發送資料

在運作filebeat時,每個input的狀态資訊也會儲存在記憶體中,重新啟動filebeat時,會從「系統資料庫」檔案中讀取資料來重新建構狀态。

在filebeat-7.6.1-linux-x86_64/data目錄中有一個registry檔案夾,裡面有一個data.json,該檔案中記錄了harvester讀取日志的offset。

Beats & FileBeat

删除「系統資料庫」/data.json也就是删除日志收集時記錄的位置,删除後則會從頭開始收集