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