龔萍
(中國移動(dòng)(深圳)有限公司,廣東 深圳 518048)
ELK-Stack在業(yè)務(wù)監(jiān)控系統(tǒng)中的應(yīng)用
龔萍
(中國移動(dòng)(深圳)有限公司,廣東 深圳 518048)
隨著企業(yè)信息化程度的不斷提高以及大規(guī)模集群的部署應(yīng)用,日常運(yùn)維工作面臨著越來越嚴(yán)峻的考驗(yàn),借助自動(dòng)化運(yùn)維手段提高系統(tǒng)運(yùn)維效率成為一種趨勢。以日志數(shù)據(jù)為突破口,借助ELK-Stack開源軟件,構(gòu)建日志分析管理平臺(tái),并與現(xiàn)有監(jiān)控運(yùn)維類平臺(tái)進(jìn)行融合,能快速增強(qiáng)系統(tǒng)運(yùn)維分析能力,有效提高日常運(yùn)維效率。
ELK;日志分析;自動(dòng)化運(yùn)維;監(jiān)控
隨著云計(jì)算和大數(shù)據(jù)技術(shù)的不斷發(fā)展,IT系統(tǒng)架構(gòu)和技術(shù)框架的變革,驅(qū)動(dòng)著系統(tǒng)運(yùn)維從傳統(tǒng)的IT運(yùn)維管理開始向IT運(yùn)維分析轉(zhuǎn)變,從運(yùn)維人員手工操作向自動(dòng)化運(yùn)維服務(wù)轉(zhuǎn)變。在日常運(yùn)維工作中,操作系統(tǒng)、應(yīng)用服務(wù)和業(yè)務(wù)邏輯等主要維護(hù)對(duì)象,每天都在不停地產(chǎn)生日志數(shù)據(jù),這些數(shù)據(jù)包含了系統(tǒng)可用性信息、效能信息、安全信息、異常信息、錯(cuò)誤信息等系統(tǒng)信息,在信息價(jià)值、獲取成本上具有特有的優(yōu)勢。因此,日志數(shù)據(jù)的分析挖掘?qū)⒊蔀镮T運(yùn)維分析的首要突破口。
過去,日志數(shù)據(jù)基本都存在于單機(jī)磁盤上,通過運(yùn)維工程師登陸對(duì)應(yīng)服務(wù)器,手工輸入命令進(jìn)行臨時(shí)的、事后的分析和審計(jì)。在大數(shù)據(jù)的時(shí)代,海量日志分布在各個(gè)不同的地方,傳統(tǒng)的日志處理方案顯得非常笨拙和低效,對(duì)日志進(jìn)行統(tǒng)一管理和分析成為亟待解決的問題。ELK技術(shù)棧的出現(xiàn),實(shí)現(xiàn)了海量日志的統(tǒng)一管理和高效的挖掘分析,有效地發(fā)揮了系統(tǒng)日志在故障告警、問題定位、性能優(yōu)化等實(shí)際運(yùn)維中的作用,極大地提高了IT系統(tǒng)的運(yùn)維效率。
ELK是一整套解決方案,是三個(gè)軟件產(chǎn)品的首字母縮寫:Elasticsearch,Logstash和Kibana。這三款軟件都是開源軟件,通常配合使用,而且又先后歸于Elastic.co公司名下,故被簡稱為ELK技術(shù)棧。
Elasticsearch是一個(gè)建立在全文搜索引擎Apache Lucene基礎(chǔ)上的實(shí)時(shí)的分布式搜索和分析引擎,使用Java語言編寫。它可以用于全文搜索,結(jié)構(gòu)化搜索以及實(shí)時(shí)分析,具備以下特點(diǎn):支持分布式實(shí)時(shí)文件存儲(chǔ),并將每一個(gè)字段都編入索引;文檔導(dǎo)向,所有的對(duì)象全部是文檔;高可用性,易擴(kuò)展,支持集群、分片和復(fù)制;接口友好,支持JSON。
Logstash是一個(gè)具有實(shí)時(shí)渠道能力的數(shù)據(jù)收集引擎,使用JRuby語言編寫。Logstash幾乎可以訪問任何數(shù)據(jù),它的四大組件(Shipper、Broker&indexer、Search&Storage和Web Interface)可以和多種外部應(yīng)用結(jié)合,同時(shí)支持彈性擴(kuò)展。
Kibana基于Apache開源協(xié)議,使用JavaScript語言編寫。它為Elasticsearch提供分析和可視化的Web平臺(tái),可以在Elasticsearch的索引中查找、交互數(shù)據(jù),并生成各種維度的表圖。
圖1展示了ELK-Stack中Logstash,Elasticsearch和Kibana三款軟件的組織方式及協(xié)同工作的原理。
圖1 ELK-Stack體系架構(gòu)圖
ELK技術(shù)棧在日志管理與分析方面具備以下優(yōu)點(diǎn):
(1)處理方式靈活:Elasticsearch是實(shí)時(shí)全文索引,不需要像storm那樣預(yù)先編程才能使用;
(2)配置簡易上手:Elasticsearch全部采用JSON接口,Logstash是Ruby DSL設(shè)計(jì),都是目前業(yè)界最通用的配置語法設(shè)計(jì);
(3)檢索性能高效:雖然每次查詢都是實(shí)時(shí)計(jì)算,但是優(yōu)秀的設(shè)計(jì)和實(shí)現(xiàn)基本可以達(dá)到百億級(jí)數(shù)據(jù)查詢的秒級(jí)響應(yīng);
(4)集群線性擴(kuò)展:不管是Elasticsearch集群還是Logstash集群都是可以線性擴(kuò)展的;
(5)前端操作炫麗:Kibana界面上,只需要點(diǎn)擊鼠標(biāo),就可以完成搜索、聚合功能,生成炫麗的儀表板。
本次應(yīng)用中,嘗試將ELK技術(shù)棧融入某業(yè)務(wù)監(jiān)控系統(tǒng),通過在該系統(tǒng)中部署日志管理分析模塊,實(shí)現(xiàn)日志統(tǒng)一管理與分析展現(xiàn),達(dá)到提升運(yùn)維自動(dòng)化程度,從而提高運(yùn)維效率的目標(biāo)。
為保證日志分析服務(wù)的可擴(kuò)展性,采取搭建獨(dú)立的ELK日志分析模塊,然后以與原業(yè)務(wù)監(jiān)控系統(tǒng)的能力貫通的方式構(gòu)建整體應(yīng)用框架。系統(tǒng)整體框架如圖2所示。
這個(gè)架構(gòu)中,首先在業(yè)務(wù)監(jiān)控系統(tǒng)監(jiān)控的各個(gè)監(jiān)控對(duì)象(應(yīng)用主機(jī))上分別部署獨(dú)立的Logstash-Agent進(jìn)行原始日志采集,所有采集到的日志集成到Redis集群中,利用消息隊(duì)列機(jī)制降低數(shù)據(jù)丟失的隱患;隨后Logstash的Indexer組件將負(fù)責(zé)從Redis中取出日志數(shù)據(jù),進(jìn)行日志解析轉(zhuǎn)換等數(shù)據(jù)預(yù)處理工作,并將經(jīng)過預(yù)處理的數(shù)據(jù)輸入Elasticsearch集群進(jìn)行進(jìn)一步的處理與存儲(chǔ);最終Kibana負(fù)責(zé)完成面向用戶的日志數(shù)據(jù)統(tǒng)計(jì)、分析與展現(xiàn)。
在整個(gè)系統(tǒng)中,ELK日志分析模塊與業(yè)務(wù)監(jiān)控系統(tǒng)各有一套獨(dú)立的“數(shù)據(jù)采集-數(shù)據(jù)處理-數(shù)據(jù)分析-數(shù)據(jù)展現(xiàn)”機(jī)制,互不影響。ELK日志分析模塊只需根據(jù)監(jiān)控需要,將日志處理后生成的相關(guān)數(shù)據(jù)或分析結(jié)果傳送給業(yè)務(wù)監(jiān)控系統(tǒng),借助系統(tǒng)原有的監(jiān)控告警及運(yùn)維工單流轉(zhuǎn)功能,即可發(fā)揮日志分析在日常監(jiān)控運(yùn)維中的作用。同時(shí),ELK日志分析模塊的獨(dú)立性保障了往后其它應(yīng)用系統(tǒng)日志的快速接入。
按照官方網(wǎng)站的安裝指南完成ELK基礎(chǔ)環(huán)境搭建,本文不贅述具體安裝過程,只對(duì)安裝完成后的重要配置進(jìn)行說明。
(1)配置日志生成樣式
以采集nginx日志為例,在配置文件nignx.conf中指定日志輸出格式及日志存放路徑:
(2)配置Logstash采集日志數(shù)據(jù)寫入Redis
創(chuàng)建Logstash配置文件,指定日志采集路徑與輸出路徑:
(3)配置Logstash讀取Redis中的日志數(shù)據(jù)寫入Elasticsearch
配置輸入指向Redis和輸出指向Elasticsearch:
(4)配置Elasticserach
只需要在Elasticsearch配置文件elasticsearch.yml中進(jìn)行相關(guān)路徑和端口設(shè)置:
(5)配置Kibana
只需要在Kibana配置文件kibana.yml中配置Elasticsearch路徑:
(6)訪問Kibana
所有安裝和配置完成后,在瀏覽器中輸入http∶//192.168.1.20∶5601即可看到最終的Kibana界面,如圖3所示。
在本次應(yīng)用中,ELK日志分析模塊主要為原業(yè)務(wù)監(jiān)控系統(tǒng)提供日志集中管理和日志分析兩大功能。
圖3 ELK日志分析統(tǒng)計(jì)示意圖
在日志管理方面,不僅將以往分散在各臺(tái)主機(jī)的日志進(jìn)行了集中管理,而且簡化了日志查詢的方式,大幅調(diào)高了日志查詢的效率:引入ELK之前,人工查看單臺(tái)應(yīng)用主機(jī)日志平均耗時(shí)5分鐘;引入ELK之后,所有應(yīng)用主機(jī)日志均可在界面上集中查詢,平均耗時(shí)1s,且不受應(yīng)用主機(jī)數(shù)量和日志數(shù)量的限制。
在日志分析方面,ELK的分析挖掘能力,對(duì)監(jiān)控過程中的異常告警和故障診斷起到了極大的輔助作用:通過從日志中挖掘出被監(jiān)控系統(tǒng)的各項(xiàng)指標(biāo),及時(shí)反映系統(tǒng)的健康狀態(tài)和性能瓶頸,改變了原先需要編寫復(fù)雜腳本才能部署監(jiān)控的方式,不僅效率更高,同時(shí)對(duì)系統(tǒng)正常的業(yè)務(wù)運(yùn)行沒有任何影響;通過對(duì)多種日志的快速檢索、關(guān)聯(lián)分析和直觀展現(xiàn),有效地幫助運(yùn)維人員提高了定位故障原因的速度和難度。
大數(shù)據(jù)時(shí)代,服務(wù)器規(guī)模的不斷擴(kuò)大和分布式應(yīng)用的快速普及,使得系統(tǒng)運(yùn)行監(jiān)控和日常維護(hù)變得尤為重要,而日志的管理和利用是其中一個(gè)不可忽視的部分。本文通過介紹ELK日志分析模塊在業(yè)務(wù)監(jiān)控系統(tǒng)中的部署方式和應(yīng)用情況,體現(xiàn)了ELK技術(shù)棧在實(shí)現(xiàn)自動(dòng)化運(yùn)維分析服務(wù)、增強(qiáng)系統(tǒng)監(jiān)控運(yùn)維能力、提升日常運(yùn)維效率方面的突出作用,也為以ELK技術(shù)棧為代表的自動(dòng)化運(yùn)維工具在IT系統(tǒng)運(yùn)維工作中的快速引入和廣泛使用提供了參考。
[1]饒琛琳.ELK Stack權(quán)威指南[M].北京:機(jī)械工業(yè)出版社,2015.
[2]魏山林.基于ELK的日志分析系統(tǒng)[J].電腦知識(shí)與技術(shù),2017(2):69-70.
[3]龍煒.自動(dòng)化運(yùn)維工具在企業(yè)信息管理系統(tǒng)中的應(yīng)用[J].微型機(jī)與應(yīng)用,2017,36(5):102-104.
Application of ELK-Stack in Business Monitoring System
Gong Ping
(China Mobile(Shenzhen)Co.,Ltd.,Shenzhen 518048,Guangdong)
With the continuous improvement of enterprise informatization and the deployment of large-scale clusters,daily operation and maintenance work is facing more and more severe test.Therefore,it has become a trend to improve the system operation efficiency by means of automated operation and maintenance.This paper builds the log analysis and management platform based on ELK-Stack,which integrates with the existing monitoring and operation platform.It can enhance the system operation and analysis ability,and improve the efficiency of daily operation
ELK;log analysis;automated operation and maintenance;monitoring
TP277
A
1008-6609(2017)10-0065-03
龔萍(1989-),女,湖北仙桃人,本科,研究方向?yàn)闃I(yè)務(wù)監(jiān)控、自動(dòng)化運(yùn)維。