黃艷紅,姜娜娜,徐曉慶,韓格格,陳增境
(1.中國氣象局旱區特色農業氣象災害監測預警與風險管理重點實驗室,寧夏 銀川 750002;2.寧夏氣象防災減災重點實驗室,寧夏 銀川 750002)
為加快推進氣象現代化建設,中國氣象局參照WMO和國際通用氣象數據格式標準,確定地面、高空、輻射、大氣成分等氣象數據的標準化格式[1](以下簡稱BUFR),優化調整業務流程,解決數據格式不統一導致的上下游業務系統銜接連動性薄弱等問題。2018年在全國氣象部門開展了氣象數據格式標準化業務切換,2019年標準格式數據實行單軌運行,原地面新Z格式文件停止傳輸。2020年,隨著氣象大數據云平臺的上線,BUFR數據接入云平臺,逐漸成為平臺的主要數據編碼格式。目前,由于寧夏氣象局部分業務平臺無法兼容BUFR數據,仍需新Z格式文件支撐,為適應這一需求,重塑了現有數據傳輸業務流程。本文以國家氣象站地面BUFR數據傳輸為例進行分析。
正常情況下,BUFR數據經臺站收集[2],通過消息傳輸客戶端上傳至省級,省級消息傳輸服務端經數據收集與分發系統[3](以下簡稱CTS)快速質控(以下簡稱快控)后上行至國家級并在本地歸檔。
重塑流程后,在上述流程基礎上,由BUFR轉換模塊提取歸檔的BUFR快控數據,轉換成新Z格式文件,提供給用戶使用。國家站BUFR數據傳輸服務流程具體見圖1。

圖1 國家站BUFR數據傳輸服務流程Fig.1 National station BUFR data transmission service process
氣象數據經臺站ISOS軟件采集收集編碼后形成BUFR數據文件,寫入接口目錄(即ISOS寫入消息數據文件目錄)。臺站消息傳輸客戶端實時偵聽接口目錄,從中獲取BUFR數據文件并封裝成消息,再根據傳輸方式及省級服務器IP地址,上行至省級消息服務器。上傳成功后備份至“消息數據備份”目錄,若數據格式異常,則寫入“傳輸客戶端不能識別或未通過格檢數據”目錄。數據發送成功或失敗均生成日志寫入“傳輸客戶端反饋給ISOS日志文件”目錄。具體配置如圖2。

圖2 臺站傳輸客戶端配置界面Fig.2 Station transmission client configuration interface
省級消息傳輸服務端接收臺站上傳的BUFR數據消息,經CTS快控后由消息處理程序封裝成消息上行至國家級消息傳輸服務端,同時質控后的BUFR數據文件在本地歸檔。BUFR轉換程序由定時任務定時啟動,從歸檔目錄讀取快控后的BUFR數據,轉換成新Z文件格式,寫入CTS傳輸接口目錄。CTS根據收發策略,將新Z文件格式數據轉發至數據服務客戶端CAWSAnyWhereServer接口目錄,數據服務客戶端從接口目錄中獲取新Z格式文件,處理后入庫提供給用戶。
根據BUFR數據傳輸流程節點,可將故障分為臺站傳輸故障、省級傳輸故障、CTS快控故障、數據歸檔故障、BUFR轉換故障及數據轉發故障。

圖3 故障分析流程Fig.3 Failure analysis flow chart
臺站傳輸常見故障為IP、傳輸方式、監控目錄設置錯誤,數據未生成或數據格式錯誤。臺站消息客戶端傳輸配置正確情況下,可通過查詢運行日志定位故障點。
log/Main:主進程日志,主要檢查客戶端程序啟動是否正常、通信端口是否被占用及與省級消息服務器連接是否正常;
log/PollingData: 目錄輪詢日志,用于監控接口目錄是否正常,主要檢查目錄輪詢記錄是否正常;
log/[ RecvData| SavaData| SendData]:數據文件接收/備份/發送日志,用于記錄數據接收、備份、發送是否正常。
若以上日志均正常,需檢查ISOS軟件運行是否正常。
省級消息傳輸采用的消息中間件為RabbitMQ[4](簡稱RMQ)。常見故障為RMQ進程異常或RMQ消息隊列[5]積壓。當省級消息服務端未接收到BUFR數據消息時,需要查看RMQ管理界面是否正常、消息隊列是否積壓;若頁面無法登陸,需要查看并重啟RMQ進程;若消息隊列積壓,需查看CTS快控進程。
CTS快控程序實時偵聽省級消息傳輸服務端廣播的消息隊列,獲取數據消息進行質控并封裝成消息[6]回寫到快控消息隊列。當CTS快控故障時,會導致省級消息傳輸服務端快控消息隊列積壓,此時應查看快控進程和日志,若進程異常需重啟,則需在RMQ管理界面清除日志中不可消費的錯誤信息數據。
數據歸檔由消息處理程序對快控后的BUFR數據消息進行處理后落地歸檔。當歸檔目錄中無數據時,需檢查消息處理進程是否正常,查看消息處理進程日志中是否有最新更新記錄,若無,則判定其為僵尸進程,重啟消息處理進程。
BUFR轉換模塊常見故障為BUFR轉換進程異常或定時任務故障。BUFR轉換程序由定時任務定時啟動,若程序未執行,首先檢查定時任務服務進程是否正常,當進程不存在或存在僵尸進程,需重啟定時任務進程;其次檢查轉換程序是否有日志輸出,若無,則判定其為僵尸進程,重啟BUFR轉換進程。
數據轉發由CTS收發模塊根據收發策略完成。收發策略包括數據收發源地址、目的地址、分發用戶等信息,當數據轉發異常時,需檢查上述配置是否正確。
在實際運維過程中一般采用逆向故障排查流程,同時還要根據故障現象和上下游節點情況定位具體故障節點。以下為實際運維過程中常見的典型故障案例。
故障現象:數據服務客戶端無國家氣象站數據。
故障分析:因近期未對數據轉發模塊中的收發策略配置進行更改,故直接檢查BUFR轉換模塊。檢查BUFR轉換日志發現有啟動程序輸出,無消息數據處理記錄,判定BUFR轉換模塊正常,上游歸檔目錄無數據。檢查消息處理進程,發現進程未啟動,重啟進程后,數據正常歸檔,數據服務客戶端數據顯示正常。
故障現象:省級消息服務器未接收到某一臺站上傳的國家氣象站數據。
故障分析:由于只有一個臺站的數據未接收到,初步判斷省級消息服務器正常,可將故障定位到該臺站。首先檢查臺站消息傳輸客戶端備份目錄,發現無當前時次數據。再檢查接收日志,無當前時次接收記錄。經檢查傳輸客戶端配置均正常,檢查ISOS軟件后,確定臺站數據采集器異常,ISOS未生成數據。采集器故障恢復后,數據傳輸正常。
故障現象:所有消息類數據均未上行至國家級。
故障分析:因所有消息類數據均由省級消息服務器接收上行至國家級,根據故障現象,首先檢查省級消息服務器,登錄RMQ管理界面發現為空白頁,后臺檢查消息進程(采用命令ps-ef|grep erlang)發現進程未啟動。重啟消息進程后,進程恢復,RMQ界面顯示正常。消息類數據逐漸上行至國家級。
目前,基于消息傳輸的資料處理系統已經投入業務使用,提升了實時氣象數據高時效傳輸能力的同時,也對運維保障人員提出更高的要求。本文對國家氣象站BUFR數據消息傳輸服務流程所涉及的各節點故障進行梳理,給出故障排查流程圖,分析典型故障案例。在實際運維中,運維人員可根據故障現象,結合故障排查流程圖,快速定位故障節點,提高運維效率。