不建議使用 Filebeat 從網絡 Volumes 讀取日誌文件。 盡可能在主機上安裝 Filebeat 並從那裏直接發送日誌文件。 從網絡Volumes 讀取文件(尤其是在Windows上)可能會產生意外的副作用。 例如,更改的文件標識符可能導致 Filebeat 再次從頭讀取日誌文件。
這可能是因為 Filebeat 配置不正確或無法將事件發送到 output,解決方案:
./filebeat -c config.yml -e -d "*"
下面說說 ignore_older 這個配置:
如果啟用此選項,Filebeat 將忽略在指定時間跨度之前修改的任何文件。 如果我們將日誌文件保留很長時間,那麽配置 ignore_older 尤其有用。 例如,如果要啟動 Filebeat ,但只想發送最新文件和自上周以來的文件,則可以配置此選項。我們可以使用時間字符串,如 2h(2小時)和 5m(5分鐘)。 默認值為 0 ,禁用該設置。 註釋掉配置與將其設置為0具有相同的效果。
配置項 close_inactive 表示在 harvester 讀取某文件最後壹行日誌之後,持續時間內某文件沒有再寫入日誌,Filebeat 將關閉文件句柄,默認是 5m。
Filebeat 會持續保持著句柄,以便以便它可以近乎實時地讀取新的日誌行。如果 Filebeat 正在收集大量文件,則打開的文件數可能會成為問題。在大多數環境中,活動更新的文件數較少。應相應設置 close_inactive 配置選項以關閉不再活動的文件。
還有其他配置選項可以用來關閉文件處理程序,但是所有這些配置選項都應該仔細使用,因為它們可能有副作用。選項是:
close_renamed
close_removed
close_eof
close_timeout
harvester_limit
close_renamed 和 close_removed 選項在 Windows 上可用於解決與 log rotate 相關的問題。請參閱 the section called “Open file handlers cause issues with Windows file rotation? 。 close_eof 選項在包含大量文件且只有很少 entries 的環境中很有用。 close_timeout 選項在允許數據丟失且必須對文件句柄關閉非常重視的情況下非常有用。有關更多詳細信息,請參閱 Filebeat Prospectors Configuration 。
在使用任何配置選項之前,請確保閱讀了這些配置選項的文檔。
Filebeat保持每個文件的狀態,並將狀態保持在 registry_file 中。 Filebeat 重新啟動時,文件狀態用於繼續在先前位置讀取文件。 如果每天生成大量的新文件,則 文registry_file 件可能會增長得太大。 要減小 registry_file 的大小,有兩個可用的配置選項: clean_removed 和 clean_inactive 。
對於不再 touch 並需要 ignore 的舊文件,建議使用 clean_inactive 。 對於已經從磁盤刪除的舊文件,則使用 clean_removed 選項。
在 Linux 文件系統上,Filebeat 使用 inode 和 device 來標識文件。當文件從磁盤中刪除時,可以將 inode 分配給壹個新文件。在涉及文件輪換的用例中,如果舊文件被刪除,並且之後立即創建新文件,則新文件可以具有與被移除的文件完全相同的 inode。在這種情況下,Filebeat 假定新文件與舊文件相同,並嘗試在舊 offset 繼續讀取,這是不正確的。
默認情況下,永遠不會從 registry_file 中刪除。要解決 inode 復用問題,建議使用 clean_ * 選項,特別是 clean_inactive ,以刪除非活動文件的狀態。例如,如果文件每 24 小時輪換壹次,並且輪轉的文件不再更新,可以將 ignore_older 設置為48小時,將 clean_inactive 設置為72小時。
對於從磁盤中刪除的文件,可以使用 clean_removed 。請註意,每當在掃描期間找不到文件時, clean_removed 會從 registry_file 清除文件狀態。如果文件稍後再次顯示,則將從頭重新發送。
Filebeat 可能被配置為太頻繁地掃描文件。 檢查 filebeat.yml 配置文件中 scan_frequency 的設置。 將 scan_frequency 設置為小於1秒可能導致 Filebeat 掃描磁盤過於頻繁。
如果最近執行了 loads 或解析自定義結構化日誌的操作,則可能需要刷新索引以使字段在 Kibana 中可用。 要刷新索引,請使用刷新API。 例如:
Filebeat 使用換行符來檢測事件的結束。 如果行被遞增地添加到正在收集的文件,則最後壹行之後需要換行符,否則Filebeat 將不會讀取文件的最後壹行。
如果需要限制帶寬使用,建議在操作系統上配置網絡堆棧以執行帶寬限制。
例如,以下 Linux 命令通過在端口 5044 上對 TCP 連接設置 50 kbps 的限制來限制 Filebeat 和 Logstash 之間的連接:
使用OS工具執行帶寬限制可以更好地控制策略。 例如,可以使用操作系統工具在白天限制帶寬,但不能在夜間限制。 或者,可以保留帶寬未封頂,但為流量分配低優先級。
以下是壹些常見的錯誤和解決方法:
x509: cannot validate certificate for <IP address> because it doesn’t contain any IP SANs
這是因為證書僅對 Subject filed 中顯示的 hostname 有效。要解決此問題,請嘗試以下解決方案:
getsockopt: no route to host
這不是SSL問題。這是壹個網絡問題。確保兩個主機可以通信。
getsockopt:connection refused
這不是SSL問題。確保 Logstash 正在運行,並且沒有防火墻阻止流量。
No connection could be made because the target machine actively refused it
防火墻拒絕連接。檢查防火墻是否阻止客戶端,網絡或目標主機上的流量。