摘 ? 要:為了及時發(fā)現(xiàn)隱患和故障,提高高校數(shù)據(jù)中心的運維效率,需要對數(shù)據(jù)中心軟硬件系統(tǒng)的性能、狀態(tài)、日志等進行監(jiān)控。文章以ELK為數(shù)據(jù)采集和存取平臺,并借助Shell腳本強大的系統(tǒng)管理功能,設(shè)計了監(jiān)控代理,實現(xiàn)了在監(jiān)控平臺中對多數(shù)據(jù)源的處理。經(jīng)過實踐,文章設(shè)計的監(jiān)控平臺,能實現(xiàn)高校數(shù)據(jù)中心的多層面監(jiān)控,為數(shù)據(jù)中心高效管理提供支撐。
關(guān)鍵詞:數(shù)據(jù)中心;ELK;運維監(jiān)控;監(jiān)控代理
中圖分類號:TP391 文獻標(biāo)志碼:B 文章編號:1673-8454(2020)07-0093-04
一、引言
由于受到運行環(huán)境、設(shè)備生命周期、系統(tǒng)變更、系統(tǒng)漏洞、系統(tǒng)性能、網(wǎng)絡(luò)功擊,以及人為誤操作等影響,數(shù)據(jù)中心的基礎(chǔ)設(shè)施和軟硬件系統(tǒng),在運行過程中經(jīng)常出現(xiàn)隱患和故障。通過多層面監(jiān)控,能及時發(fā)現(xiàn)這些隱患和故障,提高運維效率,為數(shù)據(jù)中心的安全、穩(wěn)定、可持續(xù)運行提供保障。因此,數(shù)據(jù)中心多層面監(jiān)控意義重大。
系統(tǒng)性能和運行狀態(tài)能反映出設(shè)備運行的穩(wěn)定性和可持續(xù)性。系統(tǒng)日志記錄了系統(tǒng)中硬件、軟件和系統(tǒng)問題的信息,同時還可以監(jiān)視系統(tǒng)中發(fā)生的事件。運維人員可以通過它來檢查錯誤發(fā)生的原因,或者尋找受到攻擊時攻擊者留下的痕跡[1]。因此,數(shù)據(jù)中心運維監(jiān)控,不僅要監(jiān)控系統(tǒng)性能和運行狀態(tài),還要監(jiān)控和分析系統(tǒng)日志。
由于高校數(shù)據(jù)中心運維,受到成本控制的影響,一般會采用開源監(jiān)控平臺來實現(xiàn)數(shù)據(jù)中心監(jiān)控。當(dāng)前大多數(shù)數(shù)據(jù)中心采用Zabbix、Splunk等開源平臺來實現(xiàn)監(jiān)控。隨著ELK功能不斷完善,也被一些數(shù)據(jù)中心用來作為監(jiān)控平臺和日志處理平臺。這些監(jiān)控系統(tǒng),雖然性能優(yōu)秀,有些功能非常實用,但從高校數(shù)據(jù)中心多層面監(jiān)控角度來看,或從易用性角度來看,還有必要改進,或在此基礎(chǔ)上進行運維開發(fā),實現(xiàn)全面監(jiān)控,以進一步提升監(jiān)控水平。由于ELK性能較好,開放程度較高,開發(fā)接口豐富,本研究以ELK為基礎(chǔ),進行架構(gòu)設(shè)計和數(shù)據(jù)中心運維開發(fā)實踐。
二、ELK簡介
ELK是ElasticSearch、Logstash、Kibana三個開源軟件的簡稱,是一個日志實時處理平臺[2]。ELK之間的合作機制為:
Logstash作為信息收集者,用來搜集、分析、過濾軟硬件系統(tǒng)的日志。它支持大量的數(shù)據(jù)獲取方式,工作方式為C/S架構(gòu)。通過把客戶端(Beats)程序安裝在計算節(jié)點上,或者在網(wǎng)絡(luò)設(shè)備或存儲設(shè)備中配置Syslog、SNMP Trap等功能,來實現(xiàn)日志或性能數(shù)據(jù)的過濾和處理,然后將其處理結(jié)果推送到ElasticSearch 平臺。
ElasticSearch作為數(shù)據(jù)的保存者,保存來自Logstash收集的數(shù)據(jù),同時提供數(shù)據(jù)操作的API,以及ElasticSearch集群管理。
Kibana 是為 ElasticSearch設(shè)計的開源分析和可視化平臺。主要用來搜索、查看存儲在 ElasticSearch索引中的數(shù)據(jù),并通過HTML5技術(shù)在瀏覽器端實現(xiàn)數(shù)據(jù)可視化。
ELK的Beats是采集系統(tǒng)監(jiān)控數(shù)據(jù)的Agent,它可以發(fā)送不同類型的數(shù)據(jù)到ElasticSearch中,也可以行將采集完的數(shù)據(jù)發(fā)送到Logstash中轉(zhuǎn),然后再推送到ElasticSearch中。Beats包含多種工具,如:采集網(wǎng)絡(luò)流量數(shù)據(jù)的Packetbeat;采集文件數(shù)據(jù)的Filebeat;采集 Windows 事件日志數(shù)據(jù)的Winlogbeat;采集系統(tǒng)級監(jiān)控數(shù)據(jù)的Metricbeat等等。
ELK的架構(gòu)如圖1所示。
三、ELK在數(shù)據(jù)中心多層面監(jiān)控中的不足
盡管ELK整體性能和功能較好,但經(jīng)過筆者對ELK平臺的運維開發(fā)實踐,發(fā)現(xiàn)它在數(shù)據(jù)采集及可視化方面存在不足。數(shù)據(jù)采集方面,盡管結(jié)合Beats能采集到IT設(shè)備的日志和性能數(shù)據(jù),以及SNMP Trap等信息,或通過Logstash插件的方式采集其它信息,但是,這種方式不能夠獲取較為全面的監(jiān)控數(shù)據(jù)。例如:采用Winlogbeat采集Windows Server系統(tǒng)日志時,只能采集到事件日志,不能采集到事件跟蹤日志;目前還不支持一些常用的應(yīng)用程序或服務(wù)(如Tomcat、Weblogic等等)的性能數(shù)據(jù)和運行狀態(tài)的采集;盡管Logstash提供了插件方式采集數(shù)據(jù),但是通過這種方式采集空調(diào)、UPS等基礎(chǔ)設(shè)施的運行狀態(tài)相關(guān)數(shù)據(jù),以及服務(wù)器虛擬化及虛擬機運行狀態(tài)時難度較大。在可視化方面,Kibana應(yīng)用可定制性和可擴展性較差,無法通過它對非Logstash收集的數(shù)據(jù)(如上述基礎(chǔ)設(shè)施的運行狀態(tài)數(shù)據(jù))進行可視化展示。
四、高校數(shù)據(jù)中心多層面監(jiān)控開放平臺設(shè)計
1.高校數(shù)據(jù)中心運維對象
高校數(shù)據(jù)中心支撐著學(xué)校的教學(xué)、科研、管理及服務(wù)等信息化,一般會配備功能完善的軟硬件設(shè)施。根據(jù)當(dāng)前高校數(shù)據(jù)中心管理模式及運營模式,其架構(gòu)包括三個層次:底層為承載IT設(shè)備安全、穩(wěn)定運行的基礎(chǔ)設(shè)施,如空調(diào)、UPS、溫濕度、門禁、消防等硬件設(shè)施;第二層為IT設(shè)備層,是提供IT服務(wù)的核心,包含多種設(shè)備,如數(shù)據(jù)存儲設(shè)備、服務(wù)器、數(shù)據(jù)備份設(shè)備、網(wǎng)絡(luò)設(shè)備、安全設(shè)備、負載均衡器、高性能計算平臺等硬件資源;第三層為數(shù)據(jù)中心的軟件系統(tǒng),如操作系統(tǒng)、云平臺、大數(shù)據(jù)平臺、數(shù)據(jù)庫、中間件、應(yīng)用程序等軟件資源。這三個層面的軟硬件設(shè)施均屬于運維對象。
2.計算節(jié)點監(jiān)控代理研究
ELK 的Metricbeat工具可以獲取操作系統(tǒng)的 CPU和內(nèi)存使用率、文件系統(tǒng)、磁盤 IO 和網(wǎng)絡(luò) IO等統(tǒng)計數(shù)據(jù),它也支持多種模塊,比如Apache、HAproxy、MySQL、Nginx等[3]。
Metricbeat雖然能收集多項性能數(shù)據(jù),也支持多個模塊,但目前還不支持一些常用的應(yīng)用程序或服務(wù)。例如:當(dāng)前最新版本仍然不支持高校數(shù)據(jù)中心常用的Tomcat、Weblogic等Web中間件的監(jiān)控,也不支持Linux KVM、Windows Hyper-V服務(wù)器虛擬化平臺的監(jiān)控。另外,由于數(shù)據(jù)中心需要監(jiān)控的對象較多,如果都采用logstash來處理數(shù)據(jù),將會增加Logstash的運行壓力。因此,需要一個功能全面、開放性好的監(jiān)控代理作為計算節(jié)點監(jiān)控工具的補充。通過使用該代理,不僅能收集操作系統(tǒng)的性能數(shù)據(jù),也能收集當(dāng)前Beats不支持的應(yīng)用程序或服務(wù)的性能數(shù)據(jù),同時能分擔(dān)Logstash的運行壓力。
2.SMonCgi實現(xiàn)
Windows Server系統(tǒng)的SMonCgi采用基于.Net Framework技術(shù),用PowerShell編成實現(xiàn)[6]。當(dāng)SMonCgi接收到客戶端發(fā)起的數(shù)據(jù)采集需求時,SMonCgi去執(zhí)行PowerShell腳本文件。在PowerShell腳本文件中執(zhí)行PowerShell的Cmdlet或自定義函數(shù)(通過PowerShell腳本模塊實現(xiàn)),并對Cmdlet或自定義函數(shù)的執(zhí)行結(jié)果格式化后返回給客戶端。
Linux系統(tǒng)的SMonCgi采用C語言實現(xiàn)。底層用的是面向鏈接、可靠的字節(jié)流傳輸TCP協(xié)議,同時應(yīng)用Sock編程、多線程編程、管道、CGI等技術(shù)。當(dāng)SMonCgi接收到客戶端發(fā)起的數(shù)據(jù)采集需求時,SMonCgi去執(zhí)行Shell腳本文件。在Shell腳本文件中執(zhí)行Linux系統(tǒng)命令,并對命令執(zhí)行結(jié)果格式化后返回給客戶端。
SmonCgi通過指定Client地址,達到限制訪問的目的,增強該SMonCgi訪問的安全性。
3.IT硬件資源SNMP Trap和syslog配置
就服務(wù)器而言,先進行服務(wù)器管理端口的網(wǎng)絡(luò)配置,然后通過在遠程管理模塊(如HP服務(wù)器的iLO、DELL服務(wù)器的iDRac等)中啟用SNMP Trap 和Syslog服務(wù),并指定目標(biāo)IP和端口(與Logstash相關(guān)配置一致),即可收集到報警信息和系統(tǒng)日志。就網(wǎng)絡(luò)設(shè)備、存儲設(shè)備等而言,可通過Console口或Web管理頁面進行與上述服務(wù)器類似的相關(guān)配置。
通過在計算節(jié)點中安裝SNMP 客戶端,結(jié)合SNMP get等命令,編寫CGI腳本(如獲取存儲系統(tǒng)性能的腳本)。在監(jiān)控平臺中請求SMonCgi執(zhí)行該腳本,即可獲取相關(guān)數(shù)據(jù)。
4.監(jiān)控平臺開發(fā)實踐
該平臺采用“Maven+Spring+SpringMVC+Hibernate+Mysql”整合開發(fā)框架實現(xiàn)后臺開發(fā),并采用ElasticSearch Java高級別REST客戶端(The Java High Level REST Client)開發(fā)ElasticSearch相關(guān)應(yīng)用,實現(xiàn)索引及文檔的增刪改查功能。前端采用HTML5,并結(jié)合JQuery及其多種組件實現(xiàn)監(jiān)控平臺數(shù)據(jù)的可視化。
六、結(jié)束語
本文對ELK日志分析平臺進行了研究及實踐。在多個IT設(shè)備上,根據(jù)實際情況,部署B(yǎng)eats,配置Syslog和 SNMP Trap實現(xiàn)了性能數(shù)據(jù)、告警信息和系統(tǒng)日志采集。并結(jié)合ELK在數(shù)據(jù)中心監(jiān)控方面的不足,設(shè)計了開放性較好的計算節(jié)點監(jiān)控代理程序SMonCgi,并把該代理程序部署在Linux系統(tǒng)和Windows Server系統(tǒng)中,進行性能數(shù)據(jù)的收集。根據(jù)高校數(shù)據(jù)中心針對不同層面的軟硬件設(shè)施運行狀態(tài)、性能數(shù)據(jù)、報警信息、系統(tǒng)日志的采集及處理實際要求,提出了一種多層面監(jiān)控的開放平臺架構(gòu)。最后對該架構(gòu)進行實踐。經(jīng)過實踐,本文設(shè)計的監(jiān)控平臺,能針對不同層面、不同監(jiān)控目標(biāo),采用不同技術(shù)手段實現(xiàn)監(jiān)控,為高校數(shù)據(jù)中心高效管理提供支撐。
參考文獻:
[1]百度百科.系統(tǒng)日志[EB/OL].https://baike.baidu.com/item/系統(tǒng)日志/9389581?fr=Aladdin.
[2]周映,韓曉霞.ELK日志分析平臺在電子商務(wù)系統(tǒng)監(jiān)控服務(wù)中的應(yīng)用[J].信息技術(shù)與標(biāo)準(zhǔn)化,2016(7):67-70.
[3][EB/OL].https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-modules.html.
[4]葉水勇.信息機房動力環(huán)境監(jiān)控系統(tǒng)的研究與應(yīng)用[J].東北電力技術(shù),2019,40(8):18-21.
[5]百度百科.IPMI[EB/OL].https://baike.baidu.com/item/IPMI/2552078?fr=aladdin.
[6]潘春華.基于PowerShell腳本和輕量級Web服務(wù)的IT系統(tǒng)運維監(jiān)控Agent設(shè)計與實現(xiàn)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2017(7):68-69,71.
(編輯:王曉明)