張彩云
隨著氣象部門(mén)對(duì)數(shù)據(jù)傳輸時(shí)效要求不斷提升,以及業(yè)務(wù)系統(tǒng)規(guī)模不斷擴(kuò)大,對(duì)系統(tǒng)中日志的收集和集中處理的需求越來(lái)越高。本文提出了基于ELK實(shí)時(shí)進(jìn)行大日志數(shù)據(jù)搜索的軟件集成方案。通過(guò)對(duì)ELK、Redis整合方案的介紹描述了ELK日志分析平臺(tái)的日志處理流程,結(jié)合全國(guó)綜合氣象信息共享系統(tǒng)(CIMISS)內(nèi)蒙古氣象局實(shí)際場(chǎng)景設(shè)計(jì)了ELK日志分析平臺(tái)。通過(guò)分析日志可以快速定位系統(tǒng)異常,提前預(yù)警風(fēng)險(xiǎn),加快了氣象部門(mén)實(shí)現(xiàn)智能化運(yùn)維、信息化管理的步伐。
【關(guān)鍵詞】日志分析 ELK 智能化運(yùn)維
1 引言
大數(shù)據(jù)時(shí)代,隨著存儲(chǔ)與計(jì)算集群規(guī)模的不斷擴(kuò)大,氣象部門(mén)業(yè)務(wù)系統(tǒng)的集群環(huán)境也已普遍。然而現(xiàn)在的機(jī)群系統(tǒng)不僅限于解決性能、可靠、可擴(kuò)展性等層面上,更重要的是具有易操作性和內(nèi)部數(shù)據(jù)共享性等。運(yùn)維及開(kāi)發(fā)人員通過(guò)日志信息不但可以知道系統(tǒng)運(yùn)行狀況、檢查運(yùn)行過(guò)程中的錯(cuò)誤及排查原因,還可以知道服務(wù)器的負(fù)荷,性能安全性,從而及時(shí)采取措施糾正錯(cuò)誤。
大規(guī)模集群系統(tǒng)中日志被分散的儲(chǔ)存不同的設(shè)備上。傳統(tǒng)方法通過(guò)使用命令工具如cat、tail、sed、awk、grep等等進(jìn)行過(guò)濾輸出后分析的方法由于效率較低與不再適用,明顯增加了運(yùn)維工作量。當(dāng)務(wù)之急的工作就是要使用集中化的日志管理平臺(tái),將所有服務(wù)器上的日志收集匯總進(jìn)行監(jiān)控、分析。優(yōu)秀的系統(tǒng)運(yùn)維平臺(tái)既能實(shí)現(xiàn)數(shù)據(jù)平臺(tái)各組件的集中式管理、方便系統(tǒng)運(yùn)維人員日常監(jiān)測(cè)、提升運(yùn)維效率,又能反饋系統(tǒng)運(yùn)行狀態(tài)給系統(tǒng)開(kāi)發(fā)人員。
2 ELK簡(jiǎn)介
ELK是由ElasticSearch、Logstash、Kibana組成的開(kāi)源日志處理平臺(tái)解決方案。ELK能把這些日志集中管理,并提供全文檢索、統(tǒng)計(jì)分析功能,不僅可以提高診斷的效率,同時(shí)可以起到實(shí)時(shí)系統(tǒng)監(jiān)測(cè)、網(wǎng)絡(luò)安全、事件管理和發(fā)現(xiàn)bug等功能。
2.1 ElasticSearch簡(jiǎn)介
ElasticSearch是一個(gè)基于Lucene的全文搜索引擎?;赗ESTful web接口,提供了一個(gè)分布式多用戶能力的全文搜索引擎。用Java開(kāi)發(fā)的Apache許可條款下的開(kāi)放源碼。在云計(jì)算應(yīng)用中,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,快速,且安裝使用方便。
2.2 Logstash簡(jiǎn)介
Logstash由JRuby語(yǔ)言編寫(xiě)的日志采集解析工具,基于消息(message-based)的簡(jiǎn)單架構(gòu)。Logstash由input、filter和output三部分組成,input負(fù)責(zé)從數(shù)據(jù)源提取數(shù)據(jù),filter負(fù)責(zé)解析、處理數(shù)據(jù),output負(fù)責(zé)輸出數(shù)據(jù),每部分都有提供豐富的插件。不同于分離的代理端(agent)或主機(jī)端(server),Logstash可配置單一的代理端(agent)與其它開(kāi)源軟件結(jié)合,以實(shí)現(xiàn)不同的功能。
2.3 Kibana簡(jiǎn)介
Kibana也是一個(gè)開(kāi)源的分析可視化平臺(tái),它具有匯總、分析和搜索重要數(shù)據(jù)日志并提供友好的web界面的功能。他可以為L(zhǎng)ogstash和ElasticSearch提供的日志分析的 Web 界面,具有較好的展示效果,可以自定義多種表格、柱狀圖、餅狀圖、折線圖,對(duì)存儲(chǔ)在ElasticSearch中的數(shù)據(jù)進(jìn)行深入挖掘分析與可視化。
3 日志分析系統(tǒng)
3.1 日志分析系統(tǒng)框架
基于ELK的日志分析系統(tǒng)的體系結(jié)構(gòu)總體分為日志采集、日志預(yù)處理和日志分析三部分,如圖1所示。
雖然單純的ELK架構(gòu)方式容易搭建,但是由于沒(méi)有消息隊(duì)列緩沖,存在數(shù)據(jù)丟失隱患,故本文設(shè)計(jì)的日志分析平臺(tái)引入了消息隊(duì)列機(jī)制。多個(gè)獨(dú)立的Logstash agent(shipper)部署在CIMISS系統(tǒng)(26臺(tái)服務(wù)器)各個(gè)日志生成host上,負(fù)責(zé)收集不同來(lái)源的日志,直接將日志輸出到Redis隊(duì)列(list)中;Logstash(Indexe)負(fù)責(zé)從Redis中取出數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行格式化和相關(guān)預(yù)處理后,輸出到ElasticSearch集群中存儲(chǔ);最后由Kibana呈現(xiàn)給用戶做統(tǒng)計(jì)、分析。
3.2 ELK環(huán)境部署
3.2.1 基礎(chǔ)環(huán)境準(zhǔn)備
ELK日志分析平臺(tái)采用兩臺(tái)安有Centos6.4系統(tǒng)的虛擬機(jī)作為集群,一臺(tái)作為master節(jié)點(diǎn),另一臺(tái)為slave節(jié)點(diǎn),master收集到日志后,會(huì)隨機(jī)把一部分?jǐn)?shù)據(jù)碎片到salve上;同時(shí),master和slave又都會(huì)各自做副本,并把副本放到對(duì)方機(jī)器上,這樣就保證了數(shù)據(jù)不會(huì)丟失。如果master宕機(jī)了,那么客戶端在日志采集配置中將ElasticSearch主機(jī)指向改為slave,就可以保證ELK日志的正常采集和web展示。
3.2.2 ElasticSearch安裝及配置
由于ElasticSearch和Logstash都是依賴于java環(huán)境運(yùn)行,且對(duì)java版本要求較高,首先在兩臺(tái)ElasticSearch客戶端逐臺(tái)安裝jdk8。然后安裝ElasticSearch5.0.1,集群名設(shè)置為ElasticSearch,每臺(tái)服務(wù)器的主機(jī)名為默認(rèn)主機(jī)名,完成配置文件修改工作并登陸Web頁(yè)面測(cè)試安裝是否成功。最后安裝head插件,它是一個(gè)用瀏覽器跟ES集群交互的插件,可以查看集群狀態(tài)、集群的doc內(nèi)容、執(zhí)行搜索和普通的Rest請(qǐng)求等。
3.2.3 Logstash安裝及配置
Logstash的安裝較為簡(jiǎn)單,首先檢查CIMISS系統(tǒng)中各日志生成服務(wù)器的java版本是否能夠支持Logstash,如果版本較低的話創(chuàng)建新用戶,安裝高版本的JDK,同時(shí)配置環(huán)境變量。然后在日志生成服務(wù)器和客戶端安裝Logstash5.0.1,并編寫(xiě)簡(jiǎn)單的輸入輸出信息測(cè)試Logstash是否能夠正確輸出。測(cè)試完成創(chuàng)建一個(gè)配置文件,使用 input 、filter和 output 定義收集日志時(shí)的輸入和輸出的相關(guān)配置,啟動(dòng)Logstash時(shí)指定使用該配置文件。
3.2.4 Kibana及插件安裝配置
解壓安裝Kibana后修改配置文件,由于Kibana需要一直運(yùn)行在前臺(tái),因此選擇使用screen啟動(dòng)Kibana。為了保證日志分析平臺(tái)的安全性,在Kibana和ElasticSearch中安裝x-pack插件。此時(shí)Logstash的配置文件中應(yīng)將x-pack的訪問(wèn)權(quán)限配置到output。使用瀏覽器訪問(wèn)Kibana,在Discover中添加Logstash發(fā)送給ElasticSearch的index名,并在Query bar中輸入日志中可能引起系統(tǒng)異常的字段,搜索結(jié)果會(huì)隨著時(shí)間的推移顯示在頁(yè)面頂部的方直圖中,如圖2所示。同時(shí)可以保存關(guān)注的搜索結(jié)果,并在Visualize中創(chuàng)建柱狀圖,在Dashboard中監(jiān)控。
4 結(jié)論
大數(shù)據(jù)時(shí)代的運(yùn)維管理有著重大的意義,好的日志處理平臺(tái)事半功倍的提升開(kāi)發(fā)人員和運(yùn)維人員的效率。本文提出了基于ELK實(shí)時(shí)進(jìn)行大日志數(shù)據(jù)搜索的軟件集成方案。采集CIMISS系統(tǒng)各設(shè)備上的操作日志、系統(tǒng)運(yùn)行日志、進(jìn)程輸出日志、以及維護(hù)記錄日志,發(fā)現(xiàn)和捕獲海量日志中的異常行為和違規(guī)行為,通過(guò)分析日志快速定位系統(tǒng)異常,為保障氣象部門(mén)系統(tǒng)系統(tǒng)安全提供支持。
參考文獻(xiàn)
[1]https://www.elastic.co/
[2]呂增輝,陶振凱,唐靜.基于Lucene.net的對(duì)象持久化的實(shí)現(xiàn)[J].吉林師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2009,30(01):90-91.
[3][美]拉斐爾·酷奇,等.深入理解ElasticSearch[M].北京:機(jī)械工業(yè)出版社,2016.
作者單位
內(nèi)蒙古自治區(qū)氣象信息中心 內(nèi)蒙古自治區(qū)呼和浩特市 010010