收集和分析日志是應(yīng)用開發(fā)中至關(guān)重要的一環(huán),互聯(lián)網(wǎng)大規(guī)模、分布式的特性決定了日志的源頭越來越分散,
產(chǎn)生的速度越來越快,傳統(tǒng)的手段和工具顯得日益力不從心。在規(guī)?;瘓鼍跋?,grep、awk 無法快速發(fā)揮作用,我們需要一種高效、靈活的日志分析方式,可以給故障處理,問題定位提供更好的支持。基于全文搜索引擎 Lucene 構(gòu)建的 ELKstack 平臺,是目前比較流行的日志收集方解決方案。
ELK系統(tǒng)的部署按照官方文檔操作即可,相關(guān)資料也很多,這篇文章更多的關(guān)注三個組件的設(shè)計和實現(xiàn),幫助大家了解這個流行的日志收集系統(tǒng),
ELK統(tǒng)一日志系統(tǒng)
結(jié)合Logstash,ElasticSearch和Kibana三個組件,可以搭建一套高效的日志收集和分析系統(tǒng)。
ELK日志系統(tǒng)數(shù)據(jù)流圖
ELK stack支持組件間的靈活組合,提供強大的開箱即用的日志收集和檢索功能。
可以看到ELK系統(tǒng)進(jìn)行日志收集的過程可以分為三個環(huán)節(jié):
日志收集和導(dǎo)入ElasticSearch
ElasticSearch進(jìn)行索引等處理
可視化操作,查詢等
Logstash可以結(jié)合Redis或者kafka等收集應(yīng)用服務(wù)器產(chǎn)生的日志,經(jīng)過簡單的過濾等操作后發(fā)送到ElasticSearch,ElasticSearch進(jìn)行相關(guān)的索引處理,最后在Kibana進(jìn)行相關(guān)的可視化操作。
Logstash進(jìn)行日志采集
Logstash 是一種功能強大的信息采集工具,類似于同樣用于日志收集的 Flume。
Logstash通過配置文件規(guī)定 Logstash 如何處理各種類型的事件流,一般包含 input、filter、output 三個部分。
Logstash 為各個部分提供相應(yīng)的插件,通過 input、filter、output 三類插件完成各種處理和轉(zhuǎn)換,
另外 codec 類的插件可以放在 input 和 output 部分通過簡單編碼來簡化處理過程。
1.Logstash架構(gòu)
Logstash使用Jruby語言編寫,對于使用者來講,Logstash本身是基于命令行界面,面向任務(wù)處理的。
Logstash的軟件架構(gòu)是一種帶有“