張彩云
(內(nèi)蒙古自治區(qū)氣象信息中心,內(nèi)蒙古 呼和浩特 010050)
2018年內(nèi)蒙古作為全國試點省之一,率先完成了天鏡省級通用版本基礎(chǔ)平臺的部署工作,并開展了試運行。天鏡·內(nèi)蒙古按照全國氣象業(yè)務(wù)監(jiān)控信息管理標準規(guī)范,建成全流程、一體化、可視化、開放的氣象綜合業(yè)務(wù)實時監(jiān)控系統(tǒng),提高了集約化后的氣象業(yè)務(wù)運行質(zhì)量與效率;支持自治區(qū)級資源池、網(wǎng)絡(luò)平臺、安全系統(tǒng)、機房場地環(huán)境監(jiān)控系統(tǒng),實現(xiàn)了統(tǒng)一監(jiān)控管理;以監(jiān)控告警為核心,運維流程為驅(qū)動,打造了一個集數(shù)據(jù)采集、收集、加工處理、存儲服務(wù)、分析應(yīng)用、告警分析、運維流程、知識分享為一體的監(jiān)控告警平臺,對自治區(qū)、盟市、旗縣(臺站)觀測數(shù)據(jù)時效進行監(jiān)控和告警,協(xié)助維護人員進行傳輸和應(yīng)用環(huán)節(jié)等節(jié)點的統(tǒng)一管理。通過天鏡平臺實現(xiàn)了對數(shù)據(jù)全流程、核心業(yè)務(wù)系統(tǒng)、基礎(chǔ)設(shè)施資源池、網(wǎng)絡(luò)、機房環(huán)境等的綜合監(jiān)視與集中告警。伴隨移動互聯(lián)網(wǎng)、手機App應(yīng)用的迅速發(fā)展,移動客戶端的使用數(shù)據(jù)量正在超越PC端,無論是工作還是生活都給用戶帶來了便攜性和及時性。隨著氣象信息化、現(xiàn)代化的不斷發(fā)展,目前內(nèi)蒙古自治區(qū)氣象局在移動應(yīng)用端的開發(fā)已有一定的成果,如:為保障第十四屆冬季運動會開發(fā)的“冬運會賽場氣象信息”小程序,為全區(qū)觀測業(yè)務(wù)及管理人員提供氣象傳輸故障告警信息的“傳輸寶”,提供數(shù)據(jù)疑誤信息的“數(shù)據(jù)寶”,提供氣象觀測設(shè)備運行監(jiān)控信息的“觀測寶”等。這些移動端應(yīng)用均為全區(qū)各級氣象工作者提供了及時、準確的信息,讓各業(yè)務(wù)人員能夠“隨時、隨地”的掌握數(shù)據(jù)及設(shè)備的實時運行情況。
目前各移動端獨立運行,各自維護一套用戶信息,而且用戶需要分別關(guān)注,才能收到各應(yīng)用的推送信息,為了減輕管理人員和業(yè)務(wù)人員的工作量,筆者研究通過微信企業(yè)號,實現(xiàn)多個移動端的整合。
研究目的包括統(tǒng)一發(fā)布渠道、統(tǒng)一用戶管理、統(tǒng)一應(yīng)用管理、集中告警管理4個部分。
統(tǒng)一發(fā)布渠道:注冊、認證后創(chuàng)建天鏡·內(nèi)蒙古移動端,建立天鏡·內(nèi)蒙古微信企業(yè)號統(tǒng)一發(fā)布渠道,實現(xiàn)對現(xiàn)有移動應(yīng)用端的整合功能。管理人員通過網(wǎng)頁掃碼登錄到微信企業(yè)號后臺進行系統(tǒng)管理維護。
統(tǒng)一用戶管理:分析研究天鏡·內(nèi)蒙古、傳輸寶、數(shù)據(jù)寶等各應(yīng)用系統(tǒng)用戶組織結(jié)構(gòu),按照部門組織架構(gòu)、業(yè)務(wù)應(yīng)用需求合理設(shè)計用戶組織結(jié)構(gòu),整合目前各移動端用戶,避免同時維護多套通訊錄,并根據(jù)業(yè)務(wù)需求對用戶進行權(quán)限設(shè)置,確保每個應(yīng)用模塊都能獲取到正確的用戶組及用戶信息,根據(jù)訂閱情況,實現(xiàn)將信息推送到相應(yīng)業(yè)務(wù)人員查閱。
統(tǒng)一應(yīng)用管理:完成傳輸寶、數(shù)據(jù)寶等應(yīng)用的整合,通過天鏡·內(nèi)蒙古移動端實現(xiàn)數(shù)據(jù)傳輸故障信息、數(shù)據(jù)疑誤信息的自動推送功能,同時為用戶提供站點運行狀況、數(shù)據(jù)傳輸、數(shù)據(jù)質(zhì)量的實時在線查詢功能,實現(xiàn)數(shù)據(jù)全流程監(jiān)視。
集中告警管理:對天鏡·內(nèi)蒙古告警集中管理平臺的數(shù)據(jù)全流程、核心業(yè)務(wù)系統(tǒng)、基礎(chǔ)設(shè)施資源池、網(wǎng)絡(luò)、機房環(huán)境等告警信息進行分析判斷,接入天鏡·內(nèi)蒙古移動端,按照用戶訂閱需求統(tǒng)一發(fā)布。
移動端整體架構(gòu)分為數(shù)據(jù)層、應(yīng)用層、管理層、界面應(yīng)用層。系統(tǒng)整體架構(gòu)如圖1所示。
圖1 系統(tǒng)整體架構(gòu)
數(shù)據(jù)層:以天鏡·內(nèi)蒙古、傳輸寶、數(shù)據(jù)寶等系統(tǒng)數(shù)據(jù)為數(shù)據(jù)支撐。
應(yīng)用層:應(yīng)用層為系統(tǒng)的核心部分,是直面所有用戶的應(yīng)用,具有良好的兼容性、可移植性,且運行穩(wěn)定、維護方便。主要實現(xiàn)用戶統(tǒng)一身份安全認證、設(shè)置管理權(quán)限分配、統(tǒng)計和通知信息推送等功能。它基于跨系統(tǒng)和數(shù)據(jù)庫平臺的中間軟件構(gòu)建,主要作用是為終端信息交互的實現(xiàn)提供全面的、可擴展的、維護便捷的、標準的項目支撐。包括天鏡告警通知、傳輸寶、數(shù)據(jù)寶等應(yīng)用,通過調(diào)取微信企業(yè)號API接口將告警推送到微信企業(yè)號對應(yīng)的應(yīng)用。
管理層:通過微信企業(yè)號后臺管理系統(tǒng)對用戶、應(yīng)用、系統(tǒng)進行統(tǒng)一管理和配置。
界面應(yīng)用層:微信企業(yè)號自建應(yīng)用收到消息后按照用戶訂閱,分級分類推送到用戶的微信應(yīng)用。采用 HTML5 標準為基礎(chǔ)設(shè)計開發(fā),支持多種終端及微信平臺的直接訪問,實現(xiàn)界面組件化。包含多種智能終端應(yīng)用系統(tǒng),并支持 PC 系統(tǒng)以 WEB方式獲取服務(wù)平臺的信息。
本研究從網(wǎng)絡(luò)安全架構(gòu)及系統(tǒng)復雜度方面進行考慮,具體流程設(shè)計如圖2所示。
圖2 流程設(shè)計
天鏡·內(nèi)蒙古接入流程:通過內(nèi)網(wǎng)業(yè)務(wù)區(qū)的爬蟲等技術(shù)獲取各監(jiān)控系統(tǒng)的告警信息以及天鏡采集模塊采集到的數(shù)據(jù)生成的告警信息存入天鏡ES數(shù)據(jù)庫,在互聯(lián)網(wǎng)DMZ區(qū)部署的微信代理程序?qū)⑽⑿牌髽I(yè)號中的用戶信息關(guān)聯(lián)到天鏡·內(nèi)蒙古平臺,通過告警關(guān)聯(lián)配置告警推送規(guī)則,將告警信息按用戶訂閱需求推送到微信企業(yè)號移動端。
數(shù)據(jù)寶接入流程:通過內(nèi)網(wǎng)業(yè)務(wù)區(qū)的疑誤信息判斷程序?qū)DOS產(chǎn)生的疑誤信息推送到互聯(lián)網(wǎng)DMZ區(qū)的數(shù)據(jù)庫,對接微信企業(yè)號API接口將疑誤告警信息對外發(fā)布到微信企業(yè)號。同時在互聯(lián)網(wǎng)區(qū)部署的WEB界面程序?qū)⒁烧`信息以不同的統(tǒng)計方式展示到微信企業(yè)號移動端。
傳輸寶接入流程:通過內(nèi)網(wǎng)業(yè)務(wù)區(qū)的傳輸故障判斷程序根據(jù)天鏡生成的節(jié)目表和收發(fā)DI判斷的故障信息推送到互聯(lián)網(wǎng)DMZ區(qū)的數(shù)據(jù)庫,對接微信企業(yè)號API接口將故障信息對外發(fā)布到微信企業(yè)號。同時在互聯(lián)網(wǎng)區(qū)部署的WEB界面程序?qū)⒐收闲畔⒑椭行恼靖髋_站運行狀態(tài)數(shù)據(jù)以不同的統(tǒng)計方式展示到微信企業(yè)號移動端。
①用戶使用移動端App操作相關(guān)功能時會發(fā)起請求,微信企業(yè)號 App 將用戶請求執(zhí)行 URL重定向,企業(yè)微信后臺執(zhí)行靜默驗證操作,驗證應(yīng)用程序發(fā)送的 corpID 和 secret 參數(shù)是否正確。 ②如正確則獲取有效Token,返回正確的code值,然后系統(tǒng)會話通過 HTTP跳轉(zhuǎn)到信息采集后臺的 URL。 ③Java 服務(wù)后臺的 Servlet 處理程序會執(zhí)行相關(guān)的微信企業(yè)號 API 調(diào)用,依據(jù)提交的正確code 進行會話處理。 ④若請求數(shù)據(jù)包基于 OAuth2 協(xié)議回調(diào)成功,返回 userid 等所需的機構(gòu)基礎(chǔ)數(shù)據(jù)。Java服務(wù)后臺在獲取機構(gòu)基礎(chǔ)數(shù)據(jù)后,執(zhí)行信息化需求采集處理相關(guān)業(yè)務(wù)方法,處理業(yè)務(wù)邏輯,獲取業(yè)務(wù)數(shù)據(jù)。⑤服務(wù)器后臺數(shù)據(jù)處理完畢后,通過進一步的視圖渲染處理,最終以 HTML5 的自適應(yīng)版移動界面呈現(xiàn)處理結(jié)果。
通過微信企業(yè)號的集成,把傳輸寶、數(shù)據(jù)寶、天鏡·內(nèi)蒙古的用戶組織架構(gòu)進行統(tǒng)一整合,實現(xiàn)各系統(tǒng)用戶統(tǒng)一管理,避免同時維護多套用戶信息。以傳輸寶的用戶組織架構(gòu)為基礎(chǔ)進行整合,按部門進行設(shè)計,一級部門為內(nèi)蒙古氣象局,二級部門為盟市名稱,三級部門為旗縣局。每個人角色不同,可同時選擇多個所在部門,根據(jù)不同業(yè)務(wù)的訂閱需求,配置不同的部門信息,確保推送信息精確化。用戶信息提供批量導入、導出功能。
圖3 基于微信企業(yè)號應(yīng)用開發(fā)實現(xiàn)流程
圖4 用戶架構(gòu)
微信企業(yè)號支持推送文本、圖片、視頻、文件、圖文等類型的消息,本項目推送的內(nèi)容為文本,請求方式采用POST方式請求,請求地址為:https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN,其中ACCESS_TOKEN為接口憑證,在創(chuàng)建應(yīng)用時自動創(chuàng)建。傳輸寶將判障程序?qū)⑴姓辖Y(jié)果存入DMZ區(qū)數(shù)據(jù)庫,根據(jù)故障臺站號到數(shù)據(jù)庫中獲取該站所訂閱的用戶信息,構(gòu)造出標準的請求內(nèi)容,將要推送的告警信息發(fā)送給訂閱人。請求消息體示例如下所示:
1.{
2. "touser" : "張敏|李強",
3. "toparty" : "44",
4. "msgtype" : "text",
5. "agentid" : 1,
6. "text" : {
7. "content" : "【自動土壤水分-考核】 n 北京時05日17:00 [1]滿都拉氣象站(53149)當前時次缺報,請及時填報故障。 ,點擊登記故障原因"
9. },
10. "safe":0,
11. "enable_id_trans": 0,
12. "enable_duplicate_check": 0,
13. "duplicate_check_interval": 1800
14. }
能夠查詢當前時次各種資料類型的傳輸缺報情況。能夠支持全部報類當前時次的缺報匯總展示;能夠查看當前時次的缺報詳情;查詢時只顯示當前用戶訂閱的站。
查詢近24 h各種資料的缺報情況,能夠按資料類型過濾,查詢時只顯示當前用戶訂閱的站。按照資料大類組織目錄結(jié)構(gòu),點擊資料大類后,會顯示相應(yīng)的資料小類,最后點擊進行查詢。
根據(jù)后臺生成的故障信息填報故障原因,能夠查看訂閱的站點當前未填報的故障、歷史未填寫的故障和已經(jīng)填寫完成的故障。在故障填報時,僅需選擇下拉框中的故障選項進行填寫,提升移動端操作的實用性。
通過“上線啦”模塊實時查詢區(qū)域站、無人站、交通站站點運行情況,在搜索框中輸入站號后,查詢結(jié)果分為兩部分,上半部分設(shè)計顯示當前站的基本信息,包括站號、站名、經(jīng)緯度、心跳包時間、通信成功時間,通過以上基本信息的顯示,便于業(yè)務(wù)和管理人員核實站點信息的正確性,以及站點在線運行情況。下半部分按觀測時間順序顯示該站點觀測要素數(shù)據(jù)內(nèi)容,顯示內(nèi)容包括常規(guī)數(shù)據(jù)小時雨量、分鐘雨量、氣壓、海平面氣壓、氣溫、最高氣溫、最低氣溫、濕度、風速、水汽壓、露點溫度、地面溫度等要素,以及草面溫度、能見度等其他要素數(shù)據(jù)。
經(jīng)過處理的數(shù)據(jù)可用率存儲在DMZ區(qū)數(shù)據(jù)庫中,移動端數(shù)據(jù)寶提供一定時間范圍內(nèi)數(shù)據(jù)質(zhì)量查詢功能,查詢的條件可以選擇按要素、按站點、按盟市查詢,同時支撐圖標格式顯示當天數(shù)據(jù)可用率統(tǒng)計情況。
氣象數(shù)據(jù)服務(wù)系統(tǒng)在線統(tǒng)計的數(shù)據(jù)接口訪問統(tǒng)計結(jié)果實時存入數(shù)據(jù)庫中,通過設(shè)計界面在移動端可通過接口下載量、接口訪問時長、接口訪問量不同維度查詢近1日、近1月各單位對接口訪問情況。移動端展示的內(nèi)容包括:單位名稱、訪問用戶、接口名稱、資料名稱、下載量。
通過我的訂閱菜單,每個用戶都能按盟市旗縣、臺站不同維度的分組查詢當前用戶訂閱的臺站數(shù)量及站號,確保轄區(qū)內(nèi)或關(guān)心的臺站全部已訂閱、疑誤信息都能夠收到,查詢結(jié)果以樹形結(jié)構(gòu)展示。
天鏡·內(nèi)蒙古移動端的首頁包括傳輸寶、數(shù)據(jù)寶、告警通知3個移動端模塊,傳輸寶提供數(shù)據(jù)傳輸?shù)母婢?、查詢信息,?shù)據(jù)寶提供數(shù)據(jù)質(zhì)控控制的相關(guān)告警、展示信息,告警通知推送各業(yè)務(wù)系統(tǒng)運行告警信息。通過通信錄,可以查看全區(qū)各級部門人員信息。
圖5 效果展示
筆者研究的基于微信企業(yè)號的天鏡·內(nèi)蒙古移動端,成功整合了傳輸寶、數(shù)據(jù)寶、天鏡告警平臺移動端的發(fā)布渠道,基于策略實現(xiàn)了告警信息管理,分類、分級、分站、分人推送各種告警信息,解決了用戶需要關(guān)注多個應(yīng)用才能接收各系統(tǒng)信息推送的問題。