Filebeat的配置文件是/etc/filebeat/filebeat.yml,遵循YAML語法。具體可以配置如下幾個項目:
-
Filebeat
-
Output
-
Shipper
-
Logging(可選)
-
Run Options(可選)
這個Blog主要講解Filebeat的配置部分,其他部分后續會有新的Blog介紹。
Filebeat的部分主要定義prospector的列表,定義監控哪里的日志文件,關於如何定義的詳細信息可以參考filebeat.yml中的注釋,下面主要介紹一些需要注意的地方。
filebeat.prospectors:
- input_type: log
paths:
- /log/channelserver.log
#- /home/wang/data/filebeat-5.0.2-linux-x86_64/test.log
encoding: gbk
symlinks: true
include_lines: ['\[.*?統計\]','\[.*?結算\]']
document_type: channelserver
fields_under_root: true
fields:
host: 192.168.10.155
processors:
- drop_fields:
#fields: ["beat.hostname", "beat.name", "beat.version", "input_type", "beat"]
fields: ["input_type", "beat", "offset", "source"]
output.redis:
enabled: true
hosts: ["192.168.10.188"]
port: 6379
datatype: list
key: "filebeat"
db: 0
output.file:
enabled: true
path: "/tmp/filebeat"
output.console:
enabled: false
-
paths:指定要監控的日志,目前按照Go語言的glob函數處理。沒有對配置目錄做遞歸處理,比如配置的如果是:
/var/log/* /*.log
則只會去/var/log目錄的所有子目錄中尋找以”.log”結尾的文件,而不會尋找/var/log目錄下以”.log”結尾的文件。
-
encoding:指定被監控的文件的編碼類型,使用plain和utf-8都是可以處理中文日志的。
-
input_type:指定文件的輸入類型log(默認)或者stdin。
-
exclude_lines:在輸入中排除符合正則表達式列表的那些行。
-
include_lines:包含輸入中符合正則表達式列表的那些行(默認包含所有行),include_lines執行完畢之后會執行exclude_lines。
-
exclude_files:忽略掉符合正則表達式列表的文件(默認為每一個符合paths定義的文件都創建一個harvester)。
-
fields:向輸出的每一條日志添加額外的信息,比如“level:debug”,方便后續對日志進行分組統計。默認情況下,會在輸出信息的fields子目錄下以指定的新增fields建立子目錄,例如fields.level。
fields:
level: debug
則在Kibana看到的內容如下:

-
fields_under_root:如果該選項設置為true,則新增fields成為頂級目錄,而不是將其放在fields目錄下。自定義的field會覆蓋filebeat默認的field。例如添加如下配置:
fields:
level: debug
fields_under_root: true
則在Kibana看到的內容如下:

-
ignore_older:可以指定Filebeat忽略指定時間段以外修改的日志內容,比如2h(兩個小時)或者5m(5分鍾)。
-
close_older:如果一個文件在某個時間段內沒有發生過更新,則關閉監控的文件handle。默認1h。
-
force_close_files:Filebeat會在沒有到達close_older之前一直保持文件的handle,如果在這個時間窗內刪除文件會有問題,所以可以把force_close_files設置為true,只要filebeat檢測到文件名字發生變化,就會關掉這個handle。
-
scan_frequency:Filebeat以多快的頻率去prospector指定的目錄下面檢測文件更新(比如是否有新增文件),如果設置為0s,則Filebeat會盡可能快地感知更新(占用的CPU會變高)。默認是10s。
-
document_type:設定Elasticsearch輸出時的document的type字段,也可以用來給日志進行分類。
-
harvester_buffer_size:每個harvester監控文件時,使用的buffer的大小。
-
max_bytes:日志文件中增加一行算一個日志事件,max_bytes限制在一次日志事件中最多上傳的字節數,多出的字節會被丟棄。
-
multiline:適用於日志中每一條日志占據多行的情況,比如各種語言的報錯信息調用棧。這個配置的下面包含如下配置:
-
tail_files:如果設置為true,Filebeat從文件尾開始監控文件新增內容,把新增的每一行文件作為一個事件依次發送,而不是從文件開始處重新發送所有內容。
-
backoff:Filebeat檢測到某個文件到了EOF之后,每次等待多久再去檢測文件是否有更新,默認為1s。
-
max_backoff:Filebeat檢測到某個文件到了EOF之后,等待檢測文件更新的最大時間,默認是10秒。
-
backoff_factor:定義到達max_backoff的速度,默認因子是2,到達max_backoff后,變成每次等待max_backoff那么長的時間才backoff一次,直到文件有更新才會重置為backoff。比如:

如果設置成1,意味着去使能了退避算法,每隔backoff那么長的時間退避一次。
-
spool_size:spooler的大小,spooler中的事件數量超過這個閾值的時候會清空發送出去(不論是否到達超時時間)。
-
idle_timeout:spooler的超時時間,如果到了超時時間,spooler也會清空發送出去(不論是否到達容量的閾值)。
-
registry_file:記錄filebeat處理日志文件的位置的文件
-
config_dir:如果要在本配置文件中引入其他位置的配置文件,可以寫在這里(需要寫完整路徑),但是只處理prospector的部分。
-
publish_async:是否采用異步發送模式(實驗功能)。
Filebeat的基本原理其實就是有一群prospector,每個prospector手下管着一批harvester,每個harvester負責監視一個日志文件,把變動的內容由spooler匯總之后交給Logstash或者Elasticsearch。如果想快速搭建一個可以工作的Filebeat,無非有三點:
1.說明要監視哪些文件
2.說明收集的日志發給誰
如果直接發送給Elasticsearch,可以設置如下:
如果需要發給Logstash,可以注釋掉Elasticsearch的配置,然后設置Logstash如下:
當然,也需要在Logstash的配置中指明要從該端口(5044)監聽來自Filebeat的數據:
這里的配置舉例是把Filebeat、Logstash、Elasticsearch安裝在了一台機器上,實際使用中肯定是分開部署的,需要根據實際情況修改配置文件中的IP地址及端口號。
3.讓Elasticsearch知道如何處理每個日志事件。
默認的Elasticsearch需要的index template在安裝Filebeat的時候已經提供,路徑為/etc/filebeat/filebeat.template.json,可以使用如下命令裝載該模板:
當然,也不能忘了,每次修改完Filebeat的配置后,需要重啟Filebeat才能讓改動的配置生效。
1.下載和安裝
目前最新版本 1.3.0
這里選擇 Linux 64-BIT 即方式一
方式一:源碼
方式二:deb
方式三:rpm
方式四:MAC
2.配置Filebeat
環境說明:
1)elasticsearch和logstash 在不同的服務器上,只發送數據給logstash
2)監控nginx日志
3)監控支付日志
4)監控訂單日志
2.1配置
編輯filebeat.yml
默認監控日志配置
按照要求修改為
2.2 說明
-
paths:指定要監控的日志,目前按照Go語言的glob函數處理。沒有對配置目錄做遞歸處理,比如配置的如果是:
則只會去/var/log目錄的所有子目錄中尋找以”.log”結尾的文件,而不會尋找/var/log目錄下以”.log”結尾的文件。
2. input_type:指定文件的輸入類型log(默認)或者stdin。
3. document_type:設定Elasticsearch輸出時的document的type字段,也可以用來給日志進行分類。
把 elasticsearch和其下的所有都注釋掉(這里Filebeat是新安裝的,只注釋這2處即可)
開啟 logstash(刪除這兩行前的#號),並把localhost改為logstash服務器地址
如果開啟logstash了,那么Logstash配置中要設置監聽端口 5044:
這個是默認文件位置,如果不存在請自行查找
增加端口
3.啟動
3.1 測試
如果能看到一堆東西輸出,表示正在向elasticsearch或logstash發送日志。
如果是elasticsearch可以瀏覽:http://localhost:9200/_search?pretty 如果有新內容返回,表示ok
測試正常后,Ctrl+C結束
3.2啟動
上面會轉入后台運行
3.3停止
查找進程 ID
KILL他
3.X kibana設置
如果使用 kibana 做日志分析,
在kibana里,創建一個索引,注意pattern為:filebeat-* 
4.高級配置說明
http://kibana.logstash.es/content/beats/file.html
http://blog.csdn.net/a464057216/article/details/51233375
5.其他說明
5.1Elasticsearch知道如何處理每個日志事件
默認的Elasticsearch需要的index template在安裝Filebeat的時候已經提供,路徑為/etc/filebeat/filebeat.template.json,可以使用如下命令裝載該模板:
如果運行成功則返回如下,表示模板已被接收
每次修改Filebeat配置,重啟Filebeat才能生效
