采用elasticsearch+logstash+kibana收集日志方案,因為logstash是jvm跑的,資源消耗比較大。所以有了一個新的工具filebeat,filebeat負責收集日志,logstash負責過濾日志后發送給elasticsearch。常用的ELK日志采集方案中,大部分的做法就是filebeat將所有節點的日志內容上送到kafka消息隊列,然后使用logstash集群讀取消息隊列內容,根據配置文件進行過濾,然后送到elasticsearch。
如下圖:
這里省略了kafka這一環節,也是可以的。具體配置如下:
filebeat配置
filebeat.prospectors: - type: log paths: - E:\log\server.log output.logstash: # The Logstash hosts hosts: ["127.0.0.1:5044"]
配置好后,可以在cmd下進入對應的文件目錄,輸入下面命令啟動,filebeat -e -c filebeat.yml
注意啟動filebeat 需要前先啟動logstash。
logstash配置
input { beats { port => "5044" } } filter { grok { match => { "message" => "(\s*%{TIMESTAMP_ISO8601:time} \s*%{LOGLEVEL:level}\s*%{NUMBER:lineNumber} ---\s*(?<class>(\[.*?\].*:) )\s*(?<message>[\s\S]* ))"} } } output { stdout {codec => rubydebug} elasticsearch { hosts => ["localhost:9200"] index => "log" } }