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ì)讀取到新行。