夏 林
(中國民用航空中南地區(qū)空中交通管理局廣西分局,南寧 530000)
隨著民航業(yè)務(wù)的發(fā)展,信息化建設(shè)腳步的加快,業(yè)務(wù)系統(tǒng)對網(wǎng)絡(luò)環(huán)境、主機(jī)平臺、生產(chǎn)環(huán)境狀態(tài)等依賴程度越來越高,運維日常維護(hù)越來越復(fù)雜,用戶比運維人員先發(fā)現(xiàn)故障,處理故障無頭緒,無法快速定位故障。目前民航清算系統(tǒng)每天通過設(shè)備維護(hù)人員定期巡視檢查硬件和軟件的狀態(tài),缺少對各硬件、軟件信息的實時監(jiān)控系統(tǒng),無法及時發(fā)現(xiàn)運行隱患及故障,無法快速進(jìn)行故障定位、故障分析。
基于SNMP(simple network management protocol)和WMIC(windows management instrumentation command-line)的民航清算監(jiān)控管理系統(tǒng)是對清算系統(tǒng)的軟件模塊、硬件模塊的運行情況進(jìn)行監(jiān)視和控制的應(yīng)用系統(tǒng),有效提高監(jiān)測和管理業(yè)務(wù)系統(tǒng)的性能。該系統(tǒng)通過主機(jī)的管理信息庫(management information base,MIB)提供CPU、內(nèi)存、磁盤利用率等對象信息,通過WMIC 獲取以及控制Window 系統(tǒng)的設(shè)備進(jìn)程運行情況,對清算系統(tǒng)進(jìn)行監(jiān)測、分析,實現(xiàn)監(jiān)控、管理、告警,充分發(fā)揮技防的作用,實現(xiàn)對清算系統(tǒng)全天24小時不間斷跟蹤。
本系統(tǒng)采用基于Java 語言的C/S 架構(gòu)進(jìn)行系統(tǒng)搭建,能實時遠(yuǎn)程監(jiān)控連接在網(wǎng)絡(luò)上清算服務(wù)器、終端設(shè)備參數(shù)和運行狀態(tài),主要包括:CPU 利用率、內(nèi)存利用率、磁盤利用率、服務(wù)器和終端的進(jìn)程、服務(wù)器主備狀態(tài)及主備切換等[1]。系統(tǒng)通過多線程自動定期完成各設(shè)備的CPU 利用率、內(nèi)存空間、磁盤空間、進(jìn)程運行情況的原始數(shù)據(jù)收集、處理、存儲、顯示,實現(xiàn)監(jiān)控系統(tǒng)重要性能狀況,保證設(shè)備和連接容量不會被過度使用到不利影響的程度。系統(tǒng)主要分為性能數(shù)據(jù)采集模塊、性能數(shù)據(jù)分析處理模塊、終端顯示模塊、告警計算模塊和控制與管理模塊。性能數(shù)據(jù)采集模塊主要使用SNMP協(xié)議讀取設(shè)備的CPU、內(nèi)存、磁盤空間等原始數(shù)據(jù)以及使用WMIC 讀取各服務(wù)器及終端的服務(wù)進(jìn)程運行情況;性能數(shù)據(jù)分析處理模塊主要對收集到的原始數(shù)據(jù)進(jìn)行分類、過濾、計算;告警計算模塊主要對解析后數(shù)據(jù)進(jìn)行過濾、計算,根據(jù)用戶自定義的設(shè)備資源的利用率和進(jìn)程運行情況,設(shè)計相應(yīng)的閾值,并進(jìn)行告警計算后發(fā)出告警;控制與管理模塊對各服務(wù)器和終端的關(guān)機(jī)和重啟、進(jìn)程的關(guān)閉、打開和重啟。終端顯示模塊主要將數(shù)據(jù)信息、告警信息通過圖形化界面呈現(xiàn)出來,并提供有效的解決方案。系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
數(shù)據(jù)采集模塊設(shè)計是通過SNMP協(xié)議的采集方法實現(xiàn)。采集原理為基于SNMP 的GET 機(jī)制,結(jié)合標(biāo)準(zhǔn)的網(wǎng)絡(luò)管理信息庫(MIB),使用多線程技術(shù)固定時間按照被管設(shè)備的MIB 對象標(biāo)識發(fā)出SNMPGETNEXT 請求,等待消息回來,成功完成SNMP查詢操作[2],對返回的PDU進(jìn)行解碼獲取所需數(shù)據(jù),并將數(shù)據(jù)在自定義變量中依次查詢各項MIB 對象標(biāo)識,以此來獲取服務(wù)器或者主機(jī)的CPU 使用率、內(nèi)存、磁盤空間等原始信息,將這些信息存儲在自定義哈希表中?;赪MIC 命令,使用多線程技術(shù)固定時間獲取相關(guān)服務(wù)進(jìn)程運行情況(FIPSexport. exe、NewAirClearManagementSysDataParse. exe、 Data-ACQS.exe、DadaProc.exe)。其流程圖如圖2所示。
圖2 原始數(shù)據(jù)采集流程
性能數(shù)據(jù)分析處理模塊主要是接收主動采集返回的各類動態(tài)數(shù)據(jù),對各數(shù)據(jù)要素進(jìn)行分類、計算和服務(wù)器主備狀態(tài)判斷。本模塊可設(shè)置黑白名單,對黑名單的被管設(shè)備的數(shù)據(jù)進(jìn)行過濾丟棄不處理[3],對白名單的被管設(shè)備的CPU、內(nèi)存、硬盤數(shù)據(jù)項進(jìn)行計算、轉(zhuǎn)換成CPU 利用率、內(nèi)存利用率、硬盤利用率后發(fā)送至終端顯示模塊和告警計算模塊。其流程圖如圖3所示。
圖3 原始數(shù)據(jù)處理流程
本模塊還對清算服務(wù)器主備用狀態(tài)進(jìn)行判斷和監(jiān)測。程序首先定義1個局部變量Num,其含義為服務(wù)器進(jìn)程數(shù)量,檢測兩臺服務(wù)器是否存在進(jìn)程“NewAirClearManagementSysDataParse. exe”,如相關(guān)進(jìn)程存活,則Num數(shù)量加1,輸出時間及進(jìn)程狀態(tài)到日志,反之只輸出時間及進(jìn)程狀態(tài)到日志。當(dāng)服務(wù)器只有一個進(jìn)程N(yùn)ewAirClear-ManagementSysDataParse.exe 存在并且進(jìn)程狀態(tài)正確,說明清算服務(wù)器運行正常(即一臺服務(wù)器處于在線狀態(tài),另一臺處于離線狀態(tài)),正常狀態(tài)發(fā)送至監(jiān)控終端顯示,綠色底色代表服務(wù)器主用,黃色底色代表服務(wù)器備用,如圖4 所示。反之,則說明清算服務(wù)器運行狀態(tài)異常(兩臺均在線或離線狀態(tài)),異常狀態(tài)傳遞至告警計算模塊[4],其流程圖如5所示。
圖4 服務(wù)器主備狀態(tài)顯示
圖5 主備狀態(tài)判定流程
系統(tǒng)的告警計算模塊是對采集的數(shù)據(jù)進(jìn)行分類、計算,根據(jù)類別不同進(jìn)行相應(yīng)告警。告警計算模塊分為硬件資源模塊和軟件運行模塊。硬件資源告警模塊實現(xiàn)對CPU 利用率、內(nèi)存利用率、磁盤空間利用率異常指標(biāo)滿足告警計算后發(fā)出告警,如圖6所示。軟件運行模塊實現(xiàn)對各服務(wù)器、終端的進(jìn)程異常退出或者進(jìn)程占用率超出閾值后發(fā)出告警。告警計算是由線程觸發(fā)的,每個定時周期(5分鐘)性能數(shù)據(jù)分析處理后的性能指標(biāo)數(shù)據(jù)都會進(jìn)行告警計算、判斷。
圖6 主備狀態(tài)判定流程
告警設(shè)計流程分為告警檢測和告警恢復(fù)。通過告警檢測實現(xiàn)精準(zhǔn)反映設(shè)備故障;通過告警恢復(fù)可以進(jìn)行告警消除。告警檢測流程介紹如下:①判斷當(dāng)前指標(biāo)是否處于告警狀態(tài);②是則結(jié)束處理;③判斷是不是達(dá)到告警檢測次數(shù)變量;④沒有達(dá)到則告警檢測次數(shù)變量加1;⑤達(dá)到則發(fā)出告警信息,并且將狀態(tài)置為告警狀態(tài)。告警恢復(fù)流程介紹如下:①判斷當(dāng)前指標(biāo)是否處于恢復(fù)狀態(tài);②是則結(jié)束處理;③判斷是不是達(dá)到告警檢測次數(shù)變量;④沒有達(dá)到則結(jié)束處理;⑤達(dá)到則發(fā)出告警恢復(fù)信息,并且將狀態(tài)置為恢復(fù)狀態(tài)。
告警計算方法使用靜態(tài)閾值檢測方法。基于CPU 利用率屬于抖動類指標(biāo),當(dāng)性能計算指標(biāo)大于或者等于閾值,滿足檢測方法。設(shè)置告警檢測次數(shù)變量為3,告警檢測觸發(fā)條件是“3個采集周期滿足3 次檢測方法”,告警恢復(fù)檢測的觸發(fā)條件是“3 個周期少于3 次檢測算法”。滿足告警檢測觸發(fā)條件后系統(tǒng)自動聲音告警、紅色警示。其算法見算法1。
算法1CPU利用率告警算法
輸入:服務(wù)器或主機(jī)的CPU利用率
輸出:WarnList
初始化各利用率告警變量為0
通過各利用率達(dá)到預(yù)設(shè)閾值,告警檢測次數(shù)變量加1
循環(huán)檢測后續(xù)2個周期,forifrom 0 to 2
當(dāng)告警變量等于3,保存在Warnlist
當(dāng)告警變量小于3,告警變量重新置0
返回
基于磁盤空間利用率、設(shè)備內(nèi)存利用率、進(jìn)程是否退出、進(jìn)程占用內(nèi)存空間屬于非抖動類指標(biāo),設(shè)置告警檢測次數(shù)變量為1。當(dāng)性能計算指標(biāo)大于或者等于閾值,滿足檢測方法,系統(tǒng)自動聲音告警、紅色警示。其算法見算法2。
算法2內(nèi)存、磁盤空間利用率、進(jìn)程退出告警算法
輸入:內(nèi)存、磁盤空間利用率、進(jìn)程狀態(tài)
輸出:WarnList
初始化各利用率、進(jìn)程告警變量為0
通過各利用率達(dá)到預(yù)設(shè)閾值或者進(jìn)程不存在,告警檢測次數(shù)變量加1
保存在Warnlist
返回
控制與管理模塊是基于WMIC 指令實現(xiàn)對網(wǎng)絡(luò)中被管終端的進(jìn)程關(guān)閉或者啟動、主機(jī)的重啟、關(guān)機(jī)等[5],其控制人機(jī)界面如圖7 所示。監(jiān)控管理終端創(chuàng)建Telnet客戶端,與被管終端建立遠(yuǎn)程通信并確認(rèn)其工作狀態(tài),若被管終端在線,則向被管終端發(fā)送封裝好的控制指令(關(guān)機(jī)、主機(jī)重啟、進(jìn)程重啟、進(jìn)程關(guān)閉、主備切換),被管終端接收控制指令。當(dāng)控制指令執(zhí)行完后,監(jiān)控管理終端發(fā)送斷開通信連接的指令;若被管終端離線,則向監(jiān)控終端發(fā)出“被管終端無法建立遠(yuǎn)程連接”的告警提示,其工作原理如圖8所示。
圖7 控制人機(jī)界面
圖8 控制與管理示意圖
終端顯示模塊主要功能是單個清算設(shè)備狀態(tài)查詢,提交性能分析處理后的結(jié)果,并以圖形化方式顯示,便于查詢性能結(jié)果,如圖9 所示。顯示分為三類:第一類是實時監(jiān)控與顯示清算系統(tǒng)的指標(biāo),每個設(shè)備均有一個性能頁面,在性能頁面中展示設(shè)備的靜態(tài)信息:設(shè)備名稱、IP 地址、設(shè)備類型、當(dāng)前告警信息等,右鍵點擊設(shè)備圖標(biāo),彈出控制窗口,集成設(shè)備關(guān)機(jī)、設(shè)備重啟、進(jìn)程重啟、進(jìn)程關(guān)閉、進(jìn)程啟動等命令,同時在性能頁面可以查看當(dāng)前設(shè)備指標(biāo)情況(CPU、內(nèi)存、磁盤占用大小及利用率、進(jìn)程運行狀態(tài)),以柱狀圖顯示;第二類則是報表統(tǒng)計分析顯示,提供設(shè)備歷史性能、告警統(tǒng)計報表,報表可以展現(xiàn)出設(shè)備的當(dāng)前負(fù)載狀態(tài)、健康狀態(tài),如查詢過去某一時間段內(nèi)服務(wù)器的內(nèi)存利用率;第三類是異常參數(shù)實時報警,則以告警窗口顯示,告警信息直觀、易懂,以語音告警、紅色告警窗口呈現(xiàn)。
圖9 監(jiān)控人機(jī)界面
目前應(yīng)用系統(tǒng)監(jiān)控軟件比較多,跨平臺性和可移植性差,而且大多配置復(fù)雜。本文提出清算監(jiān)控管理系統(tǒng)的結(jié)構(gòu)簡單,可以滿足用戶的個性化需求,非常方便進(jìn)行系統(tǒng)部署和移植。對清算系統(tǒng)整體性能監(jiān)測,為實現(xiàn)對清算系統(tǒng)參數(shù)的性能調(diào)優(yōu)提供數(shù)據(jù)支持,判定清算系統(tǒng)的使用趨勢和分離出性能問題,利用跟蹤評價資源利用水平,從而發(fā)出性能出現(xiàn)的警示信息,告知設(shè)備監(jiān)控人員錯誤發(fā)生的程度,及時發(fā)現(xiàn)運行隱患,有助于在產(chǎn)生不利影響之前予以解決,有效防止問題嚴(yán)重化,保證網(wǎng)絡(luò)高效、穩(wěn)定、可靠地運行,提高工作效率。