青娉楚,盧淞巖,鄒 紅,姚 朋,陳 蘭
(四川省南充市氣象局,四川 南充 637000)
隨著信息技術(shù)在氣象現(xiàn)代化建設(shè)中的不斷推進(jìn),現(xiàn)代信息技術(shù)與氣象業(yè)務(wù)結(jié)合越來越緊密。氣象業(yè)務(wù)服務(wù)以及各類氣象數(shù)據(jù)傳輸,離不開信息網(wǎng)絡(luò)這個(gè)基礎(chǔ)平臺。就目前南充市氣象部門來說,國家自動(dòng)站、區(qū)域自動(dòng)氣象站所采集到的資料每5 min向上級部門傳輸一次;土壤水分站、農(nóng)田小氣候站、大氣成分站等資料每個(gè)整點(diǎn)上傳一次;雷達(dá)資料每完成一次掃描上傳一次;還涉及到各種預(yù)報(bào)資料、突發(fā)天氣情況預(yù)警信息的傳輸?shù)?。由于氣象資料傳輸具有較高的時(shí)效性要求,氣象信息網(wǎng)絡(luò)必須保持全天24 h通暢,在此運(yùn)行過程中難免會(huì)出現(xiàn)通信光纖被市政施工挖斷、突發(fā)雷擊故障、網(wǎng)絡(luò)設(shè)備老化等不可抗拒原因引起網(wǎng)絡(luò)中斷,導(dǎo)致氣象資料正常傳輸受到影響。南充市氣象廣域網(wǎng)路由器到省級、縣級的鏈路采用雙運(yùn)營商雙MSTP互為備份,如需維持各鏈路24 h運(yùn)行不中斷,就要求網(wǎng)絡(luò)管理人員全天候同時(shí)監(jiān)控的鏈路多達(dá)27條,如不借助技術(shù)手段,那么工作量極大,同時(shí)需要消耗大量的人力、物力資源。并且由于人力的局限性,難免會(huì)出現(xiàn)一時(shí)疏忽,不能保證當(dāng)網(wǎng)絡(luò)出現(xiàn)中斷故障時(shí),能夠第一時(shí)間發(fā)現(xiàn)并進(jìn)行處理維護(hù)。
南充市氣象信息網(wǎng)絡(luò)監(jiān)控系統(tǒng)的設(shè)計(jì),緊密圍繞氣象信息網(wǎng)絡(luò)的特有屬性,采用基于J2EE+MySQL+Android設(shè)備相配合等技術(shù)方法,對南充市氣象信息網(wǎng)絡(luò)進(jìn)行有效實(shí)時(shí)的監(jiān)控和管理,當(dāng)網(wǎng)絡(luò)中斷后,系統(tǒng)可將故障信息第一時(shí)間傳達(dá)到信息網(wǎng)絡(luò)管理人員,對氣象業(yè)務(wù)的運(yùn)行和發(fā)展有重大意義。
系統(tǒng)采用J2EE+MySQL+Android設(shè)備配合、Java編程語言等技術(shù)方法,其中J2EE實(shí)現(xiàn)業(yè)務(wù)邏輯組織并為業(yè)務(wù)數(shù)據(jù)提供遠(yuǎn)程查詢界面;MySQL提供系統(tǒng)數(shù)據(jù)存儲(chǔ);Android手機(jī)支撐網(wǎng)絡(luò)故障報(bào)警的實(shí)現(xiàn),服務(wù)器開發(fā)環(huán)境采用MySQL+Tomact方式。系統(tǒng)運(yùn)行在一臺服務(wù)器上,向多條鏈路對端路由器IP地址不斷發(fā)送ping命令,根據(jù)是否有掉包現(xiàn)象判斷相應(yīng)網(wǎng)絡(luò)鏈路的通暢情況。同時(shí),系統(tǒng)采用Browser/Server結(jié)構(gòu),使用Web界面作為系統(tǒng)管理平臺,系統(tǒng)管理人員在任意一臺計(jì)算機(jī)上都能使用瀏覽器進(jìn)入系統(tǒng)平臺管理查詢頁面,通過鏈路管理、監(jiān)控記錄、統(tǒng)計(jì)查詢、報(bào)警人員管理等4個(gè)主要模塊,實(shí)現(xiàn)鏈路監(jiān)控、鏈路增減、鏈路信息編輯、網(wǎng)絡(luò)中斷情況統(tǒng)計(jì)與查詢、管理人員編輯等操作。
系統(tǒng)主要實(shí)現(xiàn)以下功能:①自動(dòng)監(jiān)控市級到互聯(lián)網(wǎng)、市級到省級、市級到縣級的各條網(wǎng)絡(luò)鏈路的通斷情況;②監(jiān)控到任一鏈路斷開超過設(shè)定時(shí)間,自動(dòng)對系統(tǒng)設(shè)定的相關(guān)報(bào)警人員進(jìn)行電話和短信通知報(bào)警,鏈路恢復(fù)時(shí)發(fā)送恢復(fù)短信;③通過報(bào)警短信能看出具體是哪一條鏈路出現(xiàn)問題;④系統(tǒng)通過手機(jī)報(bào)警,即使互聯(lián)網(wǎng)斷開,也能將鏈路通斷故障信息第一時(shí)間傳送相關(guān)人員;⑤可同時(shí)通知多個(gè)報(bào)警人員;⑥系統(tǒng)管理員通過B/S模式,輸入用戶名密碼登錄系統(tǒng)管理頁面;⑦監(jiān)控記錄頁面可查詢對各鏈路斷開次數(shù)、每次持續(xù)時(shí)間的記錄信息;⑧在鏈路管理頁面對需要監(jiān)控的鏈路信息進(jìn)行編輯管理,并能通過操作實(shí)現(xiàn)鏈路的添加刪除;⑨在報(bào)警人員管理頁面對需要報(bào)警提醒的人員相關(guān)信息、報(bào)警通知電話號碼進(jìn)行編輯;⑩在統(tǒng)計(jì)查詢頁面能以故障發(fā)生時(shí)間或鏈路名稱等為條件,對網(wǎng)絡(luò)鏈路歷史中斷情況進(jìn)行統(tǒng)計(jì)查詢。
系統(tǒng)功能模塊圖描述如圖1所示,主要分為監(jiān)控模塊、報(bào)警模塊、系統(tǒng)Web界面等3大模塊。其中系統(tǒng)Web界面模塊作為系統(tǒng)管理平臺,主要包含鏈路管理、監(jiān)控記錄、統(tǒng)計(jì)查詢、報(bào)警人員管理等子模塊,實(shí)現(xiàn)管理查詢工作。
圖1 系統(tǒng)功能模塊圖Fig.1 The System Function Module Diagram
①監(jiān)控模塊:自動(dòng)監(jiān)控市級到互聯(lián)網(wǎng)、市級到省級、市級到縣級的電信移動(dòng)MSTP網(wǎng)絡(luò)的鏈路情況,是否發(fā)生中斷。
②報(bào)警模塊:當(dāng)發(fā)現(xiàn)有網(wǎng)絡(luò)鏈路中斷時(shí),自動(dòng)觸發(fā)Android手機(jī)對指定人員進(jìn)行電話和短信報(bào)警;鏈路恢復(fù)時(shí),觸發(fā)Android手機(jī)發(fā)送恢復(fù)短信,并將中斷情況記錄在數(shù)據(jù)庫中。
③系統(tǒng)Web界面模塊:系統(tǒng)管理員在任意一臺電腦輸入地址即可訪問系統(tǒng)平臺,輸入用戶名密碼進(jìn)入系統(tǒng)界面后,通過對鏈路管理、監(jiān)控記錄、統(tǒng)計(jì)查詢、報(bào)警人員管理4個(gè)主要頁面的操作,實(shí)現(xiàn)系統(tǒng)管理、查詢等相關(guān)工作。其中鏈路管理部分,能夠?qū)崿F(xiàn)對鏈路的添加、刪除,可對鏈路名稱、鏈路對端IP地址、是否進(jìn)行監(jiān)控等屬性進(jìn)行編輯管理,還可實(shí)時(shí)查看鏈路狀態(tài)。監(jiān)控記錄部分,通過頁面可以訪問系統(tǒng)數(shù)據(jù)庫,能查閱所有網(wǎng)絡(luò)鏈路中斷記錄。統(tǒng)計(jì)查詢部分,實(shí)現(xiàn)以鏈路名稱、鏈路IP地址、查詢時(shí)間等作為限定條件對數(shù)據(jù)庫進(jìn)行訪問,對數(shù)據(jù)庫中所記錄的各條網(wǎng)絡(luò)鏈路中斷故障情況實(shí)現(xiàn)統(tǒng)計(jì)查詢。報(bào)警人員管理部分,實(shí)現(xiàn)在頁面中增加刪除、添加等操作,協(xié)助需要報(bào)警提醒人員的設(shè)置,還可以管理及編輯報(bào)警人員的相關(guān)信息,如電話、姓名等,并根據(jù)人員值班情況調(diào)整是否報(bào)警。
圖2為系統(tǒng)監(jiān)控與報(bào)警功能實(shí)現(xiàn)的一個(gè)簡略流程。
圖2 自動(dòng)監(jiān)控與報(bào)警功能流程圖Fig.2 The Flow Chart of Automatic Monitoring and Alarm Function
系統(tǒng)每單位時(shí)間自動(dòng)向指定網(wǎng)絡(luò)鏈路對端路由器IP地址發(fā)送ping命令進(jìn)行輪詢:
①當(dāng)程序判斷出某條網(wǎng)絡(luò)鏈路中斷時(shí),繼續(xù)判斷該鏈路之前的狀態(tài)是否為中斷,如果是,則繼續(xù)輪詢;如果不是,則觸發(fā)Android手機(jī)程序進(jìn)行電話和短信報(bào)警,然后再繼續(xù)鏈路輪詢。
②當(dāng)程序判斷出某條網(wǎng)絡(luò)鏈路是正常傳輸時(shí),繼續(xù)判斷該鏈路之前的狀態(tài)是否為中斷,如果不是,繼續(xù)輪詢;如果是,則觸發(fā)Android手機(jī)程序發(fā)送恢復(fù)短信,然后再繼續(xù)輪詢。
系統(tǒng)選用MySQL關(guān)系型數(shù)據(jù)庫管理系統(tǒng),建立一個(gè)穩(wěn)定的后臺數(shù)據(jù)庫,通過該數(shù)據(jù)庫管理整個(gè)網(wǎng)絡(luò)自動(dòng)監(jiān)控與報(bào)警系統(tǒng)所需的信息。針對需求,設(shè)計(jì)的主要數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)如下所示:
①系統(tǒng)管理員信息,包括的數(shù)據(jù)項(xiàng)有:用戶名、密碼等。
②網(wǎng)絡(luò)鏈路信息,包括的數(shù)據(jù)項(xiàng)有:鏈路對端路由器IP、鏈路名、鏈路狀態(tài)、是否進(jìn)行監(jiān)控等。
③鏈路中斷故障記錄信息,包括的數(shù)據(jù)項(xiàng)有:故障編號、鏈路對端路由器IP、鏈路名稱、故障開始時(shí)間等。
④報(bào)警人員信息,即需要進(jìn)行報(bào)警提醒的人員信息,包括的數(shù)據(jù)項(xiàng)有:編碼、網(wǎng)管姓名、電話號碼、是否通知等。
2.1.1 網(wǎng)絡(luò)監(jiān)控時(shí)效性控制 為保障各項(xiàng)氣象業(yè)務(wù)正常運(yùn)行,氣象網(wǎng)絡(luò)必須要滿足各種氣象資料的傳輸時(shí)效性要求。系統(tǒng)利用“cron表達(dá)式”設(shè)置定時(shí)任務(wù),在項(xiàng)目文件src/job.properties中,用cron=0 0/2***設(shè)置鏈路每2 min輪詢一次,符合當(dāng)前氣象數(shù)據(jù)傳輸需求。如以后氣象數(shù)據(jù)傳輸需求發(fā)生變化,可隨時(shí)通過對cron表達(dá)式進(jìn)行更改,從而調(diào)整鏈路輪詢觸發(fā)的單位時(shí)間。
2.1.2 網(wǎng)絡(luò)監(jiān)控、報(bào)警模塊的實(shí)現(xiàn) 由于在網(wǎng)絡(luò)運(yùn)行過程中,難免有偶爾傳輸不穩(wěn)定情況,如果ping某條鏈路只要丟包,就立馬進(jìn)行鏈路斷線報(bào)警,很大概率會(huì)出現(xiàn)誤報(bào)。故系統(tǒng)采取的方式為:對指定鏈路對端路由器IP地址進(jìn)行ping命令輪詢時(shí),每次ping對每條鏈路發(fā)送3個(gè)包給鏈路對端IP地址,3個(gè)包只要有1個(gè)包返回,都不算這次ping的過程有掉包,只有返回的包個(gè)數(shù)為零時(shí)才算作該鏈路這次ping的過程為掉包,當(dāng)鏈路兩次輪詢都是掉包時(shí),認(rèn)定為鏈路中斷。按照目前的設(shè)置,相當(dāng)于該鏈路斷線達(dá)到4 min才會(huì)進(jìn)行報(bào)警。
從實(shí)際運(yùn)行操作來考慮,系統(tǒng)不可能每次認(rèn)定鏈路中斷都進(jìn)行報(bào)警,即不可能在已知鏈路本身已經(jīng)中斷的情況下,每4 min都報(bào)警一次。因此,在系統(tǒng)輪詢判斷某一條鏈路為中斷時(shí),會(huì)查看鏈路的前一狀態(tài),如前一狀態(tài)為正常運(yùn)行,那么系統(tǒng)才會(huì)觸發(fā)電話與短信報(bào)警;相應(yīng)的,當(dāng)系統(tǒng)監(jiān)控到鏈路狀態(tài)恢復(fù)正常時(shí),也會(huì)對該鏈路前一狀態(tài)進(jìn)行判斷,若前一狀態(tài)為中斷,那么觸發(fā)鏈路恢復(fù)短信的發(fā)送。
圖3為網(wǎng)絡(luò)監(jiān)控與報(bào)警模塊實(shí)現(xiàn)流程圖。從流程圖可以看出,當(dāng)監(jiān)控系統(tǒng)正常運(yùn)行,從數(shù)據(jù)庫中獲取各條需要監(jiān)控的鏈路后,向它們發(fā)送ping命令。
圖3 網(wǎng)絡(luò)監(jiān)控與報(bào)警模塊流程圖Fig.3 The Flow Chart of Network Monitoring and Alarm Module
聲明變量count,獲取host網(wǎng)絡(luò)鏈路信息表中的鏈路狀態(tài)HostStatus為count賦值。當(dāng)系統(tǒng)輪詢到某條鏈路正常時(shí),若count=2,那么說明鏈路之前為斷線,通過host表中獲取到的鏈路信息,編輯恢復(fù)短信,向manager報(bào)警人員信息表中需要提醒的報(bào)警人員發(fā)送恢復(fù)短信,并將鏈路狀態(tài)賦值為0,若HostStatus為空,也將其賦值為0,系統(tǒng)繼續(xù)輪詢。
當(dāng)?shù)?次輪詢到某條鏈路為掉包時(shí),此時(shí)獲取到的鏈路狀態(tài)HostStatus給count賦值為0,說明鏈路之前狀態(tài)是通的,這是第1次斷線。把當(dāng)前故障及時(shí)間記錄到pingrecord鏈路中斷故障記錄表中,同時(shí)host表中的HostStatus記為1,系統(tǒng)繼續(xù)輪詢。
當(dāng)?shù)?次輪詢到某條鏈路為掉包時(shí),通過獲取此時(shí)鏈路狀態(tài)HostStatus給count賦值為1,得知該鏈路上一次輪詢也為掉包,那么認(rèn)定為該鏈路中斷,將host表中的HostStatus記為2,向需要提醒的網(wǎng)管人員發(fā)送電話和短信報(bào)警提醒,并編輯報(bào)警短信,指明中斷鏈路,系統(tǒng)繼續(xù)輪詢。
當(dāng)再次輪詢到某條鏈路為掉包時(shí),通過獲取此時(shí)鏈路狀態(tài)HostStatus給count賦值為2,得知該鏈路已發(fā)送過報(bào)警短信,不改變鏈路狀態(tài)值,系統(tǒng)繼續(xù)輪詢。
2.1.3 Android設(shè)備報(bào)警實(shí)現(xiàn) 由于系統(tǒng)承擔(dān)著對互聯(lián)網(wǎng)的監(jiān)控任務(wù),故系統(tǒng)未采用微信或網(wǎng)絡(luò)電話報(bào)警方式。要使系統(tǒng)在互聯(lián)網(wǎng)中斷時(shí),也能完成網(wǎng)絡(luò)中斷報(bào)警任務(wù),故系統(tǒng)采取手機(jī)短信和電話報(bào)警。
要實(shí)現(xiàn)Android設(shè)備的自動(dòng)報(bào)警功能,首先在設(shè)備上安裝Android手機(jī)APP:PhoneHelper,這是基于Android并用Java作為主要編程語言編寫的APP。
Android設(shè)備上的程序除了從設(shè)備界面手動(dòng)點(diǎn)開進(jìn)行啟動(dòng)之外,還可以命令行的方式啟動(dòng)程序。通過這種方式,能讓系統(tǒng)在監(jiān)測到網(wǎng)絡(luò)鏈路斷線或恢復(fù)時(shí)自動(dòng)觸發(fā)PhoneHelper程序。首先需要用數(shù)據(jù)線把手機(jī)和計(jì)算機(jī)連接起來,然后借助ADB工具連接Android設(shè)備進(jìn)行調(diào)試,使用命令行工具am來啟動(dòng):adb shell am start-n{包(package)名}/{包名}.{活動(dòng)(activity)名稱}。系統(tǒng)運(yùn)行時(shí),要保持Android手機(jī)一直連接在服務(wù)器USB口,才能實(shí)現(xiàn)由系統(tǒng)觸發(fā)手機(jī)APP進(jìn)行電話和短信的通知報(bào)警。
由于在實(shí)際運(yùn)行過程中發(fā)現(xiàn),如手機(jī)在休眠鎖屏?xí)r,通過上述命令沒法自動(dòng)啟動(dòng)PhoneHelper程序,故在觸發(fā)手機(jī)APP前,會(huì)對手機(jī)屏幕進(jìn)行點(diǎn)亮喚醒的操作。示例如下:
if (System.currentTimeMillis()-lastCmdTime>120*1 000){Runtime.getRuntime().exec(String.format("%s shell input keyevent 26",ADB));}
在實(shí)際運(yùn)行時(shí)還發(fā)現(xiàn),當(dāng)多條鏈路同時(shí)中斷時(shí),由于程序執(zhí)行速度遠(yuǎn)遠(yuǎn)快于程序撥打電話號碼的速度,即第1條鏈路的報(bào)警電話撥打還未斷線時(shí),第2條鏈路的報(bào)警電話又開始啟動(dòng)撥打,故撥打電話可能出現(xiàn)沖突,所以在系統(tǒng)中,當(dāng)遇到多條鏈路斷線時(shí),為了避免沖突,默認(rèn)為1 min撥打1次報(bào)警電話。
2.1.4 報(bào)警形式 若監(jiān)控到網(wǎng)絡(luò)鏈路中斷時(shí),一方面用電話報(bào)警的方式讓網(wǎng)管人員能夠第一時(shí)間發(fā)現(xiàn)網(wǎng)絡(luò)故障,及時(shí)進(jìn)行處理避免影響氣象資料的傳輸時(shí)效性和完整性;另一方面還編輯短信詳細(xì)告知是哪一條鏈路出現(xiàn)故障,便于網(wǎng)管人員盡快找準(zhǔn)處理方向,及時(shí)查找問題,有效節(jié)約網(wǎng)絡(luò)故障處理時(shí)間。
同時(shí),為了節(jié)約人力資源,避免不必要的資源浪費(fèi),當(dāng)系統(tǒng)監(jiān)控監(jiān)控到網(wǎng)絡(luò)鏈路恢復(fù)時(shí),發(fā)送鏈路恢復(fù)短信報(bào)警。短信報(bào)警內(nèi)容如圖4所示。
圖4 系統(tǒng)報(bào)警短信Fig.4 The Alarm Message of System
由鏈路報(bào)警短信“Link to[鏈路名稱],IP[鏈路對端IP地址]went down.”可以清晰明確地看出具體是哪一條或哪幾條鏈路出現(xiàn)鏈路中斷,并且顯示鏈路對端IP地址。
由鏈路恢復(fù)短信“Link to[鏈路名稱],IP[鏈路對端IP地址]come back.”同樣可以清晰明確地看出具體是哪一條或哪幾條鏈路已經(jīng)恢復(fù)正常,并且顯示鏈路對端IP地址。
在任意一臺電腦的瀏覽器地址欄輸入:http://服務(wù)器IP地址:8080/jfinal/login,即可進(jìn)入系統(tǒng)登錄界面,輸入系統(tǒng)管理員用戶名、密碼進(jìn)入平臺首頁。菜單欄顯示有鏈路管理、監(jiān)控記錄、統(tǒng)計(jì)查詢、報(bào)警人員管理4個(gè)主要功能,通過這些主要功能頁面實(shí)現(xiàn)鏈路監(jiān)控、鏈路增減、鏈路信息編輯、網(wǎng)絡(luò)中斷情況統(tǒng)計(jì)與查詢、管理人員編輯等操作。
圖5所示為每次鏈路中斷故障的記錄顯示,包括每次故障的開始時(shí)間,最后一次未ping通時(shí)間和故障持續(xù)時(shí)間。
圖5 監(jiān)控記錄Fig.5 The Monitoring Records
圖6所示為統(tǒng)計(jì)查詢頁面,默認(rèn)顯示的是對不同鏈路的中斷故障記錄進(jìn)行匯總統(tǒng)計(jì)的情況,一個(gè)對端IP地址產(chǎn)生一條信息。統(tǒng)計(jì)要素包括中斷次數(shù)、中斷總時(shí)間、每次中斷持續(xù)平均時(shí)間。
圖6 統(tǒng)計(jì)查詢Fig.6 The Statistical and Query
同時(shí),也可對鏈路故障的統(tǒng)計(jì)情況進(jìn)行查詢。如指定對端IP地址點(diǎn)擊查詢,那么頁面就會(huì)顯示鏈路對端為該IP地址對應(yīng)鏈路的中斷次數(shù)、中斷總時(shí)間、每次中斷持續(xù)平均時(shí)間;如指定鏈路名稱點(diǎn)擊查詢,那么頁面會(huì)顯示該名稱鏈路的中斷次數(shù)、中斷總時(shí)間、每次中斷持續(xù)平均時(shí)間;或者也可以分別選定起始時(shí)間和結(jié)束時(shí)間,指定時(shí)間段查看各鏈路中斷情況的統(tǒng)計(jì)數(shù)據(jù)。
經(jīng)過一年半的業(yè)務(wù)應(yīng)用,系統(tǒng)共準(zhǔn)確監(jiān)測并及時(shí)提供南充市氣象信息網(wǎng)絡(luò)斷線報(bào)警23次,報(bào)警和恢復(fù)短信電話均有效實(shí)時(shí)地傳達(dá)到信息網(wǎng)絡(luò)管理人員,使相關(guān)工作人員及時(shí)響應(yīng),在盡快時(shí)間內(nèi)處理網(wǎng)絡(luò)故障,為氣象資料傳輸?shù)募皶r(shí)和完整提供了有效保障。
南充市氣象信息網(wǎng)絡(luò)自動(dòng)監(jiān)控與報(bào)警系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),為氣象資料傳輸?shù)募皶r(shí)性和完整性提供了有效保障。系統(tǒng)可適時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)鏈路故障,對網(wǎng)絡(luò)進(jìn)行有效實(shí)時(shí)的監(jiān)控和管理,當(dāng)網(wǎng)絡(luò)出現(xiàn)問題時(shí),可將故障信息第一時(shí)間傳達(dá)到需要通知維護(hù)網(wǎng)絡(luò)的報(bào)警人員,便于及時(shí)準(zhǔn)確地處理與查找問題;故障恢復(fù)后可發(fā)送恢復(fù)短信提醒,避免不必要的人力財(cái)力資源浪費(fèi),使市級氣象部門的網(wǎng)絡(luò)監(jiān)控與維護(hù)向更加高效集約和智能智慧的方向發(fā)展,對南充市氣象業(yè)務(wù)服務(wù)的運(yùn)行和發(fā)展有重大意義。