Filebeat是用于轉(zhuǎn)發(fā)和集中日志數(shù)據(jù)的輕量級傳送程序。作為服務(wù)器上的代理安裝,F(xiàn)ilebeat監(jiān)視您指定的日志文件或位置,收集日志事件,并將它們轉(zhuǎn)發(fā)到Elasticsearch或Logstash等進行索引。
Filebeat由兩個主要組件組成:prospector和harvester。這些組件一起工作來讀取文件(tail file)并將事件數(shù)據(jù)發(fā)送到您指定的輸出
啟動Filebeat時,它會啟動一個或多個查找器,查看您為日志文件指定的本地路徑。對于prospector所在的每個日志文件,prospector啟動harvester。每個harvester都會為新內(nèi)容讀取單個日志文件,并將新日志數(shù)據(jù)發(fā)送到libbeat,后者將聚合事件并將聚合數(shù)據(jù)發(fā)送到您為Filebeat配置的輸出。
harvester
harvester:負(fù)責(zé)讀取單個文件的內(nèi)容。讀取每個文件,并將內(nèi)容發(fā)送到the output
每個文件啟動一個harvester,harvester負(fù)責(zé)打開和關(guān)閉文件,這意味著在運行時文件描述符保持打開狀態(tài)
如果文件在讀取時被刪除或重命名,F(xiàn)ilebeat將繼續(xù)讀取文件。
這有副作用,即在harvester關(guān)閉之前,磁盤上的空間被保留。默認(rèn)情況下,F(xiàn)ilebeat將文件保持打開狀態(tài),直到達到close_inactive狀態(tài)
關(guān)閉harvester會產(chǎn)生以下結(jié)果:
1)如果在harvester仍在讀取文件時文件被刪除,則關(guān)閉文件句柄,釋放底層資源。
2)文件的采集只會在scan_frequency過后重新開始。
3)如果在harvester關(guān)閉的情況下移動或移除文件,則不會繼續(xù)處理文件。
要控制收割機何時關(guān)閉,請使用close_*配置選項
prospector
prospector負(fù)責(zé)管理harvester并找到所有要讀取的文件來源。
如果輸入類型為日志,則查找器將查找路徑匹配的所有文件,并為每個文件啟動一個harvester。
每個prospector都在自己的Go協(xié)程中運行。
Filebeat目前支持兩種prospector類型:log和stdin。
每個prospector類型可以定義多次。
日志prospector檢查每個文件以查看harvester是否需要啟動,是否已經(jīng)運行,
或者該文件是否可以被忽略(請參閱ignore_older)。
只有在harvester關(guān)閉后文件的大小發(fā)生了變化,才會讀取到新行。