記Filebeat的prospectors部分配置說明

Filebeat的工作原理

Filebeat是一個日志文件收集工具,filebeat最初是基于logstash-forwarder源碼的日志數(shù)據(jù)shipper杉适,部署在所要采集日志的服務(wù)器上眉厨,采集指定的日志文件信息轉(zhuǎn)發(fā)給logstash進行分析然后再發(fā)送到elasticsearch構(gòu)建索引贴硫,或者直接發(fā)送到elasticsearch趁蕊,也可以發(fā)送到redis上槐壳,用redis作為消息隊列

Filebeat搜集日志的主要角色有harvesterprospectors

harvester

harvester負責讀取單個文件的內(nèi)容然低。harvester逐行讀取每個文件,并將內(nèi)容發(fā)送到輸出务唐。每個文件啟動一臺harvester脚翘。harvester負責打開關(guān)閉文件,harvester運行時會保持文件的文件描述符保持打開的狀態(tài)绍哎,而且文件在被掃描時被刪除或重命名了来农,F(xiàn)ilebeat會繼續(xù)讀取文件, 這會導(dǎo)致在harvester關(guān)閉之前崇堰,被刪除的文件的磁盤空間不會被釋放沃于。 默認情況下,F(xiàn)ilebeat將文件保持打開狀態(tài)海诲,直到達到close_inactive繁莹。

prospectors

prospectors目前支持5種類型:

  • log: Reads every line of the log file (default).
  • stdin: Reads the standard in.
  • redis: Reads slow log entries from redis (experimental).
  • udp: Reads events over UDP. Also see max_message_sizeedit.
  • docker: Reads logs from Docker. Also see containersedit (experimental).

prospectors檢查每個文件以查看是否需要啟動harvester树绩,是否已經(jīng)運行harvester届谈,或者文件是否可以被忽略氯葬。 只有在harvester關(guān)閉后文件的大小發(fā)生了變化商佑,才會選擇新行。
prospectors只能讀取本地文件
Filebeat保持每個文件的狀態(tài)并經(jīng)常將狀態(tài)刷新到磁盤的上注冊表中箫攀。 該狀態(tài)用于記住harvester正在讀取的最后偏移量昔搂,便于確保發(fā)送所有日志行竹观。但是如果你收集的日志拍嵌,每天新建了大量的文件遭赂,會發(fā)現(xiàn)注冊表會非常的巨大。要減小注冊表文件的大小横辆,有兩個可用的配置選項:clean_removedclean_inactive撇他。 對于不再接觸并忽略的舊文件,使用clean_inactive。 如果舊文件從磁盤中刪除困肩,請使用clean_removed選項划纽。

Filebeat保證事件至少會被傳送到你所配置的output目標一次,并且不會丟失數(shù)據(jù)锌畸。 Filebeat能夠?qū)崿F(xiàn)此行為勇劣,因為它將每個事件的傳遞狀態(tài)存儲在注冊表文件中。 在定義的output被阻止并且未確認所有事件接收到情況下蹋绽,F(xiàn)ilebeat將繼續(xù)嘗試發(fā)送事件,直到輸出確認已收到事件筋蓖。 如果Filebeat在發(fā)送事件的過程中關(guān)閉卸耘,它不會在關(guān)閉之前等待output目標確認所有事件的接受,F(xiàn)ilebeat在重新啟動后粘咖,他會重新發(fā)送之前沒被輸出目標確認接受的事件蚣抗。 這可以確保每個事件至少發(fā)送一次,但也可能會將重復(fù)事件發(fā)送到輸出目標瓮下。 您可以通過設(shè)置shutdown_timeout選項來配置Filebeat以在關(guān)閉之前的等待時間翰铡。

每個prospectors為每個文件保持一個狀態(tài)。 由于文件可以被重命名或移動讽坏,因此文件名和路徑不足以識別文件锭魔。 對于每個文件,F(xiàn)ilebeat存儲唯一標識符以檢測文件是否先前已被harvester掃描過路呜。

prospectors的一些配置選項

我們可以在filebeat.yaml中定義prospectors的配置選項迷捧,來實現(xiàn)對特定的日志進行特定的掃描收集,下文只列出部分配置選項胀葱,詳細請看官方文件

一. close_ *

close_ * 配置選項用于在某個標準或時間后關(guān)閉harvester漠秋。 關(guān)閉harvester意味著關(guān)閉文件處理程序。 如果收割機關(guān)閉后文件被更新抵屿,則在scan_frequency過后庆锦,文件將再次被掃描。 但是轧葛,如果在harvester關(guān)閉的情況下移動或刪除文件搂抒,F(xiàn)ilebeat將無法再次掃描文件,harvester將丟失未讀取的數(shù)據(jù)尿扯。

close_inactive
啟用此選項時燕耿,如果文件在指定的持續(xù)時間內(nèi)沒有更新,F(xiàn)ilebeat會關(guān)閉文件句柄姜胖。如果關(guān)閉的文件再次發(fā)生變化誉帅,則會啟動一臺新的harvester,并在scan_frequency過去后采集最新的更改。建議將close_inactive設(shè)置為大于日志文件兩次更新間隔時間的最大值蚜锨。例如档插,如果日志文件每隔幾秒更新一次,則可以安全地將close_inactive設(shè)置為1m亚再。如果有更新頻率非常不同的日志文件郭膛,則可以使用具有不同值的多個prospectors配置。將close_inactive設(shè)置為較低的值意味著文件句柄會更快關(guān)閉氛悬。但是则剃,這具有副作用,即如果harvester關(guān)閉如捅,則不會實時發(fā)送新的日志行棍现。關(guān)閉文件的時間戳不取決于文件的修改時間,關(guān)閉文件的時間戳為修改文件的時間+close_inactive镜遣。例如己肮,如果close_inactive設(shè)置為5分鐘,那么在收割機讀取文件的最后一行之后悲关,5分鐘的倒計時開始谎僻。您可以使用時間字符串,如2h(2小時)和5m(5分鐘)寓辱。默認值是5m艘绍。

close_renamed
啟用此選項時,文件重命名時Filebeat會關(guān)閉文件處理程序秫筏。 默認情況下鞍盗,采集器保持打開狀態(tài)并持續(xù)讀取文件,因為文件處理程序不依賴于文件名跳昼。 如果啟用close_renamed選項般甲,并且文件被重命名或移動,則文件將不會再次拾取鹅颊。 Filebeat不會完成讀取文件敷存。

close_removed
如果啟用此選項,F(xiàn)ilebeat會在刪除文件時馬上關(guān)閉harvester堪伍。如果一個文件在harvester執(zhí)行時被提前刪除锚烦,而您沒有啟用close_removed,F(xiàn)ilebeat會保持文件打開以確保harvester已經(jīng)完成 通常情況下帝雇,文件只能在close_inactive指定的時間內(nèi)未更新導(dǎo)致文件關(guān)閉后才能被刪除涮俄。 如果此設(shè)置導(dǎo)致文件因為太早從磁盤中刪除而未完全讀取,請禁用此選項尸闸。 該選項默認啟用彻亲。 如果禁用此選項孕锄,則還必須禁用clean_removed。
WINDOWS:如果您的Windows日志輪換系統(tǒng)由于無法輪換文件而顯示錯誤苞尝,請確保啟用此選項畸肆。

close_eof
啟用此選項后,一旦文件結(jié)束宙址,F(xiàn)ilebeat會立即關(guān)閉文件轴脐。 當您的文件只寫入一次而不是不時更新時,這很有用抡砂。

close_timeout
啟用此選項時大咱,F(xiàn)ilebeat會為每個harvester提供預(yù)定義的使用期限。無論harvester讀取到文件中哪個位置注益,在close_timeout時間過后讀數(shù)都會停止碴巾。當您只想在文件上花費預(yù)定義的時間時,此選項可用于較舊的日志文件聊浅。雖然close_timeout將在預(yù)定義的超時后關(guān)閉文件餐抢,但如果文件仍在更新中现使,探礦者將根據(jù)定義的scan_frequency再次啟動一個新的采集器低匙。此收割機的close_timeout將在超時倒計時后重新開始。此選項在輸出被阻止的情況下特別有用碳锈,這使得Filebeat即使對從磁盤中刪除的文件也保持打開的文件處理程序顽冶。將close_timeout設(shè)置為5m可確保文件定期關(guān)閉,以便操作系統(tǒng)釋放它們售碳。如果您將close_timeout設(shè)置為與ignore_older相等强重,則在收割機關(guān)閉時如果修改該文件,則該文件將不會被拾取贸人。這些設(shè)置的組合通常會導(dǎo)致數(shù)據(jù)丟失间景,并且不會發(fā)送完整的文件。當您對包含多行事件的日志使用close_timeout時艺智,收割機可能會停在多行事件的中間倘要,這意味著只會發(fā)送部分事件。如果收割機再次啟動并且文件仍然存在十拣,則只會發(fā)送事件的第二部分封拧。該選項默認設(shè)置為0,這意味著它被禁用夭问。

二. clean_ *

clean_ *選項用于清理注冊表文件中的狀態(tài)條目泽西。 這些設(shè)置有助于減小注冊表文件的大小,并可以防止?jié)撛诘膇node重用問題缰趋。

clean_inactive
啟用此選項后捧杉,F(xiàn)ilebeat將在指定的非活動時間段過去后移除文件的狀態(tài)陕见。如果文件已被Filebeat忽略(該文件比ignore_older早),則只能刪除該狀態(tài)糠溜。 clean_inactive設(shè)置必須大于ignore_older + scan_frequency淳玩,以確保在收集文件時不會刪除狀態(tài)。否則非竿,該設(shè)置可能會導(dǎo)致Filebeat不斷重新發(fā)送全部內(nèi)容蜕着,因為clean_inactive將刪除文件的狀態(tài),harvester仍然執(zhí)行红柱,如果文件更新或再次出現(xiàn)承匣,則從頭開始讀取文件。 clean_inactive配置選項對于減小注冊表文件的大小非常有用锤悄,特別是在每天生成大量新文件的情況下韧骗。此配置選項對于防止Linux上的inode重用導(dǎo)致的Filebeat問題也很有用。

clean_removed
啟用此選項后零聚,如果文件在磁盤上找不到袍暴,F(xiàn)ilebeat會清除注冊表中的文件,該選項默認啟用隶症。
如果您還禁用了close_removed政模,則必須禁用此選項。

三. scan_frequency

指定掃描指定路徑目錄下是否有新的文件產(chǎn)生蚂会。例如淋样,指定1以盡可能頻繁地掃描目錄,而不會導(dǎo)致Filebeat過于頻繁地掃描胁住。我們不建議將此值設(shè)置為<1秒趁猴。
如果您需要近實時發(fā)送日志行,請勿使用非常低的scan_frequency彪见,但應(yīng)調(diào)整close_inactive儡司,以便文件處理程序保持打開狀態(tài)并持續(xù)輪詢您的文件。
默認設(shè)置是10秒余指。

注意區(qū)分backoff

四. harvester_buffer_size

每個harvester在獲取文件時使用的緩沖區(qū)的大胁度(以字節(jié)為單位)。 默認值是16384浪规。

五. max_bytes

單個日志消息可以擁有的最大字節(jié)數(shù)或听。 max_bytes之后的所有字節(jié)被丟棄并且不發(fā)送。 此設(shè)置對于可能變大的多行日志消息特別有用笋婿。 默認值是10MB(10485760)誉裆。

六. json

這些選項使Filebeat能夠解碼構(gòu)造為JSON消息的日志。這些選項使Filebeat解碼日志結(jié)構(gòu)化為JSON消息缸濒。

解碼發(fā)生在行過濾和多行之前足丢。 如果您設(shè)置了message_key選項粱腻,您可以將JSON解碼與過濾和多行結(jié)合使用。 在應(yīng)用程序日志被包裝在JSON對象中的情況下斩跌,這可能會很有用绍些,例如Docker發(fā)生的情況。

配置示例:

 json.keys_under_root:true
 json.add_error_key:true
 json.message_key:日志 

您必須至少指定以下設(shè)置之一才能啟用JSON解析模式:

keys_under_root

默認情況下耀鸦,解碼后的JSON放在輸出文檔中的“json”鍵下柬批。 如果啟用此設(shè)置,則會將鍵復(fù)制到輸出文檔的頂層袖订。 默認值是false氮帐。

overwrite_keys

如果啟用了keys_under_root和此設(shè)置,則來自解碼的JSON對象的值會覆蓋Filebeat通常添加的字段(類型洛姑,源上沐,偏移量等)以防沖突。

add_error_key

如果啟用此設(shè)置楞艾,則在出現(xiàn)JSON解組錯誤或配置中定義了message_key但無法使用的情況下参咙,F(xiàn)ilebeat會添加“error.message”和“error.type:json”項。

message_key

一個可選的配置設(shè)置硫眯,用于指定應(yīng)用行篩選和多行設(shè)置的JSON密鑰蕴侧。 如果指定,鍵必須位于JSON對象的頂層舟铜,并且與鍵關(guān)聯(lián)的值必須是字符串戈盈,否則不會發(fā)生篩選或多行聚合奠衔。

七. multiline

控制Filebeat如何處理跨越多行的日志消息的選項谆刨。 有關(guān)配置多行選項的更多信息,請參閱管理多行消息 归斤。

八. tail_files

如果此選項設(shè)置為true痊夭,F(xiàn)ilebeat開始在每個文件的末尾讀取新文件,而不是開始脏里。 將此選項與日志輪換結(jié)合使用時她我,可能會跳過新文件中的第一個日志條目。 默認設(shè)置為false迫横。

此選項適用于Filebeat尚未處理的文件番舆。 如果您之前運行Filebeat并且文件的狀態(tài)已被tail_files ,則tail_files將不適用矾踱。 harvester將繼續(xù)之前的狀態(tài)執(zhí)行掃描恨狈。 要將tail_files應(yīng)用于所有文件,您必須停止Filebeat并刪除注冊表文件呛讲。 請注意禾怠,這樣做會刪除以前的所有狀態(tài)返奉。

注意
當您首次在一組日志文件上運行Filebeat時,忽略舊的日志吗氏。 第一次運行后芽偏,我們建議禁用此選項,否則您可能會在文件輪轉(zhuǎn)過程中丟失行弦讽。

九. pipeline

為此prespectors生成的事件設(shè)置的接收節(jié)點管道標識污尉。

注意
管道標識也可以在Elasticsearch輸出中進行配置,但此選項通常會讓配置文件更簡單往产。 如果管道在prespectors和輸出中均配置十厢,則選擇prespectors中的配置。

十. fields

向輸出的每一條日志添加額外的信息捂齐,比如“l(fā)evel:debug”蛮放,方便后續(xù)對日志進行分組統(tǒng)計。默認情況下奠宜,會在輸出信息的fields子目錄下以指定的新增fields建立子目錄包颁。
例如

fields: 
level: debug

則在Kibana看到的內(nèi)容如下:


十一. fields_under_root

如果該選項設(shè)置為true,則新增fields成為頂級目錄压真,而不是將其放在fields目錄下娩嚼。自定義的field會覆蓋filebeat默認的field。例如添加如下配置:

fields: 
level: debug 
fields_under_root: true

則在Kibana看到的內(nèi)容如下:


十二. symlinks

symlinks選項允許Filebeat除了常規(guī)文件以外還收集符號鏈接滴肿。 收集符號鏈接時岳悟,F(xiàn)ilebeat會打開并讀取原始文件。

當您配置收集符號鏈接時泼差,請確保排除是否存在原始文件路徑贵少。 如果單個prespectors配置為收集的符號鏈接指向的路徑已存在同一個prespectors下,則prespectors將檢測到問題并僅處理找到的第一個文件堆缘。 但是滔灶,如果配置了兩個不同的prespectors(一個讀取符號鏈接而另一個讀取原始路徑),則將采集兩個路徑吼肥,導(dǎo)致Filebeat發(fā)送重復(fù)數(shù)據(jù)录平,并且prespectors覆蓋彼此的狀態(tài)。

如果符號鏈接到日志文件的文件名中包含額外的元數(shù)據(jù)缀皱,并且您想要在Logstash中處理元數(shù)據(jù)斗这,則symlinks選項可能很有用。 例如Kubernetes日志文件的情況啤斗。

由于此選項可能會導(dǎo)致數(shù)據(jù)丟失表箭,因此默認情況下會禁用它。

十三. backoff

該選項指定達到EOF后再次檢查文件是否有更新的間隔時間争占,默認值是1秒燃逻。

十四. max_backoff

該選項指定達到EOF后再次檢查文件是否有更新的最大間隔時間序目。 默認值是10秒。

要求:max_backoff應(yīng)始終設(shè)置為max_backoff <= scan_frequency 伯襟。 如果max_backoff應(yīng)該更大猿涨,建議關(guān)閉文件處理程序,而不要讓探礦者重新拾取文件姆怪。

十五. backoff_factor

指定backoff的增長因數(shù)叛赚,backoff=backoff * backoff_factor <= max_backoff。 默認值是2稽揭。


十六. harvester_limit

harvester_limit選項限制一個探礦者并行啟動的收割機數(shù)量俺附。 這直接關(guān)系到打開的文件處理程序的最大數(shù)量。 harvester_limit的默認值是0溪掀,這意味著沒有限制事镣。 如果要采集的文件數(shù)量超過操作系統(tǒng)的打開文件處理程序限制,則此配置很有用揪胃。

設(shè)置收割機數(shù)量的限制意味著可能不是所有文件都并行打開璃哟。 因此,我們建議您將此選項與close_*選項組合使用喊递,以確保收割機更經(jīng)常停止随闪,以便可以拾取新文件。

目前骚勘,如果新的收割機可以重新啟動铐伴,收割機將隨機挑選。 這意味著收割機可能剛剛關(guān)閉俏讹,然后再次更新当宴,可能會啟動而不是收割機收集長時間未收割的文件。

此配置選項適用于每個探礦者藐石。 您可以使用此選項通過分配更高限的收割機來間接地為某些探礦者設(shè)置更高的優(yōu)先級即供。

十七. max_message_size

與type: udp 定拟,指定通過UDP接收的消息的最大大小于微。 默認值是10240。

十八. containers

這些選項僅在使用docker探礦器類型時可用青自。 它們允許配置容器列表以從中讀取日志株依。

Docker探礦者將在其路徑下搜索容器日志,并將其解析為常見的消息行延窜,并提取時間戳恋腕。 所有事情都發(fā)生在行篩選,多行和JSON解碼之前逆瑞,因此可以與它們結(jié)合使用荠藤。

配置示例:

  containers.ids:
   - '8b6fe7dc9e067b58476dc57d6986dd96d7100430c5de3b109a99cd56ac655347' 

使用docker探礦者類型時伙单,您必須定義containers.ids ,這些都是可用的設(shè)置:

  • ids
    必需的哈肖,從'*'讀取日志的Docker容器ID列表可以用作從所有容器中讀取的ID吻育。
  • path
    Docker日志所在的基本路徑。 缺省值是/var/lib/docker/containers 淤井。
  • stream
    只讀取給定的流布疼,這可以是: all , stdout或stderr 币狠。 默認是all 游两。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市漩绵,隨后出現(xiàn)的幾起案子贱案,更是在濱河造成了極大的恐慌,老刑警劉巖止吐,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轰坊,死亡現(xiàn)場離奇詭異,居然都是意外死亡祟印,警方通過查閱死者的電腦和手機肴沫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蕴忆,“玉大人颤芬,你說我怎么就攤上這事√锥欤” “怎么了站蝠?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長卓鹿。 經(jīng)常有香客問我菱魔,道長,這世上最難降的妖魔是什么吟孙? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任澜倦,我火速辦了婚禮,結(jié)果婚禮上杰妓,老公的妹妹穿的比我還像新娘藻治。我一直安慰自己,他們只是感情好巷挥,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布桩卵。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪雏节。 梳的紋絲不亂的頭發(fā)上胜嗓,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音钩乍,去河邊找鬼兼蕊。 笑死,一個胖子當著我的面吹牛件蚕,可吹牛的內(nèi)容都是我干的孙技。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼排作,長吁一口氣:“原來是場噩夢啊……” “哼牵啦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妄痪,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤哈雏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后衫生,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裳瘪,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年罪针,在試婚紗的時候發(fā)現(xiàn)自己被綠了彭羹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡泪酱,死狀恐怖派殷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情墓阀,我是刑警寧澤毡惜,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站斯撮,受9級特大地震影響经伙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜勿锅,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一帕膜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粱甫,春花似錦泳叠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宗挥。三九已至乌庶,卻和暖如春种蝶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瞒大。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工螃征, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人透敌。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓盯滚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親酗电。 傳聞我的和親對象是個殘疾皇子魄藕,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 昨天是2016年的最后一個“市集”,我們這邊是每逢農(nóng)歷3.6.9日就有一場集會撵术,俗稱“趕場”或“趕集”背率。而昨天老老...
    花盈樹閱讀 201評論 0 2
  • 昨晚做了一個很奇怪的夢!夢中的主人公并不是我嫩与,我僅僅是個看客寝姿,但又感同身受。 一個現(xiàn)代女孩的靈魂穿越到不知名的時空...
    夢水清涼閱讀 1,047評論 2 5