王寶云 盧興來 黃曉龍 陳昊
(1 浙江省臺州市氣象局, 臺州 318000; 2 浙江省氣象局大氣探測保障中心, 杭州 310000)
天氣雷達是探測降水系統的主要手段,是對強對流天氣(冰雹、大風、龍卷和暴洪)進行監測和預警的主要工具之一,雷達系統正常運行對氣象工作意義重大。中國氣象局“新一代天氣雷達建設業務軟件系統開發及應用項目”,簡稱“雷達業務軟件工程項目”或ROSE(Radar Operational Software Engineering),由中國氣象局氣象探測中心牽頭,于2011—2016年開展并完成了項目二期建設[1]。2020年9月起在全國范圍陸續開展試運行工作,12月1日正式單軌運行。ROSE項目的實施為我國新一代天氣雷達業務軟件的國產化奠定了良好的基礎。同過去類似,ROSE雷達用戶系統部分主要由RDA(雷達數據獲取單元)、RPG(雷達產品生成單元)、PUP(雷達產品顯示單元)3部分組成。對于地市臺站來說,如何利用現代化監控技術手段,將ROSE系統及其相關業務納入監控全流程,成為一項緊迫而具有現實意義的工作。
Zabbix是由Alexei Vladishev開發、Zabbix SIA積極更新維護的系統監控以及網絡管理服務的企業級解決方案[2],1.0版誕生于2004年,至今其監控方案被全球多家企業采用。作為一套C語言編寫、遵循GPLV2的開源軟件,Zabbix有著性能優良、擴展性好、具備可視化集中展示、支持自動發現設備等眾多優良特性。Zabbix支持絕大多數平臺的可用性和性能檢查;同時,支持SNMP、IPMI、JMX以及VMware的監控。相較于Nagios、Cacti、Zenoss Core、NetXMS等使用最為廣泛的開源監控系統,Zabbix無論在代碼成熟度、源代碼質量、系統架構,還是用戶友好性、面向對象編程理念等方面都具有相當優勢[3]。目前,Zabbix在IT、金融、通信、航天等領域被廣泛采用[4-5],滿足各種復雜條件下的監控需求。
國內氣象業務的監控一直采用綜合氣象觀測系統運行監控平臺(ASOM)[6]。ASOM 2010年建成,以J2EE技術為核心,引入了大量如中間件、報表服務、XML(可擴展標記語言)和GIS(地理信息系統)等當時較為先進的技術,通過B/S、C/S相結合的方式構建了氣象觀測監控與保障國省地三級平臺。然而也存在一些美中不足,對國、省兩級支持較完善,而臺站級缺乏相應設備接入、報警等本地化接口等。目前,ASOM正積極向第2代綜合氣象觀測業務運行平臺(天元)過渡,其配套系統“天鏡”也在國省積極部署。省級以下專業化的氣象綜合觀測與信息網絡監控解決方案中,較為成熟的仍然以基于B/S模式的前后臺架構為主。采用的主流數據庫語言有SQL Server、MySQL、Access,服務端的環境有ASP、PHP、JSP[7]。但平臺部署工作量較大,難度仍相對較高。近來雖然Python等一些當下流行的語言和框架被采用[8],但仍然缺乏一套高效而專業的解決方案。目前,Zabbix在國內氣象信息監控領域應用相對較少[9]。本文通過Zabbix的部署和配置,實現對新一代天氣雷達ROSE系統,臺站業務全流程監控,提高保障工作效率,使雷達產品更好地應用到業務和服務中。
臺站級新一代天氣雷達需要監控的對象主要分兩大類。一類和雷達正常運行有關[10-11],主要有雷達狀態[12-15]、動力環境[16-17]等。技術升級和技術標準統一后的臺站配有標準輸出控制器,通過該組件,實現了集雷達性能監測分析和附屬設備動力環境監測報警功能于一體。另一類監控需求和雷達數據和產品傳輸有關,過去十多年來,國內業務人員開發了大量實用監控軟件,發揮了較好效果[16-19]。隨著ROSE系統全面升級為Linux環境和流傳輸作為新的基數據傳輸方案,臺站級監控軟件也亟需升級調整,但ROSE系統建設本身未開發配套的運行監控系統。甄廷忠基于C#語言和.NET4.0環境實現了CC雷達的流傳輸監控[20],但僅限安徽四創型號雷達及軟件;勵臣儒基于Python實現了寧波SA雙偏振雷達運行狀態、網絡狀況以及動力環境的軟件監控[8],但仍然未集成對主機、運行程序與流傳輸的監控。考慮到目前缺乏對ROSE平臺等系統監控接入的現狀,開發對Linux環境下SA雷達的軟件運行、主機狀態、流傳輸與基數據本地備份等業務的臺站級ROSE監控是有意義的。
臺站級天氣雷達ROSE監控平臺的主要設計目標是監控雷達流傳輸、狀態日志上傳、數據本地備份情況、網絡連接狀態、以及ROSE系統中各類主機的軟硬件資源[4]。其中硬件資源包括主機的CPU利用率、內存和硬盤使用率,軟件資源包括RDA、ROSE RPG等服務運行情況。通過將這些狀態采集并集中管理,以圖形化的形式展示給業務人員,并對不同種類的監控對象設置報警閾和報警通知,使臺站保障人員能先于上級部門第一時間發現ROSE系統運行中產生的問題,進一步提高雷達數據傳輸率、保障產品的更好使用。具體需求見表1。

表1 臺站ROSE系統監控需求
ROSE監控平臺設計原則:成熟性和先進性相結合,即開發框架需既穩定成熟、又能滿足各類狀態指標監控的功能性需求;低干擾性與安全性相結合,由于流傳輸在RDASC軟件上進行,RDA主機直接控制雷達的運行狀態,因此監控系統的部署必須在不影響現有業務軟件功能和正常運行的基礎上建立,同時又必須考慮整個雷達系統運行的安全性。
Zabbix[5,21-23]主要由Zabbix服務器、數據庫服務器、Web服務器、代理(Proxy)服務器等組成(圖1),Zabbix agent(Zabbix監控代理)部署在被監控目標上,用于主動監控本地資源和應用程序。Zabbix Server(Zabbix服務組件)是Zabbix軟件的核心組件,agent 向其報告可用性、系統完整性信息和統計信息。 所有配置信息以及 Zabbix 采集到的數據都被存儲在數據庫中。Web界面是Zabbix Server 的一部分,通常(但不一定)和 Zabbix Server 運行在同一臺物理機器上。Zabbix proxy(Zabbix代理服務器)在Zabbix的部署是可選部分,proxy的部署可以分擔單個Zabbix Server的負載。

圖1 Zabbix組織架構
Zabbix的監控流程如圖2所示。其中,主機即被監控的設備,監控項來源于被監控的主機,觸發器可以看作是一個控制中心,觸發器會設定一個條件,當監控項中接收到的數據達到觸發器設定的條件時,觸發器便會執行相應的動作(如郵件報警)。

圖2 Zabbix監控流程
整個ROSE監控平臺的信息采集、監控和報警主要基于Zabbix系統來實現。Zabbix對硬件資源的要求較低。例如在官方推薦配置中,雙核2 GB內存便可監控500臺左右的主機,幾GB空間便可存放足夠長時間的歷史監控數據。如果只考慮臺站級監控,則無需部署Zabbix Proxy代理服務器。由于監控目標對象相對較少,可將Zabbix服務組件、數據庫和Web服務器的內容部署在同一臺服務器上。對于主機參數監控,采用被動模式,而對于流傳輸和數據存檔,采用主動模式監控。整個Zabbix監控平臺的開發主要由環境部署、主機配置、模板配置、告警模塊配置、日志分析與評估等步驟組成。考慮到ROSE系統網絡運行環境監控的需要,整個監控架構分為省級、ROSE平臺、本局服務器3層。整個系統的總體框架如圖3所示。

圖3 新一代天氣雷達ROSE監控系統總體框架
在臺州新一代天氣雷達ROSE系統監控平臺中,Zabbix Server端部署在Vmware虛擬機中,資源分配為雙線程2 GB內存[24-25]。Zabbix Server端的部署[3,24]基于LAMP(Linux、Apache、MySql、PHP)或LNMP環境。對于4.0版本的Zabbix,對應MySql版本要求為5.0.3-8.0.x,Apache版本要求為1.3.12或以上,PHP版本要求為5.4.0或以上。前端和Server端所要求的軟件和庫見表2,外網環境下均可通過yum命令一鍵安裝。

表2 Zabbix前端和Server端軟件環境和依賴庫
從源代碼安裝Zabbix主要分為安裝Zabbix守護進程和安裝ZabbixWeb界面兩步。具體步驟和注意事項可參考官方文檔,此處不進一步展開。需要注意的是RDA主機為內網環境,且有雷達控制端運行。所幸agent端部署無需其他依賴。且對應系統版本(rhel5.4或centos6.10)在官網有相應rpm包,無須下載源碼包重新編譯。
2.2.1 配置主機
Zabbix中的主機(Host)是一個需要監控的網絡實體的抽象[2]。它可以是一臺物理服務器,一個網絡交換機,一個虛擬機或者一些應用。在ROSE的整個監控系統中,一些省級服務器如流傳輸服務器或FTP補傳服務器雖然無法直接部署Zabbix客戶端,但仍然可以作為主機添加進來,并添加監控項(如通過ICMP監控主機連接狀態)。
2.2.2 配置監控項和觸發器
監控項是Zabbix中獲得數據的基礎。完成了監控項定義后可以在最新數據處查看監控項最新獲取的數據結果。監控項只是用于收集數據。如果需要自動評估收到的數據,我們則需要定義觸發器(Trigger)。配置一個觸發器所必填的項目為名稱和表達式。可以在監控→問題中查看配置完的觸發器的觸發狀態。如果表達式值超過了觸發器定義閾值,則這個問題將會顯示在問題列表中。
2.2.3 配置模板
對于一些常規的監控項目,如主機性能、網絡連接狀況,可以通過添加模板(Templates)的形式來完成。Zabbix提供了豐富的日常主機及網絡設備監控所需要的模板。一組預先定義好的檢查會被快速應用到主機上。當一個模版鏈接到一個主機后,主機會繼承這個模版中的所有對象。創建一個模板的步驟為:輸入模板名稱→選擇所屬的組→添加監控項和觸發器以滿足特定需求。
流傳輸與補傳、基數據以及產品存檔的監控與報警可通過自定義監控項、觸發器以及模板來實現。
升級敏視達RDASC軟件,SA雷達基數據通過軟件內置的流傳輸功能直接上傳,并在軟件界面中以圖形界面的形式增加了對流傳輸狀態的監控。但是如果需要在臺站端實現基數據流傳輸失敗報警,則需要通過接口來完成。監控軟件在/opt/rda/log中以日志形式記錄每個體掃基數據文件的落地、傳輸和數據補傳情況。日志每天生成,命令格式為YYYYMMDD_Bst.log,字母依次為年、月、日。日志每行用“|”分割,內容依次為文件名、流水號、傳輸狀態(S成功,P補傳成功,N未傳輸)和時間以及文件大小(單位字節)。需要注意的是如果雷達未產生基數據,則BST日志無記錄產生。而雷達故障停機、RDASC程序異常、雷達維護停機都不生成基數據。前兩種情況可以分別通過臺站現有報警手段和構造Zabbix應用程序監控項來完成監控。當有基數據生成而網絡連接異常時,也會造成流傳輸失敗,這種情況也可以通過Zabbix ICMP協議來監控。因此,雷達流傳輸報警和其它問題報警存在著一定的依賴關系。Zabbix提供了基于依賴關系的觸發器配置。通過配置依賴關系,Zabbix將不執行依賴觸發器的動作,如報警。這將避免收到重復的報警通知。雷達監控報警流程如圖4所示。

圖4 雷達系統監控報警流程
Zabbix對流傳輸日志文件寫入的監控可以通過構造logrt函數的監控項來完成,與log函數不同,logrt函數支持以輪詢的方式監控日志文件,這樣就克服了追蹤流傳輸日志時文件名隨日期變化的困難。Logrt函數的具體形式為:
logrt[file_regexp,
中括號內的參數依次為文件名、匹配內容、編碼標識符、最大采集數(行每秒)、可選模式、輸出格式模板與最大延遲。這樣,正常情況下6 min將采集到1行日志。
對日志中S(上傳成功)、P(補傳成功)、N(未傳輸)的抓取可以通過構造count函數觸發器來實現,其具體形式為:
count (sec|#num,
括號內依次為評估周期、是否正則匹配、可選操作符以及時間偏移量。這樣,如果6 min內未采集到成功上傳(S)的狀態日志,則該觸發器觸發報警。對于流傳輸補傳、基數據與產品存檔的監控與此類似,在此不重復介紹。
Zabbix內置了豐富的報警接口,如短信、郵箱、Telegram以及大量第三方Webhook。對于郵件報警,只需提供SMTP服務器名、HELO名、郵箱名等,最后在動作(Action)中配置郵件標題及消息內容即可實現。
儀表盤是監控信息的匯總。方便快速總覽當前全局監控狀態。儀表板是由多個小模塊組成,可以有系統信息、服務器信息、拓撲圖、摘要、告警項、圖形、時鐘等模塊進行組合展示。在儀表板中間部分,直觀地展示了系統中可用主機、不可用主機、未知主機的數量和報警情況。在儀表板編輯模式下可以添加和編輯窗口模塊。 編輯完成后即可在儀表板查看模式下展示窗口模塊(圖5)。

圖5 新一代天氣雷達ROSE系統監控平臺儀表板
Zabbix Network Map(Zabbix拓撲圖)可以快速定位故障位置,直觀、動態地了解整個網絡系統及各分系統的運行狀態,通過點擊還可以進一步判斷故障的影響情況。圖6是新一代天氣雷達ROSE監控的網絡拓撲圖,通過該圖可以一目了然的知道ROSE系統各組件的運行狀態和到省局及本地服務器的網絡連接情況。拓撲圖預留了雷達主機及其到RDA主機的連接,為今后可能需要的集成監控做了準備。

圖6 新一代天氣雷達ROSE系統監控平臺拓撲關系
通過對Zabbix監控數據存儲、將數據進行篩選、處理后,既可以通過多個圖形展示每一個節點主機的運行情況,也可以將系統中多個節點在一張圖中顯示。圖7是ROSE系統中RDA、ROSE RPG以及Zabbix Server監控主機CPU利用率層積圖、內存使用率折線圖、磁盤使用空間3D餅圖、網絡延遲情況的時間散點圖。將它們和拓撲圖一起部署添加到Zabbix的聚合圖形中,便可在1個頁面中直觀監視ROSE系統運行狀況,以便系統出現異常時及時采取措施。

圖7 新一代天氣雷達ROSE系統監控平臺監控展示
為檢驗新一代雷達ROSE監控平臺的實用性,著重對平臺的報警功能進行系統測試。為了模擬實際網絡故障導致日志無法上傳,關閉與浙江省探測中心上傳狀態監控的服務器連接端口。1 min后Zabbix監控儀表板上出現了問題告警。同時郵箱中也出現了浙江省探測服務器網絡中斷的告警郵件(圖8),證明了郵件報警功能模塊的正常。

圖8 新一代天氣雷達ROSE系統監控平臺郵件報警
基于Zabbix的ROSE系統監控平臺自2020年11月初上線。試運行期間平臺運行情況良好。圖9是平臺試運行期間的可用性評估。圖9a顯示11月16—17日期間流傳輸日志監控出現過短暫報警,主機可用性為91.66%。事實上這幾日剛好在進行監控項和報警的測試和調整,符合實際情況。圖9b顯示11月的前兩周時間同步發生了報警(系統主機RPG與Zabbix服務器時間差超過60 s),此時間段內的主機可用性為80.91%,之后監控的RPG與時間服務器的恢復情況與實際一致。

圖9 2020年新一代天氣雷達ROSE系統試運行期間可用性統計:(a)流傳輸日志監控,(b)系統主機RGP與Zabbix服務器時間同步運行情況
流傳輸和ROSE軟件升級后,開發一套成熟穩定的監控平臺保障系統和數據傳輸正常對臺站而言有重要意義。本文嘗試通過Zabbix的部署和配置,解決了SA雷達適合Linux環境的軟件運行、主機監控、流傳輸與備份監控等目前臺站級ROSE監控中的關鍵技術問題,實現對臺站級新一代天氣雷達ROSE系統臺站業務全流程監控。
考慮到ROSE系統網絡運行環境監控的需要,整個監控架構分為省級、ROSE平臺、本局服務器3層。考慮到主機較少,Zabbix服務端和數據庫部署在同一虛擬機上。Zabbix模板配置功能強大,對于一些常規的監控項目,如主機性能、網絡連接狀況,可以通過添加模板(Templates)的形式來完成。而對于流傳輸的監控和報警實現,則通過構造輪詢函數logrt的監控項和關聯觸發器函數count來實現的。整個監控平臺有著功能豐富的前端界面,直觀展示ROSE系統運行狀況。系統測試表明,Zabbix郵件報警模塊功能正常,試運行期間監控平臺運行穩定,ROSE系統可用性評估和實際情況相符。
今后的工作將根據實際情況繼續接入其它需要監控的模塊,完善系統賬戶配置,豐富其它報警手段。