蔣增恒
摘 要:本文提出一種能夠適用于LINUX空管自動化操作系統的集中監控系統,以解決空管自動化系統不能靈活配置監控系統的困難。集中監控系統基于Zabbix軟件,通過C/S 模式,部署相應的監控主機對來自各個服務器終端的運行環境和主要監控指標進行采集,最終通過數據庫集中處理后進行顯示和告警。系統由監控系統調度模塊、數據采集模塊、日志監控模塊、告警模塊4 個模塊構成,采用mysql數據庫和python語言進行設計編寫。針對Zabbix 對于文本型數據類型監控顯示方面的不足,開發設計了基于Flask 框架的日志監控系統,作為Zabbix的監控補充,輕量級的日志監控系統很好的彌補了Zabbix 在代碼、軟件等性能監控上對于文本信息數據采集及顯示上的不足。
關鍵詞:空管自動化;集中監控;Zabbix
引言
民航空管自動化系統配備有完善的集中監控系統,自動化系統發生故障時,監控能夠準確的將軟硬件故障信息發送給維護人員,極大的增強了系統的安全性和可維護性。隨著空管改革以及“大崗位、大值班”模式的推廣,維護人員需要在多個崗位上監視自動化系統的運行情況,但是廠家提供的監控服務配置不靈活,且占用系統節點資源,并不能很好的滿足工作需要。
本文針對此需求,提出了在使用開源Zabbix的基礎上設計集中監控系統,用Zabbix對自動化系統的軟硬件進行監控,然后開發日志監控模塊對自動化軟件模塊在運行過程中可能發生的故障進行監控。
1 系統分析
1. 1 監控調度及數據采集存儲
基于Zabbix的監控調度主程序將監控自動化系統服務器主機的CPU、內存、磁盤等硬件參數和交換機、路由器等網絡設備參數,并將采集到的監控信息格式化后存儲到mysql數據庫中,是整個集中監控系統的核心。
1. 2 日志監控
自動化軟件模塊、外部信號在運行過程中,也會遇到執行錯誤或中斷的情況,因此相關的軟件錯誤監控機制是必須的。日志監控模塊通過讀取自動化監控服務器OASYS上的日志,收集程序運行中的錯誤,利用基于Flask框架編寫的web前端進行顯示,并執行相應的告警策略,將錯誤信息發送給維護人員。
1. 4 告警
監控平臺應在故障發生時,可以通過多種渠道通知運維人員,包括本機的聲光告警以及短信、郵件等通信方式。聲光告警是最為常用的一種告警方式,Zabbix軟件本身就可以實現。郵件推送告警則可以通過一些開源項目輕松實現。
2 系統設計
2.1 集中監控系統基本結構設計
該系統共由基于簡單網絡管理協議SNMP 與Zabbix agent 客戶端的網絡數據采集模塊,基于mysql 數據庫的監控數據存儲模塊,基于Zabbix server 的監控調度模塊,基于Flask 框架的web 端日志監控模塊組成。
2.2集中監控系統的功能模塊設計
2.2.1監控調度模塊和數據采集存儲模塊設計
Zabbix集中監控系統基于web 形式,可以靈活的修改需要監控的服務器、監控的內容、監控的時間等項目。集中監控系統需要在服務器和被監控端安裝相應的軟件,Zabbix 就利用10050端口監聽Agent發回的信息。Zabbix軟件可以靈活的調用mysql數據庫,通過在數據庫中建立告警表,監控調度主程序在收到監控信息之后會判斷是否存在相應的告警策略,并將信息存儲到數據庫的告警表中。
數據采集則采用基于簡單網絡協議SNMP 與C/S 架構相結合的數據采集方法。采集到的數據將格式化后存儲到mysql相應的表中,相關硬件采集到的數據基本都包括:
(1)資源列表:服務器對應的ip 地址,dns 域名,對應應用的端口號,使用狀態等。
(2)監控項列表:被監控主機上,所有被監控的網絡節點的信息,比如cpu 負載等。
(3)告警列表:監控系統不單單是完成數據展示的作用,還要完成對監控數據配置閾值,超過既定閾值,實施報警策略。
2.3.2日志監控模塊設計
空管自動化系統在運行時, OASYS上會實時生成大量的運行日志,日志會實時的記錄在日志文件中,我們可以在集中監控系統上讀取該日志文件,實現對日志的監控。THALES自動化系統中自帶python軟件,可以通過編寫python腳本實現對日志的相關操作。采集到的日志將利用python中的相關模塊存入mysql數據庫中。
2.3.3 前端web模塊的設計
本文使用基于python語言編寫的Flask框架建立前端web模塊,Flask是輕量級的web框架,其總體的系統框架采用MVC 模式,即模型,視圖函數和控制器函數相分離的架構模式。通過python語言,可以將mysql數據庫中采集到的日志文件讀入,并通過匹配關鍵字的方法對系統運行日志在web端進行分級顯示。例如:設置如下關鍵字:“Failed、NOT OK、down”等,如果匹配成功的話,將關鍵字后的10 行內容顯示在web 端顯示,相關人員可以在web 上查看錯誤詳情,并且給出相應的處理方法。
2.3.4 告警模塊
告警模塊分為兩個部分,其一為Zabbix Server的告警和郵件推送,告警內容主要為自動化系統的硬件告警,如CPU、硬盤等,或者通過SNMP協議收集到的網絡設備的告警,這些功能通過Zabbix Server就可以實現。
其二為web前端監控日志的告警和郵件推送。告警內容主要為采集到的日志中關于自動化系統軟件模塊和外部接入信號的告警。我們在數據采集及存儲模塊中設定,如果日志中出現告警關鍵字,則根據記錄的相關信息,以郵件的形式發送給維護人員。集中監控系統本機聲音告警可以通過python語言調用語音包實現,而郵件推送告警則可利用 python 標準庫中的smtplib 模塊發送郵件。
3 結束語
本文從空管終端運行現場實際需求出發,提出一種基于開源監控軟件Zabbix的空管自動化集中監控系統。系統可以在不占用自動化系統節點的情況下,將自動化系統的監控延伸到各個崗位上,為空管技術保障提供了雙重保障。
參考文獻:
[1]周萌. CentOS 下ZABBIX 的配置與使用[J]. 北京信息科技大學學報(自然科學版). 2015,(01).
[2] 姚仁捷. Zabbix 監控系統深度實踐[M]. 北京:電子工業出版社,2014.
[3] Miguel Grinberg. Flask Web 開發[M]. 北京:人民郵電出版社,2014.
[4] 郭曉慧,李潤知,張 茜,等. 基于Zabbix 的分布式服務器監控應用研究[J]. 通信學報,2013,34:94-98.
[5]THLAES SHANGHAI TMA SYSTEM/SEGMENT SPECIFICATIONS