Filebeat工作原理
Filebeat由兩個組件組成:prospector 和harvester
harvester:
- 負責讀取單個文件的內容
- 負責文件在讀取時被刪除或者重名名,Filebeat將繼續讀取文件
prospector:
- prospector負責管理harvester並找到所有要讀取文件來源
- 如果輸入的類型爲日誌,則查找器將查找路徑匹配的所有文件,併爲每個文件啓動一個harvester
- Filebeat目前支持兩種prospector類型:log 和 stdin
Filebeat如何保持文件的狀態:
- Filebeat保存每個文件的狀態並經常將狀態刷新到磁盤上的註冊文件中
- 該狀態用於記住harvester正在讀取的最後偏移量,並確保發送所有的日誌行
- 如果輸出無法訪問,Filebeat會跟蹤最後發送的行,並在輸出再次可用時繼續讀取文件
- 在Filebeat運行時,每個prospector內存中也會保存的文件狀態信息,當重啓Filebeat時,將使用註冊文件的數據來重建文件的狀態,Filebeat將每個harvester在從保存的最後的偏移量繼續讀取
- 文件狀態記錄在/data/registry文件中
Filebeat 下載地址:https://www.elastic.co/cn/downloads/beats/filebeat (我用的版本是6.5.4 )
Filebeat讀取文件輸入到控制檯:
首先自己新建一個.yml文件:
vim wireless-log.yml
filebeat.inputs:
- type: log #讀取文件的類型有:log 和 stdin
enabled: true # 是否啓用
paths:
- /wireless/beat/logs/*.log #讀取文件位置
setup.template.setting: # 分片信息
index.number_of_shards: 5
output.console: # 控制檯輸出
pretty: true # 格式化輸出
enable: true
Filebeat讀取文件輸入到Elasticsearch:
vim wireless-es-log.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /wireless/beat/logs/*.log
setup.template.setting:
index.number_of_shards: 5
output.elasticsearch:
hosts: ["192.168.73.135", "192.168.73.130", "192.168.73.131"] #集羣地址
啓動命令:
./filebeat -e -c wireless-log.yml
./filebeat -e -c wireless-es-log.yml -d "publish"
#參數說明
-e:輸出到標準輸出,默認輸出syslog和logs下
-c:指定的文件
-d: 後臺啓動