在Filebeat安裝完成準(zhǔn)備使用前,最好先對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ù)處理做鹰。沒有對配置目錄做遞歸處理,比如配置的如果是:
/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ù)對日志進(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成為頂級目錄,而不是將其放在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:是否需要對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)功能)档叔。