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