1.Too many open file handlers
Filebeat保持文件處理程序打開,直到文件到達(dá)文件末尾,以便它可以近乎實(shí)時(shí)地讀取新的日志行。 如果Filebeat正在收集大量文件,則打開文件的數(shù)量可能會(huì)成為問題。 在大多數(shù)環(huán)境中,正在更新的文件數(shù)量很少。
close_inactive配置選項(xiàng)應(yīng)相應(yīng)地設(shè)置為關(guān)閉不再處于活動(dòng)狀態(tài)的文件。
您可以使用其他配置選項(xiàng)來關(guān)閉文件處理程序,但所有這些選項(xiàng)都應(yīng)該小心使用,因?yàn)樗鼈兛赡苡懈弊饔谩?選項(xiàng)是:
close_renamed和close_removed選項(xiàng)在Windows上很有用,可以解決與文件旋轉(zhuǎn)相關(guān)的問題。
請(qǐng)參閱打開文件處理程序?qū)е耊indows文件旋轉(zhuǎn)問題?
打開文件處理程序會(huì)導(dǎo)致Windows文件旋轉(zhuǎn)問題?
在Windows上,您可能在重命名或刪除文件時(shí)遇到問題,因?yàn)镕ilebeat會(huì)使文件處理程序保持打開狀態(tài)。
這可能會(huì)導(dǎo)致文件旋轉(zhuǎn)系統(tǒng)出現(xiàn)問題。 為避免此問題,您可以一起使用close_removed和close_renamed選項(xiàng)。
重要
當(dāng)您配置這些選項(xiàng)時(shí),收割機(jī)讀取文件之前可能會(huì)關(guān)閉文件。 如果探礦者無法再次拾取文件,并且收割機(jī)尚未完成讀取文件,則缺失的行將永遠(yuǎn)不會(huì)被發(fā)送到輸出。
close_eof選項(xiàng)在具有大量只有很少條目的文件的環(huán)境中很有用。
close_timeout選項(xiàng)在關(guān)閉文件處理程序比發(fā)送所有日志行更重要的環(huán)境中很有用。 有關(guān)更多詳細(xì)信息,請(qǐng)參閱設(shè)置探礦者。
確保在使用這些配置選項(xiàng)之前閱讀這些配置選項(xiàng)的文檔。
2.Filebeat使用了太多的CPU?
Filebeat可能被配置為頻繁掃描文件。 檢查filebeat.yml配置文件中scan_frequency的設(shè)置。 將scan_frequency設(shè)置為小于1s可能會(huì)導(dǎo)致Filebeat在頻繁的循環(huán)中掃描磁盤。
3.注冊(cè)文件太大?
Filebeat保持每個(gè)文件的狀態(tài)并將該狀態(tài)保存在registry_file中的磁盤上。 Filebeat重新啟動(dòng)時(shí),文件狀態(tài)用于在前一個(gè)位置繼續(xù)讀取文件。 如果每天都生成大量新文件,則注冊(cè)表文件可能會(huì)變得太大。 要減小注冊(cè)表文件的大小,有兩個(gè)可用的配置選項(xiàng):clean_removed和clean_inactive。
對(duì)于不再接觸并忽略的舊文件(請(qǐng)參閱ignore_older),我們建議您使用clean_inactive。 如果舊文件從磁盤中刪除,請(qǐng)使用clean_removed選項(xiàng)。
4.linux Inode重用會(huì)導(dǎo)致Filebeat跳過行嗎?
Inode重用會(huì)導(dǎo)致Filebeat跳過行嗎?
在Linux文件系統(tǒng)上,F(xiàn)ilebeat使用inode和設(shè)備來識(shí)別文件。
從磁盤中刪除文件時(shí),可將inode分配給新文件。
在涉及文件旋轉(zhuǎn)的使用情況下,如果舊文件被刪除并且之后立即創(chuàng)建新文件,
新文件可能與刪除的文件具有完全相同的inode。在這種情況下,F(xiàn)ilebeat假定新文件與舊文件相同,并嘗試在舊位置繼續(xù)讀取,這是不正確的。
默認(rèn)狀態(tài)不會(huì)從注冊(cè)表文件中刪除。要解決inode重用問題,我們建議您使用clean_ *選項(xiàng)(特別是clean_inactive)來刪除非活動(dòng)文件的狀態(tài)。
例如,如果您的文件每24小時(shí)輪換一次,并且輪換的文件不再更新,則可以將ignore_older設(shè)置為48小時(shí),將clean_inactive設(shè)置為72小時(shí)。
您可以將clean_removed用于從磁盤中刪除的文件。請(qǐng)注意,clean_removed會(huì)在掃描期間無法找到文件時(shí)清除注冊(cè)表中的文件狀態(tài)。如果文件稍后再次顯示,它將從頭開始重新發(fā)送。
5.Filebeat沒有運(yùn)送文件的最后一行?
Filebeat使用換行符來檢測(cè)事件的結(jié)束。 如果將行逐漸添加到正在采集的文件中,則在最后一行之后需要換行符,否則Filebeat將不會(huì)讀取文件的最后一行。
6.Filebeat長時(shí)間保持已刪除文件的打開文件處理程序(handler)?
在默認(rèn)行為中,F(xiàn)ilebeat會(huì)打開文件并保持打開狀態(tài),直到達(dá)到文件末尾。
在配置的輸出很長時(shí)間(例如Elasticsearch或Logstash不可用)的情況下,這可能會(huì)導(dǎo)致Filebeat將文件處理程序保留到同時(shí)從文件系統(tǒng)中刪除的文件。 只要Filebeat保持已刪除的文件處于打開狀態(tài),操作系統(tǒng)就不會(huì)釋放磁盤空間,這可能會(huì)導(dǎo)致磁盤利用率增加,甚至出現(xiàn)磁盤不足的情況。
為了緩解這個(gè)問題,您可以將close_timeoutedit設(shè)置設(shè)置為"5m"。 這將確保每5分鐘關(guān)閉一次文件處理程序,而不管是否達(dá)到EOF。
請(qǐng)注意: 如果在Filebeat到達(dá)文件末尾之前刪除文件,則此選項(xiàng)可能會(huì)導(dǎo)致數(shù)據(jù)丟失。
7.需要限制Filebeat使用的帶寬?
如果您需要限制帶寬使用率,我們建議您在操作系統(tǒng)OS上配置網(wǎng)絡(luò)堆棧以執(zhí)行帶寬限制。
例如,以下Linux命令通過在通過端口5044的TCP連接上設(shè)置50 kbps的限制來限制Filebeat和Logstash之間的連接:
tc qdisc add dev $DEV root handle 1: htb
tc class add dev $DEV parent 1:1 classid 1:10 htb rate 50kbps ceil 50kbps
tc filter add dev $DEV parent 1:0 prio 1 protocol ip handle 10 fw flowid 1:10
iptables -A OUTPUT -t mangle -p tcp --dport 5044 -j MARK --set-mark 10
使用操作系統(tǒng)工具執(zhí)行帶寬限制可讓您更好地控制策略。 例如,您可以使用操作系統(tǒng)工具在白天限制帶寬,但不是在晚上。 或者您可以保留帶寬不受限制,但為流量分配低優(yōu)先級(jí)。
8.配置問題
您的配置文件的結(jié)構(gòu)有問題,或者您使用了YAML分析程序無法解析的路徑或表達(dá)式,因?yàn)榕渲梦募凑_轉(zhuǎn)義的字符。
如果YAML文件包含具有空格或不常用字符的路徑,請(qǐng)將路徑包裝在單引號(hào)中(請(qǐng)參閱將單引號(hào)標(biāo)記為包裹路徑)。
另請(qǐng)參閱YAML提示和疑難解答中的一般建議:https://www.elastic.co/guide/en/beats/filebeat/current/yaml-tips.html
9.Kibana中的儀表板正在錯(cuò)誤地分解數(shù)據(jù)字段?
索引模板可能未正確加載。 請(qǐng)參閱步驟4:在Elasticsearch中加載索引模板。
10.字段在Kibana可視化中沒有索引或可用?
如果您最近執(zhí)行了加載或解析自定義結(jié)構(gòu)化日志的操作,則可能需要刷新索引以使字段在Kibana中可用。 要刷新索引,請(qǐng)使用刷新API。 例如:
curl -XPOST 'http://localhost:9200/filebeat-2016.08.09/_refresh'
【參考:https://www.elastic.co/guide/en/beats/filebeat/current/faq.html】