高洪波
摘要:隨著省級煤礦安全風險監測預警系統的全面建設,在煤礦企業和省級數據中心部署的服務器、數據庫、網絡交換設備越來越多,系統越來越復雜,給IT運維工作提出了更大的挑戰。在內蒙古自治區煤礦安全風險監測預警系統中,基于Zabbix開源平臺結合二次定制化開發成功實現了全方位一體化的自動化運維監控平臺,實現了所有監控對象和事件的高效整合、實時報警推送和自動化故障恢復,有效地提升了運維工作的效率和質量。
關鍵詞:運維;自動化;監控平臺;監測預警;Zabbix
中圖分類號:TP311? ? ? 文獻標識碼: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 背景
隨著全國煤礦安全信息化建設的推進,各省陸續通過建設省級煤礦安全風險監測預警系統全面掌握本省煤礦企業和重大風險情況,監測預警系統需要在煤礦企業部署大量前置數據采集設備,將煤礦各類主要監測數據采集至省級中心大數據平臺,為日常監管監察、遠程監察、后期多級數據分析和風險評估、執法監察和應急救援等工作提供數據支撐和技術手段。隨著采集范圍的不斷擴大,前置采集服務器、網絡設備以及中心大數據平臺的服務器集群的規模也越來越龐大,系統也越來越復雜,為了保障整個系統的穩定運行,一套高效的自動化運維監控平臺是必不可少的,本文將詳細論述自動化運維監控平臺的設計和實現。
2 內蒙古煤礦風險監測預警平臺現狀
內蒙古自治區煤炭資源極其豐富,轄區內煤礦500余處,是自治區的重要支柱產業,安全生產至關重要。目前通過部署在煤礦企業的300余套前端采集設備和中心端的大數據集群已經將煤礦的各類主要監測數據接入到了省級平臺,由于接入數據的實時性和穩定性要求很高,需要7x24小時保證服務器、網絡設備以及數據采集程序的平穩運行。平臺中的服務器、網絡交換設備等各類設備數量龐大,前置設備分散于煤礦企業的自建機房里,路途遙遠交通不便,給現場運維帶來了很大的困難;另一方面,各企業的機房條件千差萬別,機房工作人員的技術水平參差不齊,平臺部署后經常出現各種各樣的故障,服務器CPU負載高,磁盤容量使用超過80%,內存使用超過閾值,系統進程多,tomcat服務宕機等,嚴重影響了平臺的穩定運行。
為了解決運維工作的困境,我們基于開源監控系統并配合二次定制開發,建立了自治區煤礦自動化運維監控平臺,高效整合關聯了各類事件,實現了對服務器、網絡交換設備、數據采集軟件、定時任務及應用軟件的自動化監控,取得了較好的效果。
3 自動化運維監控平臺設計
3.1 平臺選型
目前業界用于運維監控的系統種類繁多,主流的開源監控系統有:Zabbix、Nagios、Prometheus等,Zabbix 是一個開源分布式開源監控解決方案,它能夠監控眾多網絡參數和服務器的健康度、完整性,通過對比發現Zabbix具備如下優勢:
支持多種采集方式:支持Agent、SNMP、JMX、SSH等多種采集方式,以及主動和被動的數據傳輸方式。
擴展性強:支持Proxy分布式監控,有agent自動發現功能,插件式架構支持用戶自定義數據采集腳本。
支持自動化告警消息推送:可通過配置將告警消息實時自動化推送給釘釘或企業微信等第三方商用辦公系統。
產品成熟:擁有豐富的文檔資料以及各種開源的數據采集插件,能覆蓋絕大部分監控場景。
基于以上優勢,我們選擇Zabbix作為基礎架構對煤礦自動化運維監控平臺進行設計和實現。
3.2 總體方案架構
Zabbix平臺主要由兩部分組成:客戶端的數據采集和服務端的數據存儲分析。客戶端的數據采集由部署在前置服務器上的Zabbix Agent模塊實現;而服務端主要包括:WEB GUI、Database、Zabbix Server;另外,隨著監控規模的增加,可以通過設置Zabbix Proxy模塊來實現監控代理服務,通過proxy代理可以實現多節點、跨區域的大規模服務器集群監控。平臺主要架構如圖1所示[1-2]:
Zabbix主要模塊如圖2所示,每個模塊工作職責如下[3]:
Zabbix Agent:部署在被監控設備上,負責將本地監控數據發往Server端或Proxy端;
Zabbix Server:部署在中心服務器上,負責接收agent發送的監控數據,所有配置,統計數據及操作數據均由其組織進行;
Zabbix Proxy:常用于分布監控環境中,代理Server收集部分被監控的監控數據并統一發往Server端;
Zabbix Database:用戶存儲所有配置信息,以及存儲由Zabbix Server收集到的數據;
Web GUI:Zabbix的GUI接口,通常與Server運行在同一臺主機上;
在監控處理服務端,為了避免服務器單點故障,確保平臺的高可用性,我們搭建了基于多臺服務器的分布式集群監控平臺。整體部署架構如圖3所示,主備機通過rsync+inotify實現文件同步,通過MySQL主主復制實現數據同步,同一時刻只有一臺服務器能通過VIP(虛擬IP)對外提供zabbix服務,keepalived用來監控Zabbix Server進程和MySQL進程,一旦檢測到主服務器掛掉后,從服務器會立即頂替。通過高可用集群的配置,提升了整個監控系統的高可用性[4]。
Zabbix支持多種監控方式,包括:Agent、SNMP、IPMI、ICMP等等。煤礦監測預警運維監控平臺主要采用Agent監控方式,它會主動收集本機的監控信息并通過TCP協議與Zabbix Server傳遞信息,Zabbix Agent可以執行被動和主動兩種檢查方式:在被動模式中,agent只應答數據請求,Zabbix server詢問agent數據,如CPU 的負載情況,然后Zabbix agent回送結果;而主動處理方式相對復雜, Agent必須首先從Zabbix Server端索取監控項列表以進行獨立處理,然后周期性地發送新的值給Zabbix Server。本平臺主要采取被動檢查方式回送煤礦端的監測數據,一個完整的檢查流程如下[5-6]:
1)Server 打開一個TCP連接
2)Server 發送 agent.ping\n
3)Agent 讀取請求并響應
4)Server 處理數據以獲取值,
5)TCP連接關閉
Zabbix 服務端收到數據,將數據存儲到數據庫MySQL中,用戶基于Zabbix WEB可以看到數據在前端展現圖像。目前實際監控的服務器數量還未滿500臺,基礎的Zabbix Server + Agent架構尚可滿足性能需要,未來隨著被監控對象服務器的不斷增多,為了減輕Zabbix Server端的壓力,可使用proxy進行分布式監控[7-8]。
Zabbix Server和Zabbix Agent都部署配置完成之后,需要對所有的采集對象設備配置需要的監測內容和報警信息,配置流程如下[9-10]:
1)在Zabbix服務端的管理界面上添加所有監測對象設備,設置IP地址。
2)創建監控項,設置監控項的監測內容,比如CPU使用率等。
3)創建觸發器,設置好需要的觸發規則,當返回的檢測值超過設置的閾值時將觸發告警。
4)創建動作,針對不同的觸發條件配置觸發告警時的報警方式等。
5)創建各類統計圖,運維人員可通過圖形直觀查看監控項的實時變化情況。
煤礦風險監測預警自動化運維平臺中配置的主要監控項詳見表1。
3.3 告警消息推送
如上節所述,當Zabbix監測到告警時,會通過各種方式進行消息報送,常用的方式有郵件或者短信。近年來,企業微信在日常辦公中扮演著越來越重要的角色,使用普及率不斷增長,因此我們使用zabbix結合企業微信作為主要的告警方式,這樣可以及時有效地把告警信息推送到接收人的企業微信客戶端,方便告警的及時處理。
首先在企業微信中創建獨立的運維監控部門,將所有運維成員添加至該部門,以用于消息的統一發送;之后在“企業應用”中創建Zabbix告警應用,生成corpid、appsecret、agentid三個參數;接下來是在Zabbix Server端配置微信報警腳本,配置界面如圖4所示。將微信企業號配置中獲得的3個參數分別配置在腳本中。其中.corpid、appsecret用于獲取accesstoken,agentid用于往應用發送消息。
4 應用效果
目前內蒙古煤礦監測預警自動化運維監控平臺已經接入主機356臺,監控項數量合計達到20697項,觸發器數量合計達到6893項,取得了較為理想的應用效果。
4.1 高效的監控效果
監控平臺將服務器、網絡環境、數據庫以及應用系統都納入到了運維監控對象中,從企業端前置數據采集平臺、中心端大數據平臺以及云計算環境中實時采集所有的性能數據和異常事件,在統一的平臺上高效整合集成,基于預先設置好的監控閾值和觸發器及時生成告警信息,幫助運維人員迅速發現、定位并解決問題;同時通過Web儀表盤界面(圖5)進行統一管理,使運維人員能及時全面地掌握煤礦監測預警平臺各個環節的運行狀況。
4.2 完善的報警機制
監控平臺在郵件、短信等實時報警提醒功能的基礎上,通過二次定制開發加入了企業微信聯動報警機制,通過配置層級化的觸發策略,根據不同等級的報警項,可將各類異常報警信息及時推送到有相關運維人員的企業微信上,有效提升了報警的時效性和針對性,實現了自動化運維。
4.3 故障的自動恢復
針對數據采集前置服務器上的各數據采集服務穩定性低,經常發生宕機現象等問題,制定詳細的處理步驟,編寫了自動故障處理腳本程序,并通過Ansible將所有的腳本程序批量部署到所有的前置服務器。利用Zabbix報警后執行遠程命令的功能實現故障自動恢復,節省了大量的人力運維成本,降低了人為操作的風險,保障了運維業務的穩定性。
5 結束語
本文利用開源監控框架Zabbix配合二次開發實現了內蒙古煤礦監測預警平臺的一體化全方位運維監控,可以對煤礦監測預警中的服務器、網絡、數據庫、應用程序等內容進行統一的監控管理、實時消息推送、自動化故障恢復,讓運維工作人員能夠及時迅速地發現故障、排查原因、解決問題,有效提升了運維工作的效率和質量。
參考文獻:
[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企業級分布式監控系統[J].北京電子工業,2014(8):2-6.
[5] 周萌,林國策,楊厚云.CentOS下ZABBIX的配置與使用[J].北京信息科技大學學報(自然科學版),2015,30(1):90-94.
[6] 趙哲,譚海波,趙赫,等.基于Zabbix的網絡監控系統[J].計算機技術與發展,2018,28(1):144-149.
[7] 王磊,劉晗,董珊.一種Zabbix代理服務器的設計與實現[J].通訊世界,2016(11):91-92.
[8] 陳誠,洪生,于業松,等.基于開源軟件zabbix監控系統的應用研究[J].計算機產品與流通,2018(10):32.
[9] 李朝陽.利用ZABBIX進行系統和網絡管理[J].計算機時代,2008(10):19-22.
[10] 楊豪,呂海明.Zabbix系統在聯網視頻監控平臺中的應用[J].信息通信,2014(10):86-87.
【通聯編輯:謝媛媛】