在Filebeat安裝完成準(zhǔn)備使用前,最好先對(duì)Filebeat進(jìn)行一些詳細(xì)的配置再使用,下面來詳細(xì)講解一下相關(guān)內(nèi)容。
Filebeat的配置文件是/etc/filebeat/filebeat.yml,遵循YAML語法。具體可以配置如下幾個(gè)項(xiàng)目:
Filebeat
Output
Shipper
Logging(可選)
Run Options(可選)
這個(gè)Blog主要講解Filebeat的配置部分,其他部分后續(xù)會(huì)有新的Blog介紹。
Filebeat的部分主要定義prospector的列表,定義監(jiān)控哪里的日志文件,關(guān)于如何定義的詳細(xì)信息可以參考filebeat.yml中的注釋,下面主要介紹一些需要注意的地方。
paths:指定要監(jiān)控的日志,目前按照Go語言的glob函數(shù)處理。沒有對(duì)配置目錄做遞歸處理,比如配置的如果是:
/var/log/* /*.log
則只會(huì)去/var/log目錄的所有子目錄中尋找以”.log”結(jié)尾的文件,而不會(huì)尋找/var/log目錄下以”.log”結(jié)尾的文件。
encoding:指定被監(jiān)控的文件的編碼類型,使用plain和utf-8都是可以處理中文日志的。
input_type:指定文件的輸入類型log(默認(rèn))或者stdin。
exclude_lines:在輸入中排除符合正則表達(dá)式列表的那些行。
include_lines:包含輸入中符合正則表達(dá)式列表的那些行(默認(rèn)包含所有行),include_lines執(zhí)行完畢之后會(huì)執(zhí)行exclude_lines。
exclude_files:忽略掉符合正則表達(dá)式列表的文件(默認(rèn)為每一個(gè)符合paths定義的文件都創(chuàng)建一個(gè)harvester)。
fields:向輸出的每一條日志添加額外的信息,比如“l(fā)evel:debug”,方便后續(xù)對(duì)日志進(jìn)行分組統(tǒng)計(jì)。默認(rèn)情況下,會(huì)在輸出信息的fields子目錄下以指定的新增fields建立子目錄,例如fields.level。
fields:
level: debug
則在Kibana看到的內(nèi)容如下:
fields_under_root:如果該選項(xiàng)設(shè)置為true,則新增fields成為頂級(jí)目錄,而不是將其放在fields目錄下。自定義的field會(huì)覆蓋filebeat默認(rèn)的field。例如添加如下配置:
fields:
level: debug
fields_under_root: true
則在Kibana看到的內(nèi)容如下:
ignore_older:可以指定Filebeat忽略指定時(shí)間段以外修改的日志內(nèi)容,比如2h(兩個(gè)小時(shí))或者5m(5分鐘)。
close_older:如果一個(gè)文件在某個(gè)時(shí)間段內(nèi)沒有發(fā)生過更新,則關(guān)閉監(jiān)控的文件handle。默認(rèn)1h。
force_close_files:Filebeat會(huì)在沒有到達(dá)close_older之前一直保持文件的handle,如果在這個(gè)時(shí)間窗內(nèi)刪除文件會(huì)有問題,所以可以把force_close_files設(shè)置為true,只要filebeat檢測到文件名字發(fā)生變化,就會(huì)關(guān)掉這個(gè)handle。
scan_frequency:Filebeat以多快的頻率去prospector指定的目錄下面檢測文件更新(比如是否有新增文件),如果設(shè)置為0s,則Filebeat會(huì)盡可能快地感知更新(占用的CPU會(huì)變高)。默認(rèn)是10s。
document_type:設(shè)定Elasticsearch輸出時(shí)的document的type字段,也可以用來給日志進(jìn)行分類。
harvester_buffer_size:每個(gè)harvester監(jiān)控文件時(shí),使用的buffer的大小。
max_bytes:日志文件中增加一行算一個(gè)日志事件,max_bytes限制在一次日志事件中最多上傳的字節(jié)數(shù),多出的字節(jié)會(huì)被丟棄。
multiline:適用于日志中每一條日志占據(jù)多行的情況,比如各種語言的報(bào)錯(cuò)信息調(diào)用棧。這個(gè)配置的下面包含如下配置:
pattern:多行日志開始的那一行匹配的patternnegate:是否需要對(duì)pattern條件轉(zhuǎn)置使用,不翻轉(zhuǎn)設(shè)為true,反轉(zhuǎn)設(shè)置為falsematch:匹配pattern后,與前面(before)還是后面(after)的內(nèi)容合并為一條日志max_lines:合并的最多行數(shù)(包含匹配pattern的那一行)timeout:到了timeout之后,即使沒有匹配一個(gè)新的pattern(發(fā)生一個(gè)新的事件),也把已經(jīng)匹配的日志事件發(fā)送出去
1
2
3
4
5
1
2
3
4
5
tail_files:如果設(shè)置為true,F(xiàn)ilebeat從文件尾開始監(jiān)控文件新增內(nèi)容,把新增的每一行文件作為一個(gè)事件依次發(fā)送,而不是從文件開始處重新發(fā)送所有內(nèi)容。
backoff:Filebeat檢測到某個(gè)文件到了EOF之后,每次等待多久再去檢測文件是否有更新,默認(rèn)為1s。
max_backoff:Filebeat檢測到某個(gè)文件到了EOF之后,等待檢測文件更新的最大時(shí)間,默認(rèn)是10秒。
backoff_factor:定義到達(dá)max_backoff的速度,默認(rèn)因子是2,到達(dá)max_backoff后,變成每次等待max_backoff那么長的時(shí)間才backoff一次,直到文件有更新才會(huì)重置為backoff。比如:
如果設(shè)置成1,意味著去使能了退避算法,每隔backoff那么長的時(shí)間退避一次。
spool_size:spooler的大小,spooler中的事件數(shù)量超過這個(gè)閾值的時(shí)候會(huì)清空發(fā)送出去(不論是否到達(dá)超時(shí)時(shí)間)。
idle_timeout:spooler的超時(shí)時(shí)間,如果到了超時(shí)時(shí)間,spooler也會(huì)清空發(fā)送出去(不論是否到達(dá)容量的閾值)。
registry_file:記錄filebeat處理日志文件的位置的文件
config_dir:如果要在本配置文件中引入其他位置的配置文件,可以寫在這里(需要寫完整路徑),但是只處理prospector的部分。
publish_async:是否采用異步發(fā)送模式(實(shí)驗(yàn)功能)。