參考地址:https://www.cnblogs.com/cjsblog/p/9459781.html
通過filebeat來實(shí)現(xiàn)日志的收集。日志采集的工具有fluentd,flume,logstash,beats任连。使用filebeat的原因蚤吹。因?yàn)閘ogstash是jvm運(yùn)行,資源消耗比較大随抠,啟動一個(gè)logstash需要消耗500M左右的內(nèi)存裁着,而filebeat只需要10多M內(nèi)存資源。常用的ELK日志采集方案中拱她,大部分的做法就是將所有節(jié)點(diǎn)的日志內(nèi)容通過filebeat送到kafka消息隊(duì)列二驰,然后使用logstash集群讀取消息隊(duì)列內(nèi)容,根據(jù)配置文件進(jìn)行過濾秉沼。然后將過濾之后的文件輸送到elasticsearch中桶雀,通過kibana去展示。
參考:https://www.cnblogs.com/wangzhuxing/p/9678578.html
linux下載解壓后的filebeat和logstash后唬复,進(jìn)行配置
配置filebeat.yml的基本配置如下:
- type: log
? enabled: true
? paths:
? ? - /data/public/filebeat/testDataLogs/logstash-tutorial.log
output.logstash:
? hosts: ["localhost:5044"]
默認(rèn)的output.logstash是elasticsearch矗积,切換到測試輸出到logstash?
logstash的配置,在當(dāng)前目錄新增一個(gè)first-pipeline.conf文件盅抚,內(nèi)容如下:
input {
? ? beats {
? ? ? ? port => "5044"
? ? }
}
#filter {
#? grok {
? #? ? ? match => { "message" => "%{COMBINEDAPACHELOG}"}
? # }
#}
output {
? ? stdout { codec => rubydebug }
}
input 指日志數(shù)據(jù)傳輸?shù)絣ogstash中漠魏,beats 為filebeat方式,port 定義監(jiān)聽端口
output 輸出配置妄均,如上配置是打印在控制臺
先啟動Logstash
bin/logstash -f first-pipeline.conf --config.test_and_exit
--config.test_and_exit選項(xiàng)的意思是解析配置文件并報(bào)告任何錯(cuò)誤
bin/logstash -f first-pipeline.conf --config.reload.automatic
--config.reload.automatic選項(xiàng)的意思是啟用自動配置加載柱锹,以至于每次你修改完配置文件以后無需停止然后重啟Logstash
再啟動filebeat
./filebeat -e -c filebeat.yml -d"publish"
此時(shí)logstash 控制臺會輸出日志
知識點(diǎn):
filebeat目錄的data/registry? 是filebeat感知文件有沒有被收集過,通過registry記錄的狀態(tài)丰包。每條event發(fā)送到output后都要等待ack.只有收到ack了才會認(rèn)為數(shù)據(jù)發(fā)送成功禁熏。然后狀態(tài)記錄到registry(如果數(shù)據(jù)采集階段沒有丟失,后面的傳輸可以保證不丟失邑彪,因?yàn)橛衋ck的確認(rèn)和重傳機(jī)制)
Filebeat處理文件時(shí)會維護(hù)一個(gè)狀態(tài)瞧毙,這個(gè)狀態(tài)里面記錄了收集過的每一個(gè)帶絕對路徑的文件名,文件的inode值,文件內(nèi)容上次收集的位置(即offset)以及其它一些信息宙彪。這個(gè)狀態(tài)維護(hù)在內(nèi)存里面矩动,過一段時(shí)間會刷新到磁盤上,默認(rèn)刷到registry這個(gè)文件里面释漆。程序如果重啟悲没,就從這個(gè)文件重新加載,恢復(fù)之前的狀態(tài)男图∈咀耍可以認(rèn)為這個(gè)文件就是Filebeat能正常工作的核心
參考:http://niyanchun.com/filebeat-truncate-bug.html