一、windows下安裝Filebeat
解壓到指定目錄,打開解壓后的目錄,打開filebeat.yml進行配置。
1、配置為輸出到ElasticSearch
①:配置 Filebeat prospectors->path 這里的路徑是所要收集日志的路徑 。。eg:在當前目錄下建一個data文件夾,里面放下載的示例文件(在Logstash那篇),人家應該是linux下的文件。
我這里將下載的日志文件 加了后綴.log ,放在data目錄下
所以我的配置如下:
- type: log
# Change to true to enable this input configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- E:\filebeat-6.6.2-windows-x86_64\data\logstash-tutorial.log\*.log
#- c:\programdata\elasticsearch\logs\*
②:配置 enabled: true 這個配置很重要,只有配置為true之后配置才可生效,否則不起作用。
③:配置Outputs ,這里的Outputs有elasticsearch,logstash。按照配置文件下面的示例配置即可。只能配置一個輸出。默認是ElasticSearch
output.elasticsearch: # The Logstash hosts hosts: ["localhost:9200"]
默認情況下,Filebeat寫事件到名為filebeat-6.3.2-yyyy.MM.dd的索引,其中yyyy.MM.dd是事件被索引的日期。為了用一個不同的名字,你可以在Elasticsearch輸出中設置index選項。
2、cmd運行
然后在當前目錄下,新建一個bat文件,eg : run.bat 內容
.\filebeat -e -c filebeat.yml
單擊bat,啟動filebeat
正常情況下,應該有個鏈接ES的過程,將數據輸出到es。
打開ES能看到多了一個filebeat-6.6.2-年月日的索引。。
若沒有這個,而是一直Non-zero metrics inthe last 30s。這個時間參數是個掃描文件的頻率,可以修改。那就要看下 配置的路徑對不對。命令行中會有讀取的文件的路徑信息,仔細檢查一下。
3、安裝為服務啟動
filebeat目錄下有POWERSHELL腳本(install-service-filebeat.ps1),運行一下即可。將Powershell腳本的默認打開方式選擇為Powershell.exe,直接運行。然后在服務中啟動。
4、其他
- 配置Filebeat以使用Logstash 【在logstash中有講】
如果你想使用Logstash對Filebeat收集的數據執行額外的處理,那么你需要將Filebeat配置為使用Logstash。
output.logstash: hosts: ["127.0.0.1:5044"]
- 如果你打算用Kibana儀表盤,可以這樣配置Kibana端點:
setup.kibana: host: "localhost:5601"
更多配置參數,查看官網
二、工作原理
Filebeat是使用GO語言開發,由兩個主要組件組成:prospector 和harvester。這些組件一起工作來讀取文件(tail file)並將事件數據發送到您指定的輸出。
工作原理如下:當Filebeat啟動時,它會啟動一個或者多個prospector監控日志路徑或日志文件,每個日志文件會有一個對應的harvester,harvester按行讀取日志內容並轉發至后台程序。Filebeat維護一個記錄文件讀取信息的注冊文件,記錄每個harvester最后讀取位置的偏移量。
Filebeat配置
下面是一個簡單的Filebeat配置,采集2個文件夾下的日志並轉發至Logstash。

filebeat:
prospectors:
-
paths:
- /dir1/access_log.*
input_type: log
document_type: dir1_log
-
paths:
- /dir2/ofbiz.log.*
input_type: log
document_type: dir2_log
output:
logstash:
hosts: ["10.90.4.9:5044"]
在Logstash中根據 document_type定義解析日志的正則並輸出到ELasticsearch集群。

input { beats{ host => "192.2.11.145" port => 5044 } } filter { if[type]=="dir1_log"{ grok { match => { "message" => "%{COMBINEDAPACHELOG}"} } } else if ([type]=="dir2_log") { grok { match => { "message" => "%{TIMESTAMP_ISO8601:time}\s*%{NUMBER:logtime} \[\s*%{JAVAFILE:class}\:%{NUMBER:lineNumber}\s*\:%{LOGLEVEL:level}\s*\]\s*(?<info>([\s\S]*))"} } } } output { elasticsearch { hosts => ["10.90.4.9","10.90.4.8","10.90.4.7"] } }
中文翻譯的配置參數:Filebeat6.3文檔—Log input配置
更多參考官網學習