高洪波
摘要:隨著省級煤礦安全風(fēng)險監(jiān)測預(yù)警系統(tǒng)的全面建設(shè),在煤礦企業(yè)和省級數(shù)據(jù)中心部署的服務(wù)器、數(shù)據(jù)庫、網(wǎng)絡(luò)交換設(shè)備越來越多,系統(tǒng)越來越復(fù)雜,給IT運維工作提出了更大的挑戰(zhàn)。在內(nèi)蒙古自治區(qū)煤礦安全風(fēng)險監(jiān)測預(yù)警系統(tǒng)中,基于Zabbix開源平臺結(jié)合二次定制化開發(fā)成功實現(xiàn)了全方位一體化的自動化運維監(jiān)控平臺,實現(xiàn)了所有監(jiān)控對象和事件的高效整合、實時報警推送和自動化故障恢復(fù),有效地提升了運維工作的效率和質(zhì)量。
關(guān)鍵詞:運維;自動化;監(jiān)控平臺;監(jiān)測預(yù)警;Zabbix
中圖分類號:TP311? ? ? 文獻標(biāo)識碼:A
文章編號:1009-3044(2021)13-0207-04
Abstract: With the comprehensive construction of the provincial coal mine safety risk monitoring and early warning system, there are more and more servers, databases and network switching equipment deployed in coal mining enterprises as well as the provincial data centers, and the system is becoming more and more complex, which poses greater challenges to the IT operation and maintenance. In the coal mine safety risk monitoring and early warning system in Inner Mongolia, based on Zabbix open-source platform combined with secondary customized development, a fully integrated automatic operation and maintenance monitoring platform is successfully realized, which realizes the efficient integration of all monitoring objects and incidences, real-time alarm push and automatic fault recovery, and also effectively improves the efficiency and quality of operation and maintenance work.
Key words: operation; automation; monitoring platform; risk monitoring and early warning; Zabbix
1 背景
隨著全國煤礦安全信息化建設(shè)的推進,各省陸續(xù)通過建設(shè)省級煤礦安全風(fēng)險監(jiān)測預(yù)警系統(tǒng)全面掌握本省煤礦企業(yè)和重大風(fēng)險情況,監(jiān)測預(yù)警系統(tǒng)需要在煤礦企業(yè)部署大量前置數(shù)據(jù)采集設(shè)備,將煤礦各類主要監(jiān)測數(shù)據(jù)采集至省級中心大數(shù)據(jù)平臺,為日常監(jiān)管監(jiān)察、遠程監(jiān)察、后期多級數(shù)據(jù)分析和風(fēng)險評估、執(zhí)法監(jiān)察和應(yīng)急救援等工作提供數(shù)據(jù)支撐和技術(shù)手段。隨著采集范圍的不斷擴大,前置采集服務(wù)器、網(wǎng)絡(luò)設(shè)備以及中心大數(shù)據(jù)平臺的服務(wù)器集群的規(guī)模也越來越龐大,系統(tǒng)也越來越復(fù)雜,為了保障整個系統(tǒng)的穩(wěn)定運行,一套高效的自動化運維監(jiān)控平臺是必不可少的,本文將詳細論述自動化運維監(jiān)控平臺的設(shè)計和實現(xiàn)。
2 內(nèi)蒙古煤礦風(fēng)險監(jiān)測預(yù)警平臺現(xiàn)狀
內(nèi)蒙古自治區(qū)煤炭資源極其豐富,轄區(qū)內(nèi)煤礦500余處,是自治區(qū)的重要支柱產(chǎn)業(yè),安全生產(chǎn)至關(guān)重要。目前通過部署在煤礦企業(yè)的300余套前端采集設(shè)備和中心端的大數(shù)據(jù)集群已經(jīng)將煤礦的各類主要監(jiān)測數(shù)據(jù)接入到了省級平臺,由于接入數(shù)據(jù)的實時性和穩(wěn)定性要求很高,需要7x24小時保證服務(wù)器、網(wǎng)絡(luò)設(shè)備以及數(shù)據(jù)采集程序的平穩(wěn)運行。平臺中的服務(wù)器、網(wǎng)絡(luò)交換設(shè)備等各類設(shè)備數(shù)量龐大,前置設(shè)備分散于煤礦企業(yè)的自建機房里,路途遙遠交通不便,給現(xiàn)場運維帶來了很大的困難;另一方面,各企業(yè)的機房條件千差萬別,機房工作人員的技術(shù)水平參差不齊,平臺部署后經(jīng)常出現(xiàn)各種各樣的故障,服務(wù)器CPU負(fù)載高,磁盤容量使用超過80%,內(nèi)存使用超過閾值,系統(tǒng)進程多,tomcat服務(wù)宕機等,嚴(yán)重影響了平臺的穩(wěn)定運行。
為了解決運維工作的困境,我們基于開源監(jiān)控系統(tǒng)并配合二次定制開發(fā),建立了自治區(qū)煤礦自動化運維監(jiān)控平臺,高效整合關(guān)聯(lián)了各類事件,實現(xiàn)了對服務(wù)器、網(wǎng)絡(luò)交換設(shè)備、數(shù)據(jù)采集軟件、定時任務(wù)及應(yīng)用軟件的自動化監(jiān)控,取得了較好的效果。
3 自動化運維監(jiān)控平臺設(shè)計
3.1 平臺選型
目前業(yè)界用于運維監(jiān)控的系統(tǒng)種類繁多,主流的開源監(jiān)控系統(tǒng)有:Zabbix、Nagios、Prometheus等,Zabbix 是一個開源分布式開源監(jiān)控解決方案,它能夠監(jiān)控眾多網(wǎng)絡(luò)參數(shù)和服務(wù)器的健康度、完整性,通過對比發(fā)現(xiàn)Zabbix具備如下優(yōu)勢:
支持多種采集方式:支持Agent、SNMP、JMX、SSH等多種采集方式,以及主動和被動的數(shù)據(jù)傳輸方式。
擴展性強:支持Proxy分布式監(jiān)控,有agent自動發(fā)現(xiàn)功能,插件式架構(gòu)支持用戶自定義數(shù)據(jù)采集腳本。
支持自動化告警消息推送:可通過配置將告警消息實時自動化推送給釘釘或企業(yè)微信等第三方商用辦公系統(tǒng)。
產(chǎn)品成熟:擁有豐富的文檔資料以及各種開源的數(shù)據(jù)采集插件,能覆蓋絕大部分監(jiān)控場景。
基于以上優(yōu)勢,我們選擇Zabbix作為基礎(chǔ)架構(gòu)對煤礦自動化運維監(jiān)控平臺進行設(shè)計和實現(xiàn)。
3.2 總體方案架構(gòu)
Zabbix平臺主要由兩部分組成:客戶端的數(shù)據(jù)采集和服務(wù)端的數(shù)據(jù)存儲分析??蛻舳说臄?shù)據(jù)采集由部署在前置服務(wù)器上的Zabbix Agent模塊實現(xiàn);而服務(wù)端主要包括:WEB GUI、Database、Zabbix Server;另外,隨著監(jiān)控規(guī)模的增加,可以通過設(shè)置Zabbix Proxy模塊來實現(xiàn)監(jiān)控代理服務(wù),通過proxy代理可以實現(xiàn)多節(jié)點、跨區(qū)域的大規(guī)模服務(wù)器集群監(jiān)控。平臺主要架構(gòu)如圖1所示[1-2]:
Zabbix主要模塊如圖2所示,每個模塊工作職責(zé)如下[3]:
Zabbix Agent:部署在被監(jiān)控設(shè)備上,負(fù)責(zé)將本地監(jiān)控數(shù)據(jù)發(fā)往Server端或Proxy端;
Zabbix Server:部署在中心服務(wù)器上,負(fù)責(zé)接收agent發(fā)送的監(jiān)控數(shù)據(jù),所有配置,統(tǒng)計數(shù)據(jù)及操作數(shù)據(jù)均由其組織進行;
Zabbix Proxy:常用于分布監(jiān)控環(huán)境中,代理Server收集部分被監(jiān)控的監(jiān)控數(shù)據(jù)并統(tǒng)一發(fā)往Server端;
Zabbix Database:用戶存儲所有配置信息,以及存儲由Zabbix Server收集到的數(shù)據(jù);
Web GUI:Zabbix的GUI接口,通常與Server運行在同一臺主機上;
在監(jiān)控處理服務(wù)端,為了避免服務(wù)器單點故障,確保平臺的高可用性,我們搭建了基于多臺服務(wù)器的分布式集群監(jiān)控平臺。整體部署架構(gòu)如圖3所示,主備機通過rsync+inotify實現(xiàn)文件同步,通過MySQL主主復(fù)制實現(xiàn)數(shù)據(jù)同步,同一時刻只有一臺服務(wù)器能通過VIP(虛擬IP)對外提供zabbix服務(wù),keepalived用來監(jiān)控Zabbix Server進程和MySQL進程,一旦檢測到主服務(wù)器掛掉后,從服務(wù)器會立即頂替。通過高可用集群的配置,提升了整個監(jiān)控系統(tǒng)的高可用性[4]。
Zabbix支持多種監(jiān)控方式,包括:Agent、SNMP、IPMI、ICMP等等。煤礦監(jiān)測預(yù)警運維監(jiān)控平臺主要采用Agent監(jiān)控方式,它會主動收集本機的監(jiān)控信息并通過TCP協(xié)議與Zabbix Server傳遞信息,Zabbix Agent可以執(zhí)行被動和主動兩種檢查方式:在被動模式中,agent只應(yīng)答數(shù)據(jù)請求,Zabbix server詢問agent數(shù)據(jù),如CPU 的負(fù)載情況,然后Zabbix agent回送結(jié)果;而主動處理方式相對復(fù)雜, Agent必須首先從Zabbix Server端索取監(jiān)控項列表以進行獨立處理,然后周期性地發(fā)送新的值給Zabbix Server。本平臺主要采取被動檢查方式回送煤礦端的監(jiān)測數(shù)據(jù),一個完整的檢查流程如下[5-6]:
1)Server 打開一個TCP連接
2)Server 發(fā)送 agent.ping\n
3)Agent 讀取請求并響應(yīng)
4)Server 處理數(shù)據(jù)以獲取值,
5)TCP連接關(guān)閉
Zabbix 服務(wù)端收到數(shù)據(jù),將數(shù)據(jù)存儲到數(shù)據(jù)庫MySQL中,用戶基于Zabbix WEB可以看到數(shù)據(jù)在前端展現(xiàn)圖像。目前實際監(jiān)控的服務(wù)器數(shù)量還未滿500臺,基礎(chǔ)的Zabbix Server + Agent架構(gòu)尚可滿足性能需要,未來隨著被監(jiān)控對象服務(wù)器的不斷增多,為了減輕Zabbix Server端的壓力,可使用proxy進行分布式監(jiān)控[7-8]。
Zabbix Server和Zabbix Agent都部署配置完成之后,需要對所有的采集對象設(shè)備配置需要的監(jiān)測內(nèi)容和報警信息,配置流程如下[9-10]:
1)在Zabbix服務(wù)端的管理界面上添加所有監(jiān)測對象設(shè)備,設(shè)置IP地址。
2)創(chuàng)建監(jiān)控項,設(shè)置監(jiān)控項的監(jiān)測內(nèi)容,比如CPU使用率等。
3)創(chuàng)建觸發(fā)器,設(shè)置好需要的觸發(fā)規(guī)則,當(dāng)返回的檢測值超過設(shè)置的閾值時將觸發(fā)告警。
4)創(chuàng)建動作,針對不同的觸發(fā)條件配置觸發(fā)告警時的報警方式等。
5)創(chuàng)建各類統(tǒng)計圖,運維人員可通過圖形直觀查看監(jiān)控項的實時變化情況。
煤礦風(fēng)險監(jiān)測預(yù)警自動化運維平臺中配置的主要監(jiān)控項詳見表1。
3.3 告警消息推送
如上節(jié)所述,當(dāng)Zabbix監(jiān)測到告警時,會通過各種方式進行消息報送,常用的方式有郵件或者短信。近年來,企業(yè)微信在日常辦公中扮演著越來越重要的角色,使用普及率不斷增長,因此我們使用zabbix結(jié)合企業(yè)微信作為主要的告警方式,這樣可以及時有效地把告警信息推送到接收人的企業(yè)微信客戶端,方便告警的及時處理。
首先在企業(yè)微信中創(chuàng)建獨立的運維監(jiān)控部門,將所有運維成員添加至該部門,以用于消息的統(tǒng)一發(fā)送;之后在“企業(yè)應(yīng)用”中創(chuàng)建Zabbix告警應(yīng)用,生成corpid、appsecret、agentid三個參數(shù);接下來是在Zabbix Server端配置微信報警腳本,配置界面如圖4所示。將微信企業(yè)號配置中獲得的3個參數(shù)分別配置在腳本中。其中.corpid、appsecret用于獲取accesstoken,agentid用于往應(yīng)用發(fā)送消息。
4 應(yīng)用效果
目前內(nèi)蒙古煤礦監(jiān)測預(yù)警自動化運維監(jiān)控平臺已經(jīng)接入主機356臺,監(jiān)控項數(shù)量合計達到20697項,觸發(fā)器數(shù)量合計達到6893項,取得了較為理想的應(yīng)用效果。
4.1 高效的監(jiān)控效果
監(jiān)控平臺將服務(wù)器、網(wǎng)絡(luò)環(huán)境、數(shù)據(jù)庫以及應(yīng)用系統(tǒng)都納入到了運維監(jiān)控對象中,從企業(yè)端前置數(shù)據(jù)采集平臺、中心端大數(shù)據(jù)平臺以及云計算環(huán)境中實時采集所有的性能數(shù)據(jù)和異常事件,在統(tǒng)一的平臺上高效整合集成,基于預(yù)先設(shè)置好的監(jiān)控閾值和觸發(fā)器及時生成告警信息,幫助運維人員迅速發(fā)現(xiàn)、定位并解決問題;同時通過Web儀表盤界面(圖5)進行統(tǒng)一管理,使運維人員能及時全面地掌握煤礦監(jiān)測預(yù)警平臺各個環(huán)節(jié)的運行狀況。
4.2 完善的報警機制
監(jiān)控平臺在郵件、短信等實時報警提醒功能的基礎(chǔ)上,通過二次定制開發(fā)加入了企業(yè)微信聯(lián)動報警機制,通過配置層級化的觸發(fā)策略,根據(jù)不同等級的報警項,可將各類異常報警信息及時推送到有相關(guān)運維人員的企業(yè)微信上,有效提升了報警的時效性和針對性,實現(xiàn)了自動化運維。
4.3 故障的自動恢復(fù)
針對數(shù)據(jù)采集前置服務(wù)器上的各數(shù)據(jù)采集服務(wù)穩(wěn)定性低,經(jīng)常發(fā)生宕機現(xiàn)象等問題,制定詳細的處理步驟,編寫了自動故障處理腳本程序,并通過Ansible將所有的腳本程序批量部署到所有的前置服務(wù)器。利用Zabbix報警后執(zhí)行遠程命令的功能實現(xiàn)故障自動恢復(fù),節(jié)省了大量的人力運維成本,降低了人為操作的風(fēng)險,保障了運維業(yè)務(wù)的穩(wěn)定性。
5 結(jié)束語
本文利用開源監(jiān)控框架Zabbix配合二次開發(fā)實現(xiàn)了內(nèi)蒙古煤礦監(jiān)測預(yù)警平臺的一體化全方位運維監(jiān)控,可以對煤礦監(jiān)測預(yù)警中的服務(wù)器、網(wǎng)絡(luò)、數(shù)據(jù)庫、應(yīng)用程序等內(nèi)容進行統(tǒng)一的監(jiān)控管理、實時消息推送、自動化故障恢復(fù),讓運維工作人員能夠及時迅速地發(fā)現(xiàn)故障、排查原因、解決問題,有效提升了運維工作的效率和質(zhì)量。
參考文獻:
[1] Zabbix.What Is Zabbix[EB/OL].[2020-08-20].http://www.zabbix.com/product.
[2] Zabbix.Zabbix Overview[EB/OL]. [2020-08-20].https://www.zabbix.com/documentation/3.0/manual/introduction/overview.
[3] Silver T M.Monitoring network and service availability with open-source software[J].Information Technology and Libraries,2010,29(1):8.
[4] 吳兆松.Zabbix企業(yè)級分布式監(jiān)控系統(tǒng)[J].北京電子工業(yè),2014(8):2-6.
[5] 周萌,林國策,楊厚云.CentOS下ZABBIX的配置與使用[J].北京信息科技大學(xué)學(xué)報(自然科學(xué)版),2015,30(1):90-94.
[6] 趙哲,譚海波,趙赫,等.基于Zabbix的網(wǎng)絡(luò)監(jiān)控系統(tǒng)[J].計算機技術(shù)與發(fā)展,2018,28(1):144-149.
[7] 王磊,劉晗,董珊.一種Zabbix代理服務(wù)器的設(shè)計與實現(xiàn)[J].通訊世界,2016(11):91-92.
[8] 陳誠,洪生,于業(yè)松,等.基于開源軟件zabbix監(jiān)控系統(tǒng)的應(yīng)用研究[J].計算機產(chǎn)品與流通,2018(10):32.
[9] 李朝陽.利用ZABBIX進行系統(tǒng)和網(wǎng)絡(luò)管理[J].計算機時代,2008(10):19-22.
[10] 楊豪,呂海明.Zabbix系統(tǒng)在聯(lián)網(wǎng)視頻監(jiān)控平臺中的應(yīng)用[J].信息通信,2014(10):86-87.
【通聯(lián)編輯:謝媛媛】