Filebeat6.3文檔—Log input配置
paths
日志加載的路徑.例如加載某一子目錄級別下面路徑的日志:/var/log/*/*.log
.這表示會去加載以.log結尾的/var/log下面的所有子目錄,注意:這不包括/var/log
這一級目錄.可在paths前面加(-),指定多個目錄路徑
recursive_glob.enabled
這個特性可以在路徑后面跟隨**
,表示加載這個路徑下所有的文件,例如:/foo/**
,表示加載/foo,/foo/*,/foo/*/*
.這項特性默認是打開的,要關閉可以設置recursive_glob.enabled=false
encoding
encdoing根據輸入的文本設置
- plain, latin1, utf-8, utf-16be-bom, utf-16be, utf-16le, big5, gb18030, gbk, hz-gb-2312,
- euc-kr, euc-jp, iso-2022-jp, shift-jis, and so on
exclude_lines
用一個數組匹配FIlebeat排除的行
如果使用了multiline這個設置的話,每一個multiline信息在被exclude_lines過濾之前都會被合並成一個簡單行
下面這個例子表示,Filebeat會過濾掉所有的以DBG開頭的行
filebeat.inputs:
- type: log
...
exclude_lines: ['^DBG']
include_lines
和exclude_lines相反,Filebeat只會接受符合正則表達式的行
下面這個例子表示Filebeat將導出以ERR或WARN開頭的所有行
filebeat.inputs:
- type: log
...
include_lines: ['^ERR', '^WARN']
如果exclude_lines和include_lines都被定義了,那么Filebeat將先執行include_lines,然后再執行exclude_lines,兩者沒有順序關系
下面這個例子表示Filebeat將導出所有包含sometext的列,但是除了以DBG開頭的行
filebeat.inputs:
- type: log
...
include_lines: ['sometext']
exclude_lines: ['^DBG']
harvester_buffer_size
每個harvester的緩存大小,默認是16384
max_bytes
單個日志消息可以發送的最大字節,這個設置對multiline特別管用,默認是10MB
json
設置實例
json.keys_under_root: true
json.add_error_key: true
json.message_key: log
keys_under_root
默認情況下,解析的JSON位於輸出文檔中的“json”鍵下。如果啟用此設置,則會在輸出文檔中將鍵復制到頂層。
overwriter_keys
如果啟用了keys_under_root和此設置,則解碼的JSON對象中的值將覆蓋Filebeat通常添加的字段(類型,源,偏移等)以防發生沖突。
add_error_key
如果啟用此設置,則Filebeat會在JSON解析錯誤或在配置中定義message_key但無法使用時添加“error.message”和“error.type:json”鍵
message_key
指定被過濾的行和multiline的key,如果指定了key,那么這個key必須在頂層,並且value必須是string類型, 要不然將不能被過濾或聚合分析
ignore_decoding_error
指定如果json解析錯誤是否應該被記日志,默認是false
multiline
將多行日志合並成一行
exclude_files
用正則表達式來匹配你想要Filebeat過濾的文件
下面這個例子表示,Filebeat會過濾以gz為擴展名的文件
filebeat.inputs:
- type: log
...
exclude_files: ['\.gz$']
ignore_older
Filebeat將忽略在指定的時間跨度之前修改的所有文件.例如,如果你想要在啟動Filebeat的時候只發送最新的files和上周的文件,你就可以用這個設置
你可以使用string類型的字符串表示例如2h(2 hours) and 5m(5 minutes),默認是0,
設置0和注釋掉這個配置具有一樣的效果
注意:你必須設置ignore_older大於close_inactive
兩類文件會受此設置的影響
1.文件未被harvest
2.文件被harvest但是沒有更新的時間超過ignore_older設置的時間
close_*
用來關閉harvester在設置某個標准或時間之后.如果某個文件在被harvester關閉后更新,那么這個文件會在scan_frequency過去之后將再次被handler.
close_inactive
啟用此選項后,如果文件尚未在指定的持續時間內harvested,那么會關閉文件handler.定義期間的計時器從harvester讀最后一個文件開始.如果這個被關閉的文件內容再次改變,那么在scal_frequency之后會再次被pick up
我們推薦你設置這個值大於你頻繁更新文件的時間,如果你更新log文件每幾秒一次,那么你可以放心的設置close_inactive為1m,
close_renamed
如果設置這個值,Filebeat將會關閉文件處理當一個文件被改名了
close_timeout
給每個harvester設定一個生命周期,如果超過這個設定的時間,那么Filebeat將會停止讀取這個文件,如果這個文件依然在更新, 那么會開始一個新的harvester,並重新計時.設置close_timeout可以使操作系統定期釋放資源
如果你設置了close_timeout和ignore_older相等的時間,如果當harvester關閉后,這個文件被修改了,那么它也不會被pick up了.這通常會導致數據丟失. 如果正在處理multiline的時候close_timeout時間到了,那么可能只發送了部分文件.
clean_inactive
Filebeat將在設定的時間過后移除掉文件的讀取狀態,如果在移除文件的讀取狀態后,文件再次被更新,那么這個文件將再次被讀取
這個設置可以有效的減少文件注冊表的大小,特別是在每天有大量新的文件生成的系統中
clean_removed
Filebeat將會從注冊表中移除這些文件,如果這些文件不能再磁盤中被找到.如果某個文件消失了,然后再次出現,那么這個文件將會被從頭開始讀.默認開啟
scan_frequency
Filebeat檢查指定用於讀取的路徑下的新文件的頻率.我們推薦不要設置這個值小於1s,避免Filebeat過於頻繁的掃描.默認是10s
如果想要近實時發送日志文件,請不要使用非常小的scan_frequency,使用close_inactive可以使文件持續的保持打開並不斷的被輪詢
tail_files
如果設置了這個值為true,那么Filebeat將會從尾讀取這個文件
backoff
定義了Filebeat在達到EOF后再次檢查文件之前等待的時間,默認值已經符合大多數的場景,默認1s.
harvester_limit
設置harvesters的並發量.默認設置為0,意思是沒有做限制.如果設定了這個值, 意味着如果文件很多的話,並不會全部被托管,建議和close_*一起使用,這樣能使新的文件被托管
tags
使用標簽能夠在Filebeat輸出的每個事件中加入這個tags字段,這樣能夠被Kibana或Logstash輕松過濾
filebeat.inputs:
- type: log
. . .
tags: ["json"]
fields
可以向輸出添加其他信息,例如可以加入一些字段過濾log數據
fields_under_root
如果設定為true,那么自定義字段將存儲為輸出文檔中的頂級字段,而不是在子字段下的分組.如果自定義的字段與其他字段沖突了,那么自定義的字段會覆蓋其他字段