胥志強,何國平,唐 蜜,曾 元
(1.四川省雅安市氣象局,四川 雅安 625000;2.四川省攀枝花市氣象局,四川 攀枝花 617000)
隨著氣象業務現代化的發展,越來越多的氣象監測設備和網絡設備需要進行實時監測運行狀態。僅雅安市氣象部門自動氣象站就多達200余個,MSTP專線28條,2018年還建成了多普勒天氣雷達1部,這些設備的數據傳輸情況和網絡設備運行情況都需要隨時監視,發現故障要及時通知維護人員處理。目前監控工作還存在一些不足之處:一是氣象設備、網絡故障需要人工來發現,對監測值班人員的依賴性較大;二是發現故障不及時,時效性低;三是發現故障后通知手段僅要靠值班人員打電話;四是故障登記靠人工。目前針對氣象行業設備狀態監測報警軟件較少,尤其是隨著氣象觀測無人化、自動化的發展,對設備穩定運行有了更高要求。因此亟需開發一個集故障監測、報警、日志記錄于一體的自動化軟件,提升業務設備監控報警能力。
釘釘監測報警機器人主要由設備狀態收集、異常判斷、信息發送和日志記錄4部分組成(圖1)。整個系統流程為:軟件定時按照不同設備采用不同的方法來收集狀態信息,收集到各類設備狀態信息后進行異常判斷,并生成報警信息,再用釘釘機器人將報警信息發送到相關的釘釘群提示維護人員,最后進行日志記錄。軟件運行在氣象廣域網任意服務器,出現報警信息第一時間通過互聯網發送到維護人員電腦和手機釘釘客戶端。

圖1 監測報警機器人邏輯關系圖
各類氣象設備和網絡運行狀態信息要根據設備類型進行分類采集。例如多普勒天氣雷達的運行情況通過讀取最新生成的雷達基數據文件列表來反映,正常情況下雷達數據應為每6 min生成一個新的基數據體掃文件,如果超過12 min未檢測到新的雷達基數據文件或雷達主機無法連接,則生成雷達異常報警信息。對于氣象站點的狀態則通過查詢各站點數據數據庫寫入狀態進行判斷,若各站點當前小時數據未及時入庫則生成站點未到報的信息。而網絡鏈路狀態則通過Telnet協議讀取核心路由器中省—市—縣各鏈路OSPF路由鄰居狀態來進行判斷,當出現網絡異常或中斷則生成網絡告警信息。
在狀態采集和故障判斷中做到信息精確,如自動站數據異常精確到臺站,網絡告警信息精確到具體鏈路名稱。報警信息生成后,交給釘釘機器人報警模塊進行處理。
目前阿里釘釘開放了機器人API接口,可以在釘釘群進行消息發送。本軟件正是利用了釘釘的開放接口將設備和網絡報警信息通過API接口進行消息發送。
調用釘釘接口發送信息要遵循以下規則:采用HTTPS協議、發送內容為JSON數據格式、采用UTF-8編碼,采用POST方式向接口提交請求,實現過程如下。
首先在要發送信息的釘釘群里創建自定義機器人,獲取唯一的Webhook地址,在釘釘API接口中加上Webhook地址,就可以在指定的群內發送消息,為了保證消息的安全性,可以添加IP地址、關鍵字等進行發送規則限制。機器人創建成功后可以使用Postman等工具進行信息發送測試。
然后利用Visual studio或Python等開發環境編寫一個發送信息的類庫或動態鏈接庫(DLL)文件,用于報警信息的發送。其主要功能是實現報警信息按照釘釘API接口的規則提交POST請求,并將發送結果返回。向釘釘API接口提交的規則如下:一是請求方式為POST;二是請求地址為釘釘接口地址加上Webhook地址;三是請求包體包括發送內容和提示人員列表。釘釘機器人支持發送的消息類型豐富,主要有文本消息(text)、鏈接(Link)和文檔快速排版(markdown)等6種類型的消息,本軟件主要發送的是文本消息,使用者還可以根據自己的需求選擇不同的消息類型。本軟件中釘釘發送消息使用了C#語言編寫了以下兩個方法來實現:
一是向釘釘接口提交POST請求方法:public String Request(string url, string data, string reqtype)
第1個參數url為釘釘API接口地址,第2個data參數為json格式的報警內容,第3個參數為請求方式參數(POST或GET)。
二是生成文本消息(text)報警的方法:public static string OapiRobotText(string content, List
第1個參數為報警內容,第2個參數為提醒人員列表,第3個參數為是否提醒所有人,傳出參數為JSON格式的報警包體,該方法生成包體后調用Request方法提交請求,實現消息的發送。
將異常信息進行報警后,要進行日志記錄。通常可以采用數據庫或文本文件進行日志記錄。為了避免信息發送過于頻繁,每種報警信息可以根據業務具體要求或緊急程度設定不同頻度的檢測和報警。通過日志的記錄檢索可以避免信息的重復發送。本程序中因日志記錄數據量不大,采用按設備類別每天生成一個文本日志文件,方便管理者后期查詢。
目前該軟件在雅安市氣象部門投入業務運行(圖2),監測了本部門自動氣象站、省市縣MSTP專線和多普勒天氣雷達等設備,這些設備的數據傳輸和網絡設備出現異常情況都通過釘釘客戶端進行了及時報警,軟件還可根據業務規定的時效不同,設置監測和發送信息的頻度,從應用至今,發現雷達故障的時效從過去的平均2 h提升到現在的12 min,MSTP專線發現中斷從過去的平均6 h到現在的分鐘級,自動氣象站數量多則每天發送一次缺報信息,大大地縮短了處理故障的時間。

圖2 釘釘機器人監測報警控制器程序界面
本文基于Visual studio平臺和釘釘機器人開放接口開發出的釘釘監測報警機器人軟件,集設備狀態監測、異常判斷、報警信息發送和日志記錄功能為一體,自動化程度高,極大的提高了維護人員發現問題的時效。隨著氣象業務的發展,氣象設備的穩定運行越來越重要,監測報警自動化是今后的發展方向,在設備和網絡監測中還有可挖掘的空間,例如監測到氣象站點的各要素、雷達產品可用性等。另外,釘釘機器人還可根據業務需求在氣象服務產品發布、災害性天氣監測、雨情報警、數據質量控制等氣象業務中進一步拓展,應用范圍廣泛。