黃艷紅,姜娜娜,徐曉慶,韓格格,陳增境
(1.中國氣象局旱區(qū)特色農(nóng)業(yè)氣象災(zāi)害監(jiān)測預警與風險管理重點實驗室,寧夏 銀川 750002;2.寧夏氣象防災(zāi)減災(zāi)重點實驗室,寧夏 銀川 750002)
為加快推進氣象現(xiàn)代化建設(shè),中國氣象局參照WMO和國際通用氣象數(shù)據(jù)格式標準,確定地面、高空、輻射、大氣成分等氣象數(shù)據(jù)的標準化格式[1](以下簡稱BUFR),優(yōu)化調(diào)整業(yè)務(wù)流程,解決數(shù)據(jù)格式不統(tǒng)一導致的上下游業(yè)務(wù)系統(tǒng)銜接連動性薄弱等問題。2018年在全國氣象部門開展了氣象數(shù)據(jù)格式標準化業(yè)務(wù)切換,2019年標準格式數(shù)據(jù)實行單軌運行,原地面新Z格式文件停止傳輸。2020年,隨著氣象大數(shù)據(jù)云平臺的上線,BUFR數(shù)據(jù)接入云平臺,逐漸成為平臺的主要數(shù)據(jù)編碼格式。目前,由于寧夏氣象局部分業(yè)務(wù)平臺無法兼容BUFR數(shù)據(jù),仍需新Z格式文件支撐,為適應(yīng)這一需求,重塑了現(xiàn)有數(shù)據(jù)傳輸業(yè)務(wù)流程。本文以國家氣象站地面BUFR數(shù)據(jù)傳輸為例進行分析。
正常情況下,BUFR數(shù)據(jù)經(jīng)臺站收集[2],通過消息傳輸客戶端上傳至省級,省級消息傳輸服務(wù)端經(jīng)數(shù)據(jù)收集與分發(fā)系統(tǒng)[3](以下簡稱CTS)快速質(zhì)控(以下簡稱快控)后上行至國家級并在本地歸檔。
重塑流程后,在上述流程基礎(chǔ)上,由BUFR轉(zhuǎn)換模塊提取歸檔的BUFR快控數(shù)據(jù),轉(zhuǎn)換成新Z格式文件,提供給用戶使用。國家站BUFR數(shù)據(jù)傳輸服務(wù)流程具體見圖1。
圖1 國家站BUFR數(shù)據(jù)傳輸服務(wù)流程Fig.1 National station BUFR data transmission service process
氣象數(shù)據(jù)經(jīng)臺站ISOS軟件采集收集編碼后形成BUFR數(shù)據(jù)文件,寫入接口目錄(即ISOS寫入消息數(shù)據(jù)文件目錄)。臺站消息傳輸客戶端實時偵聽接口目錄,從中獲取BUFR數(shù)據(jù)文件并封裝成消息,再根據(jù)傳輸方式及省級服務(wù)器IP地址,上行至省級消息服務(wù)器。上傳成功后備份至“消息數(shù)據(jù)備份”目錄,若數(shù)據(jù)格式異常,則寫入“傳輸客戶端不能識別或未通過格檢數(shù)據(jù)”目錄。數(shù)據(jù)發(fā)送成功或失敗均生成日志寫入“傳輸客戶端反饋給ISOS日志文件”目錄。具體配置如圖2。
圖2 臺站傳輸客戶端配置界面Fig.2 Station transmission client configuration interface
省級消息傳輸服務(wù)端接收臺站上傳的BUFR數(shù)據(jù)消息,經(jīng)CTS快控后由消息處理程序封裝成消息上行至國家級消息傳輸服務(wù)端,同時質(zhì)控后的BUFR數(shù)據(jù)文件在本地歸檔。BUFR轉(zhuǎn)換程序由定時任務(wù)定時啟動,從歸檔目錄讀取快控后的BUFR數(shù)據(jù),轉(zhuǎn)換成新Z文件格式,寫入CTS傳輸接口目錄。CTS根據(jù)收發(fā)策略,將新Z文件格式數(shù)據(jù)轉(zhuǎn)發(fā)至數(shù)據(jù)服務(wù)客戶端CAWSAnyWhereServer接口目錄,數(shù)據(jù)服務(wù)客戶端從接口目錄中獲取新Z格式文件,處理后入庫提供給用戶。
根據(jù)BUFR數(shù)據(jù)傳輸流程節(jié)點,可將故障分為臺站傳輸故障、省級傳輸故障、CTS快控故障、數(shù)據(jù)歸檔故障、BUFR轉(zhuǎn)換故障及數(shù)據(jù)轉(zhuǎn)發(fā)故障。
圖3 故障分析流程Fig.3 Failure analysis flow chart
臺站傳輸常見故障為IP、傳輸方式、監(jiān)控目錄設(shè)置錯誤,數(shù)據(jù)未生成或數(shù)據(jù)格式錯誤。臺站消息客戶端傳輸配置正確情況下,可通過查詢運行日志定位故障點。
log/Main:主進程日志,主要檢查客戶端程序啟動是否正常、通信端口是否被占用及與省級消息服務(wù)器連接是否正常;
log/PollingData: 目錄輪詢?nèi)罩?,用于監(jiān)控接口目錄是否正常,主要檢查目錄輪詢記錄是否正常;
log/[ RecvData| SavaData| SendData]:數(shù)據(jù)文件接收/備份/發(fā)送日志,用于記錄數(shù)據(jù)接收、備份、發(fā)送是否正常。
若以上日志均正常,需檢查ISOS軟件運行是否正常。
省級消息傳輸采用的消息中間件為RabbitMQ[4](簡稱RMQ)。常見故障為RMQ進程異?;騌MQ消息隊列[5]積壓。當省級消息服務(wù)端未接收到BUFR數(shù)據(jù)消息時,需要查看RMQ管理界面是否正常、消息隊列是否積壓;若頁面無法登陸,需要查看并重啟RMQ進程;若消息隊列積壓,需查看CTS快控進程。
CTS快控程序?qū)崟r偵聽省級消息傳輸服務(wù)端廣播的消息隊列,獲取數(shù)據(jù)消息進行質(zhì)控并封裝成消息[6]回寫到快控消息隊列。當CTS快控故障時,會導致省級消息傳輸服務(wù)端快控消息隊列積壓,此時應(yīng)查看快控進程和日志,若進程異常需重啟,則需在RMQ管理界面清除日志中不可消費的錯誤信息數(shù)據(jù)。
數(shù)據(jù)歸檔由消息處理程序?qū)炜睾蟮腂UFR數(shù)據(jù)消息進行處理后落地歸檔。當歸檔目錄中無數(shù)據(jù)時,需檢查消息處理進程是否正常,查看消息處理進程日志中是否有最新更新記錄,若無,則判定其為僵尸進程,重啟消息處理進程。
BUFR轉(zhuǎn)換模塊常見故障為BUFR轉(zhuǎn)換進程異?;蚨〞r任務(wù)故障。BUFR轉(zhuǎn)換程序由定時任務(wù)定時啟動,若程序未執(zhí)行,首先檢查定時任務(wù)服務(wù)進程是否正常,當進程不存在或存在僵尸進程,需重啟定時任務(wù)進程;其次檢查轉(zhuǎn)換程序是否有日志輸出,若無,則判定其為僵尸進程,重啟BUFR轉(zhuǎn)換進程。
數(shù)據(jù)轉(zhuǎn)發(fā)由CTS收發(fā)模塊根據(jù)收發(fā)策略完成。收發(fā)策略包括數(shù)據(jù)收發(fā)源地址、目的地址、分發(fā)用戶等信息,當數(shù)據(jù)轉(zhuǎn)發(fā)異常時,需檢查上述配置是否正確。
在實際運維過程中一般采用逆向故障排查流程,同時還要根據(jù)故障現(xiàn)象和上下游節(jié)點情況定位具體故障節(jié)點。以下為實際運維過程中常見的典型故障案例。
故障現(xiàn)象:數(shù)據(jù)服務(wù)客戶端無國家氣象站數(shù)據(jù)。
故障分析:因近期未對數(shù)據(jù)轉(zhuǎn)發(fā)模塊中的收發(fā)策略配置進行更改,故直接檢查BUFR轉(zhuǎn)換模塊。檢查BUFR轉(zhuǎn)換日志發(fā)現(xiàn)有啟動程序輸出,無消息數(shù)據(jù)處理記錄,判定BUFR轉(zhuǎn)換模塊正常,上游歸檔目錄無數(shù)據(jù)。檢查消息處理進程,發(fā)現(xiàn)進程未啟動,重啟進程后,數(shù)據(jù)正常歸檔,數(shù)據(jù)服務(wù)客戶端數(shù)據(jù)顯示正常。
故障現(xiàn)象:省級消息服務(wù)器未接收到某一臺站上傳的國家氣象站數(shù)據(jù)。
故障分析:由于只有一個臺站的數(shù)據(jù)未接收到,初步判斷省級消息服務(wù)器正常,可將故障定位到該臺站。首先檢查臺站消息傳輸客戶端備份目錄,發(fā)現(xiàn)無當前時次數(shù)據(jù)。再檢查接收日志,無當前時次接收記錄。經(jīng)檢查傳輸客戶端配置均正常,檢查ISOS軟件后,確定臺站數(shù)據(jù)采集器異常,ISOS未生成數(shù)據(jù)。采集器故障恢復后,數(shù)據(jù)傳輸正常。
故障現(xiàn)象:所有消息類數(shù)據(jù)均未上行至國家級。
故障分析:因所有消息類數(shù)據(jù)均由省級消息服務(wù)器接收上行至國家級,根據(jù)故障現(xiàn)象,首先檢查省級消息服務(wù)器,登錄RMQ管理界面發(fā)現(xiàn)為空白頁,后臺檢查消息進程(采用命令ps-ef|grep erlang)發(fā)現(xiàn)進程未啟動。重啟消息進程后,進程恢復,RMQ界面顯示正常。消息類數(shù)據(jù)逐漸上行至國家級。
目前,基于消息傳輸?shù)馁Y料處理系統(tǒng)已經(jīng)投入業(yè)務(wù)使用,提升了實時氣象數(shù)據(jù)高時效傳輸能力的同時,也對運維保障人員提出更高的要求。本文對國家氣象站BUFR數(shù)據(jù)消息傳輸服務(wù)流程所涉及的各節(jié)點故障進行梳理,給出故障排查流程圖,分析典型故障案例。在實際運維中,運維人員可根據(jù)故障現(xiàn)象,結(jié)合故障排查流程圖,快速定位故障節(jié)點,提高運維效率。