filebeat和logstach都是日誌採集工具,不過logstach可以進行數據清洗。在應用服務器上直接安裝Logstash比較消耗性能,所以需要安裝filebeat來獲取數據,再轉發到logstash進行數據清洗。
filebeat安裝
filebeat很小巧,只有8M,通過配置yum源就能安裝。不過我是在官網下載的安裝包。
官網下載地址:https://www.elastic.co/downloads/beats/filebeat
下載完以後在應用服務器上解壓,並編輯配置文件filebeat.yml。
filebeat.prospectors:
- input_type: log
paths:
- /usr/local/server/nginx/logs/access.log
fields:
logIndex: nginx
docType: nginx-access
output.logstash:
hosts: ["127.0.0.1:5044"]
修改完成後啓動filebeat
nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &
filebeat配置說明
paths:日誌檢測路徑。可以是指定到文件或文件夾,也可以通過*號匹配
- /var/log/*.log
output.logstash:把數據發送給logstash。
output.logstash:
hosts: ["127.0.0.1:5044"]
json.keys_under_root: true 若收取日誌格式爲json的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_under_root:如果該選項設置爲true,則新增fields成爲頂級目錄,而不是將其放在fields目錄下。自定義的field會覆蓋filebeat默認的field。
ignore_older:可以指定Filebeat忽略指定時間段以外修改的日誌內容,比如2h(兩個小時)或者5m(5分鐘)。
close_older:如果一個文件在某個時間段內沒有發生過更新,則關閉監控的文件handle。默認1h,change只會在下一次scan纔會被發現
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高級配置