夏 林
(中國民用航空中南地區空中交通管理局廣西分局,南寧 530000)
隨著民航業務的發展,信息化建設腳步的加快,業務系統對網絡環境、主機平臺、生產環境狀態等依賴程度越來越高,運維日常維護越來越復雜,用戶比運維人員先發現故障,處理故障無頭緒,無法快速定位故障。目前民航清算系統每天通過設備維護人員定期巡視檢查硬件和軟件的狀態,缺少對各硬件、軟件信息的實時監控系統,無法及時發現運行隱患及故障,無法快速進行故障定位、故障分析。
基于SNMP(simple network management protocol)和WMIC(windows management instrumentation command-line)的民航清算監控管理系統是對清算系統的軟件模塊、硬件模塊的運行情況進行監視和控制的應用系統,有效提高監測和管理業務系統的性能。該系統通過主機的管理信息庫(management information base,MIB)提供CPU、內存、磁盤利用率等對象信息,通過WMIC 獲取以及控制Window 系統的設備進程運行情況,對清算系統進行監測、分析,實現監控、管理、告警,充分發揮技防的作用,實現對清算系統全天24小時不間斷跟蹤。
本系統采用基于Java 語言的C/S 架構進行系統搭建,能實時遠程監控連接在網絡上清算服務器、終端設備參數和運行狀態,主要包括:CPU 利用率、內存利用率、磁盤利用率、服務器和終端的進程、服務器主備狀態及主備切換等[1]。系統通過多線程自動定期完成各設備的CPU 利用率、內存空間、磁盤空間、進程運行情況的原始數據收集、處理、存儲、顯示,實現監控系統重要性能狀況,保證設備和連接容量不會被過度使用到不利影響的程度。系統主要分為性能數據采集模塊、性能數據分析處理模塊、終端顯示模塊、告警計算模塊和控制與管理模塊。性能數據采集模塊主要使用SNMP協議讀取設備的CPU、內存、磁盤空間等原始數據以及使用WMIC 讀取各服務器及終端的服務進程運行情況;性能數據分析處理模塊主要對收集到的原始數據進行分類、過濾、計算;告警計算模塊主要對解析后數據進行過濾、計算,根據用戶自定義的設備資源的利用率和進程運行情況,設計相應的閾值,并進行告警計算后發出告警;控制與管理模塊對各服務器和終端的關機和重啟、進程的關閉、打開和重啟。終端顯示模塊主要將數據信息、告警信息通過圖形化界面呈現出來,并提供有效的解決方案。系統的結構框圖如圖1所示。

圖1 系統結構圖
數據采集模塊設計是通過SNMP協議的采集方法實現。采集原理為基于SNMP 的GET 機制,結合標準的網絡管理信息庫(MIB),使用多線程技術固定時間按照被管設備的MIB 對象標識發出SNMPGETNEXT 請求,等待消息回來,成功完成SNMP查詢操作[2],對返回的PDU進行解碼獲取所需數據,并將數據在自定義變量中依次查詢各項MIB 對象標識,以此來獲取服務器或者主機的CPU 使用率、內存、磁盤空間等原始信息,將這些信息存儲在自定義哈希表中。基于WMIC 命令,使用多線程技術固定時間獲取相關服務進程運行情況(FIPSexport. exe、NewAirClearManagementSysDataParse. exe、 Data-ACQS.exe、DadaProc.exe)。其流程圖如圖2所示。

圖2 原始數據采集流程
性能數據分析處理模塊主要是接收主動采集返回的各類動態數據,對各數據要素進行分類、計算和服務器主備狀態判斷。本模塊可設置黑白名單,對黑名單的被管設備的數據進行過濾丟棄不處理[3],對白名單的被管設備的CPU、內存、硬盤數據項進行計算、轉換成CPU 利用率、內存利用率、硬盤利用率后發送至終端顯示模塊和告警計算模塊。其流程圖如圖3所示。

圖3 原始數據處理流程
本模塊還對清算服務器主備用狀態進行判斷和監測。程序首先定義1個局部變量Num,其含義為服務器進程數量,檢測兩臺服務器是否存在進程“NewAirClearManagementSysDataParse. exe”,如相關進程存活,則Num數量加1,輸出時間及進程狀態到日志,反之只輸出時間及進程狀態到日志。當服務器只有一個進程NewAirClear-ManagementSysDataParse.exe 存在并且進程狀態正確,說明清算服務器運行正常(即一臺服務器處于在線狀態,另一臺處于離線狀態),正常狀態發送至監控終端顯示,綠色底色代表服務器主用,黃色底色代表服務器備用,如圖4 所示。反之,則說明清算服務器運行狀態異常(兩臺均在線或離線狀態),異常狀態傳遞至告警計算模塊[4],其流程圖如5所示。

圖4 服務器主備狀態顯示

圖5 主備狀態判定流程
系統的告警計算模塊是對采集的數據進行分類、計算,根據類別不同進行相應告警。告警計算模塊分為硬件資源模塊和軟件運行模塊。硬件資源告警模塊實現對CPU 利用率、內存利用率、磁盤空間利用率異常指標滿足告警計算后發出告警,如圖6所示。軟件運行模塊實現對各服務器、終端的進程異常退出或者進程占用率超出閾值后發出告警。告警計算是由線程觸發的,每個定時周期(5分鐘)性能數據分析處理后的性能指標數據都會進行告警計算、判斷。

圖6 主備狀態判定流程
告警設計流程分為告警檢測和告警恢復。通過告警檢測實現精準反映設備故障;通過告警恢復可以進行告警消除。告警檢測流程介紹如下:①判斷當前指標是否處于告警狀態;②是則結束處理;③判斷是不是達到告警檢測次數變量;④沒有達到則告警檢測次數變量加1;⑤達到則發出告警信息,并且將狀態置為告警狀態。告警恢復流程介紹如下:①判斷當前指標是否處于恢復狀態;②是則結束處理;③判斷是不是達到告警檢測次數變量;④沒有達到則結束處理;⑤達到則發出告警恢復信息,并且將狀態置為恢復狀態。
告警計算方法使用靜態閾值檢測方法。基于CPU 利用率屬于抖動類指標,當性能計算指標大于或者等于閾值,滿足檢測方法。設置告警檢測次數變量為3,告警檢測觸發條件是“3個采集周期滿足3 次檢測方法”,告警恢復檢測的觸發條件是“3 個周期少于3 次檢測算法”。滿足告警檢測觸發條件后系統自動聲音告警、紅色警示。其算法見算法1。
算法1CPU利用率告警算法
輸入:服務器或主機的CPU利用率
輸出:WarnList
初始化各利用率告警變量為0
通過各利用率達到預設閾值,告警檢測次數變量加1
循環檢測后續2個周期,forifrom 0 to 2
當告警變量等于3,保存在Warnlist
當告警變量小于3,告警變量重新置0
返回
基于磁盤空間利用率、設備內存利用率、進程是否退出、進程占用內存空間屬于非抖動類指標,設置告警檢測次數變量為1。當性能計算指標大于或者等于閾值,滿足檢測方法,系統自動聲音告警、紅色警示。其算法見算法2。
算法2內存、磁盤空間利用率、進程退出告警算法
輸入:內存、磁盤空間利用率、進程狀態
輸出:WarnList
初始化各利用率、進程告警變量為0
通過各利用率達到預設閾值或者進程不存在,告警檢測次數變量加1
保存在Warnlist
返回
控制與管理模塊是基于WMIC 指令實現對網絡中被管終端的進程關閉或者啟動、主機的重啟、關機等[5],其控制人機界面如圖7 所示。監控管理終端創建Telnet客戶端,與被管終端建立遠程通信并確認其工作狀態,若被管終端在線,則向被管終端發送封裝好的控制指令(關機、主機重啟、進程重啟、進程關閉、主備切換),被管終端接收控制指令。當控制指令執行完后,監控管理終端發送斷開通信連接的指令;若被管終端離線,則向監控終端發出“被管終端無法建立遠程連接”的告警提示,其工作原理如圖8所示。

圖7 控制人機界面

圖8 控制與管理示意圖
終端顯示模塊主要功能是單個清算設備狀態查詢,提交性能分析處理后的結果,并以圖形化方式顯示,便于查詢性能結果,如圖9 所示。顯示分為三類:第一類是實時監控與顯示清算系統的指標,每個設備均有一個性能頁面,在性能頁面中展示設備的靜態信息:設備名稱、IP 地址、設備類型、當前告警信息等,右鍵點擊設備圖標,彈出控制窗口,集成設備關機、設備重啟、進程重啟、進程關閉、進程啟動等命令,同時在性能頁面可以查看當前設備指標情況(CPU、內存、磁盤占用大小及利用率、進程運行狀態),以柱狀圖顯示;第二類則是報表統計分析顯示,提供設備歷史性能、告警統計報表,報表可以展現出設備的當前負載狀態、健康狀態,如查詢過去某一時間段內服務器的內存利用率;第三類是異常參數實時報警,則以告警窗口顯示,告警信息直觀、易懂,以語音告警、紅色告警窗口呈現。

圖9 監控人機界面
目前應用系統監控軟件比較多,跨平臺性和可移植性差,而且大多配置復雜。本文提出清算監控管理系統的結構簡單,可以滿足用戶的個性化需求,非常方便進行系統部署和移植。對清算系統整體性能監測,為實現對清算系統參數的性能調優提供數據支持,判定清算系統的使用趨勢和分離出性能問題,利用跟蹤評價資源利用水平,從而發出性能出現的警示信息,告知設備監控人員錯誤發生的程度,及時發現運行隱患,有助于在產生不利影響之前予以解決,有效防止問題嚴重化,保證網絡高效、穩定、可靠地運行,提高工作效率。