Filebeat是什么

Filebeat是用于轉(zhuǎn)發(fā)和集中日志數(shù)據(jù)的輕量級(jí)傳送程序。作為服務(wù)器上的代理安裝,F(xiàn)ilebeat監(jiān)視您指定的日志文件或位置,收集日志事件,并將它們轉(zhuǎn)發(fā)到Elasticsearch或Logstash等進(jìn)行索引。

Filebeat由兩個(gè)主要組件組成:prospector和harvester。這些組件一起工作來讀取文件(tail file)并將事件數(shù)據(jù)發(fā)送到您指定的輸出

啟動(dòng)Filebeat時(shí),它會(huì)啟動(dòng)一個(gè)或多個(gè)查找器,查看您為日志文件指定的本地路徑。對于prospector所在的每個(gè)日志文件,prospector啟動(dòng)harvester。每個(gè)harvester都會(huì)為新內(nèi)容讀取單個(gè)日志文件,并將新日志數(shù)據(jù)發(fā)送到libbeat,后者將聚合事件并將聚合數(shù)據(jù)發(fā)送到您為Filebeat配置的輸出。

harvester

harvester:負(fù)責(zé)讀取單個(gè)文件的內(nèi)容。讀取每個(gè)文件,并將內(nèi)容發(fā)送到the output

每個(gè)文件啟動(dòng)一個(gè)harvester,harvester負(fù)責(zé)打開和關(guān)閉文件,這意味著在運(yùn)行時(shí)文件描述符保持打開狀態(tài)

如果文件在讀取時(shí)被刪除或重命名,F(xiàn)ilebeat將繼續(xù)讀取文件。

這有副作用,即在harvester關(guān)閉之前,磁盤上的空間被保留。默認(rèn)情況下,F(xiàn)ilebeat將文件保持打開狀態(tài),直到達(dá)到close_inactive狀態(tài)

關(guān)閉harvester會(huì)產(chǎn)生以下結(jié)果:

1)如果在harvester仍在讀取文件時(shí)文件被刪除,則關(guān)閉文件句柄,釋放底層資源。

2)文件的采集只會(huì)在scan_frequency過后重新開始。

3)如果在harvester關(guān)閉的情況下移動(dòng)或移除文件,則不會(huì)繼續(xù)處理文件。

要控制收割機(jī)何時(shí)關(guān)閉,請使用close_*配置選項(xiàng)

prospector

prospector負(fù)責(zé)管理harvester并找到所有要讀取的文件來源。

如果輸入類型為日志,則查找器將查找路徑匹配的所有文件,并為每個(gè)文件啟動(dòng)一個(gè)harvester。

每個(gè)prospector都在自己的Go協(xié)程中運(yùn)行。

Filebeat目前支持兩種prospector類型:log和stdin。

每個(gè)prospector類型可以定義多次。

日志prospector檢查每個(gè)文件以查看harvester是否需要啟動(dòng),是否已經(jīng)運(yùn)行,

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

只有在harvester關(guān)閉后文件的大小發(fā)生了變化,才會(huì)讀取到新行。