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