ELK產(chǎn)生背景: 大家都知道日志主要包括系統(tǒng)日志,、應(yīng)用程序日志和安全日志,。系統(tǒng)運(yùn)維和開(kāi)發(fā)人員可以通過(guò)日志來(lái)查看服務(wù)器軟硬件信息、檢查配置過(guò)程中的錯(cuò)誤并分析錯(cuò)誤發(fā)生的原因,。經(jīng)常分析日志還可以及時(shí)了解服務(wù)器的負(fù)荷以及性能的安全性,,從而及時(shí)采取有效措施進(jìn)行優(yōu)化和安全防護(hù),未雨綢繆,。 通常情況下,,海量日志被分散儲(chǔ)存在不同的機(jī)器設(shè)備上。傳統(tǒng)方式,,我們管理成百上千臺(tái)服務(wù)器,,需要依次登錄每臺(tái)機(jī)器的來(lái)分別查閱日志。但是這樣操作非常繁瑣,,耗時(shí),、耗力,效率低下,。那么當(dāng)務(wù)之急就是我們需要使用集中化的日志管理工具,,將所有服務(wù)器上的日志收集匯總,例如:開(kāi)源的 syslog ,。 通過(guò)syslog工具集中化管理日志之后,,日志的統(tǒng)計(jì)和檢索又成為棘手的問(wèn)題,一般我們使用grep ,、 awk 和 wc 等 Linux 命令能實(shí)現(xiàn)檢索和統(tǒng)計(jì),,但是對(duì)于要求更高的查詢、排序和統(tǒng)計(jì)等操作以及 龐大的機(jī)器集群使得我們依然會(huì)力不從心,,很難滿足生產(chǎn)工作中的需求,。那么ELK強(qiáng)大的日志分析平臺(tái)就應(yīng)用而生。 ELK 介紹: ELK ,,集中式日志存儲(chǔ)(Centralized Logging),,將各臺(tái)Server上產(chǎn)生的日志統(tǒng)一收集到一個(gè)日志平臺(tái)中。ELK是Elasticsearch(以下簡(jiǎn)寫(xiě)為ES)+Logstash+Kibana的簡(jiǎn)稱,。其中ES負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和索引,,Logstash負(fù)責(zé)數(shù)據(jù)的采集、過(guò)濾,、傳輸,,Kibana負(fù)責(zé)數(shù)據(jù)的展示,。 Ealsticsearch ES是一個(gè)基于Lucene的優(yōu)秀的存儲(chǔ)引擎,,我們也可以把它看做一個(gè)PB級(jí)別的NoSQL DB。支持CRUD,,多字段查詢,,Aggreagation,全文檢索,,可以說(shuō)涵蓋了各種各樣的查詢需求,。 它自帶了Replication和Sharding的功能,通過(guò)簡(jiǎn)單的配置就可以做數(shù)據(jù)復(fù)制和分片,。并且ES在NRT(Near Real Time)方面做了一些優(yōu)化,,使得應(yīng)用在實(shí)時(shí)性方面有很好的表現(xiàn)。 Logstash Logstash是一個(gè)非常靈活的數(shù)據(jù)處理和傳輸工具,。我們可以不再需要自己寫(xiě)一堆wget,、scp、Socket代碼來(lái)傳輸我們的數(shù)據(jù),。Logstash統(tǒng)一實(shí)現(xiàn)了每一環(huán)節(jié)的數(shù)據(jù)傳輸,,我們只需要關(guān)注數(shù)據(jù)處理的邏輯。 我們也不再需要去學(xué)習(xí)各種各樣的API,,去發(fā)現(xiàn)如何得到數(shù)據(jù)(例如tail -f),,如何寫(xiě)入數(shù)據(jù)(例如寫(xiě)入ES或MongoDB)。Logstash預(yù)置了一堆input & output plugin,,通過(guò)配置就可以實(shí)現(xiàn)實(shí)時(shí)增量數(shù)據(jù)的流出和流入。例如我們用到的file input 和ES output 都已經(jīng)有了,。 Kibana Kibana是一個(gè)強(qiáng)大的數(shù)據(jù)展示工具,。大多數(shù)情況下,不需要開(kāi)發(fā)任何代碼,,就可以得到一個(gè)Dashboard,。 需要做的是: (1)把數(shù)據(jù)放到ES中 (2)是在Kibana頁(yè)面上配置報(bào)表模版,或按照規(guī)則寫(xiě)一套報(bào)表模版,。 ELK 架構(gòu): ELK 實(shí)現(xiàn)效果圖: 【歡迎對(duì)ELK感興趣的童鞋請(qǐng)加微信 84985152 ,進(jìn)群交流】 |
|