安衛(wèi)士,張?jiān)票耄况?,胡永?/p>
(浙江省氣象信息網(wǎng)絡(luò)中心,杭州310000)
隨著氣象觀測技術(shù)的不斷發(fā)展,氣象數(shù)據(jù)種類不斷增多、傳輸方式多種多樣、時(shí)效要求越來越高。CMACast[1]即中國氣象新一代衛(wèi)星數(shù)據(jù)廣播系統(tǒng),它整合了原有的PCVSAT[2]、DVB-S[3]和FENGYUNCast[4]三套衛(wèi)星數(shù)據(jù)廣播業(yè)務(wù)系統(tǒng),實(shí)現(xiàn)各類氣象觀測數(shù)據(jù)及其他資源的統(tǒng)一管理,國內(nèi)國際小站數(shù)據(jù)的整合下發(fā),提高了氣象觀測數(shù)據(jù)傳輸時(shí)效性、穩(wěn)定性。衛(wèi)星數(shù)據(jù)廣播系統(tǒng)的信號傳輸容易受到極端惡劣天氣的影響,如大雪、冰雹、大霧等,數(shù)據(jù)下發(fā)過程中信噪比降低,大量丟包,造成數(shù)據(jù)接收不全甚至無法接收數(shù)據(jù)。本文從業(yè)務(wù)系統(tǒng)運(yùn)維人員角度出發(fā),基于C#設(shè)計(jì)CMACast系統(tǒng)可視化[5]自動告警系統(tǒng),及時(shí)通知業(yè)務(wù)值班人員對出現(xiàn)的問題進(jìn)行處理,保證氣象數(shù)據(jù)的完整性,提高數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
系統(tǒng)基于C#[6]編寫,借助CMACast 系統(tǒng)自帶日志文件及狀態(tài)文件,分析日志文件和狀態(tài)文件,判斷CMACast 系統(tǒng)是否出現(xiàn)信號失鎖、無文件接收、丟包、積壓等問題,通過短信告警方式通知業(yè)務(wù)值班人員,并將本次告警內(nèi)容寫入日志文件,方便以后查詢。
程序一:系統(tǒng)整體思路
系統(tǒng)流程圖如圖1 所示,程序首先讀取系統(tǒng)配置文件,主要內(nèi)容包括CMACast 日志文件位置、告警電話發(fā)送號碼、告警時(shí)間間隔、掃描時(shí)間間隔、文件積壓的閾值;將日志文件下載到本地,分析日志文件內(nèi)容,確定信號傳輸情況,如果信號失鎖則直接發(fā)出告警短信,進(jìn)而判斷是否有文件接收,若無也發(fā)送告警短信,若接收文件有積壓,向值班人員發(fā)送告警短信,若都正常則此次程序運(yùn)行結(jié)束,經(jīng)過一個(gè)掃描時(shí)間后進(jìn)行第二次檢查。
圖1 系統(tǒng)流程圖
系統(tǒng)主要參數(shù)及其意義如表1 所示。
表1
系統(tǒng)主要參數(shù)有兩種配置方式:修改系統(tǒng)配置文件App.config,重啟程序;在可視化界面上進(jìn)行修改,修改之后點(diǎn)擊“開始監(jiān)控”按鈕,系統(tǒng)會重新讀取參數(shù)配置。
主要思路如程序二所示,首先根據(jù)系統(tǒng)參數(shù),計(jì)算當(dāng)前檢測周期的最早時(shí)間LowTime:當(dāng)前時(shí)間減去掃描時(shí)間,報(bào)警閾值bound=Alerttime*20;解析CMACast系統(tǒng)日志文件,文件記錄格式如下:2020-0311004934025-[mediarecv.cpp 7650]:No data decode last 2 second,20200311004934025 為該條記錄的時(shí)間戳(世界時(shí)),取時(shí)間戳的前12 位,存放到List
程序二:失鎖檢查函數(shù)
主要思路如程序三所示,首先根據(jù)系統(tǒng)參數(shù),計(jì)算當(dāng)前檢測周期的最早時(shí)間LowTime:當(dāng)前時(shí)間減去掃描時(shí)間,報(bào)警閾值bound=Alerttime*20;解析CMACast系統(tǒng)日志文件,文件記錄格式為:04:20:09 18748 RADA_BENJ/DOR/Z9250 Z_RADR_I_Z9250_202001150-41800_P_DOR_SA_R_20_460_5.250.bin,04:20:09 為該條記錄的時(shí)間戳(世界時(shí)),將其存放到List
程序三:文件接收檢查
文件積壓主要是因?yàn)槲募邮者^程中,接收到的文件未轉(zhuǎn)到指定的存儲地址,造成系統(tǒng)目錄下文件積壓,積壓嚴(yán)重時(shí)將導(dǎo)致系統(tǒng)無法接收新的文件,造成數(shù)據(jù)丟失。主要實(shí)現(xiàn)思路為:遍歷系統(tǒng)指定文件目錄,讀取對應(yīng)目錄下文件個(gè)數(shù),若文件個(gè)數(shù)大于設(shè)定閾值,則發(fā)出文件積壓告警,否則不告警。關(guān)鍵代碼如下:int fileNum=ftpHelp.GetDirFileNum(Ldir+filename+"/");獲取當(dāng)前目錄下文件個(gè)數(shù)。
告警信息分為三類:衛(wèi)星信號失鎖、無數(shù)據(jù)接收、數(shù)據(jù)丟失嚴(yán)重、文件積壓。主要實(shí)現(xiàn)思路為:根據(jù)自動告警算法對衛(wèi)星數(shù)據(jù)接收系統(tǒng)日志進(jìn)行分析判斷,若文件接收出現(xiàn)異常,調(diào)用移動云平臺[7]信息發(fā)送接口將告警短信發(fā)送到值班手機(jī)。首先,根據(jù)檢查程序,檢測文件接收系統(tǒng)是否正常,若異常生成告警信息,通過自動化生成SQL 語句,將告警信息插入到移動云平臺數(shù)據(jù)庫中,調(diào)用信息發(fā)送模塊將信息發(fā)送到指定的接收號碼。
系統(tǒng)部署在Windows Server 2012R2 的虛擬機(jī)上,程序設(shè)置為開機(jī)自啟動。當(dāng)CMACast 系統(tǒng)文件接收異常時(shí),發(fā)出告警短信,提醒業(yè)務(wù)值班人員檢查處理。系統(tǒng)自部署后,運(yùn)行良好,多次及時(shí)發(fā)現(xiàn)CMACast 系統(tǒng)文件接收問題,及時(shí)通知值班業(yè)務(wù)人員,保證了文件接收的完整性,為氣象預(yù)測提供了數(shù)據(jù)支持。圖中顯示3月11 號和12 號中午出現(xiàn)信號失鎖以及數(shù)據(jù)丟失情況,經(jīng)與中國氣象局聯(lián)系發(fā)現(xiàn)原因是每天中午受日棱影響,出現(xiàn)2-8 分鐘短暫失鎖,之后又自動恢復(fù)。
圖2 告警信息及日志記錄
基于C#編寫的CMACast 告警系統(tǒng)上線部署后運(yùn)行情況良好,可視化配置功能實(shí)現(xiàn)根據(jù)業(yè)務(wù)實(shí)際動態(tài)更改系統(tǒng)參數(shù),實(shí)時(shí)監(jiān)控CMACast 系統(tǒng)文件接收情況,發(fā)現(xiàn)文件接收異常自動告知業(yè)務(wù)值班人員,大大的減
避免了因系統(tǒng)故障發(fā)現(xiàn)不及時(shí),造成氣象觀測數(shù)據(jù)接收不完整、數(shù)據(jù)零接收的情況,提高了CMACast 系統(tǒng)文件接收的完整性和穩(wěn)定性,使得預(yù)報(bào)員可以得到完整的氣象觀測數(shù)據(jù),一定程度上提高了工作效率和天氣預(yù)測的準(zhǔn)確率。