貴州省氣象信息中心 金石聲 白鐵男 譚海波 唐維堯
本文基于開源架構的Zabbix 監控系統,對省級氣象數據收發系統CTS(Collection and Transfer System)集群的管理軟件VCS(Veritas Cluster Server)所承載的各項業務進行精細化監控。系統從資源組層面實現了對CTS 集群業務運行狀態的集約化監控,并以拓撲圖的方式展示了各資源組的運行狀態,通過動態圖標之間的連線直觀地了解資源組之間的業務依賴關系,在實際工作中精準的定位故障,極大地提高了核心業務系統的運行維護效率,符合氣象信息化和現代化的基本要求。
省級氣象數據收發系統CTS(Collection and Transfer System)。作為氣象資料交互的核心業務系統,承擔著氣象資料的收集、處理、分發等業務。為了保證系統的高可用性,采用了VCS(Veritas Cluster Server)集群管理軟件對CTS 集群的應用進行管理[1]。VCS 集群管理軟件雖然提供了管理界面,但是界面過于簡單,只適用于對應用進行管理,不具有基本的告警展示、推送功能,無法滿足集約化監控的要求[2]。為解決上述問題,基于開源架構的Zabbix 監控平臺自由度高、拓展性強的優勢,通過梳理VCS 集群管理軟件上的資源組情況,設計并開發了專門針對CTS 的監控系統。
如圖1 所示,CTS 系統集群由8 臺服務器組成,通過VCS 集群管理軟件對服務器和分布在服務器上的資源組進行管理,資源組即相同類型應用的集合。采用VCS提供的Hastatus 命令編寫Shell 腳本,定時對各資源組的運行狀態進行采集并寫入日志文件。Zabbix 通過SSH方式登錄指定服務器對運行日志進行采集和處理,再通過觸發器組件(Triger)和拓撲圖組件(Map)對日志內容進行告警和圖形化展示。各個業務運行狀態在CTS 系統生成,Zabbix 對業務運行狀態進行采集、過濾、展示。資源組分布情況及負載類型如表1 所示。
表1 CTS 資源組進程分布情況表(“parallel”代表并行,“failover”代表主備)Tab.1 Process distribution of the CTS resource group("parallel" represents parallel and "failover" represents active and standby)
圖1 系統架構設計圖Fig.1 System architecture design diagram
為實現其主要功能,系統包括信息采集模塊、告警模塊和監控展示模塊[3,4]三個功能模塊,數據庫依托Zabbix 監控系統的MySQL 數據庫。
腳本部分基于Linux 環境下的Shell 語言編寫,主要功能是通過VCS 集群管理提供的狀態采集命令Hastatus,將CTS 集群的運行狀態打印并保存到指定的日志文件;監控項部分基于Zabbix 系統采取SSH 遠程協議類型實現,主要功能是在服務器上獲取日志文件信息,采集腳本如下:
source /root/.bash_profile
file_dir="/root/hastatus/hastatus.log"
if [ -f "$file_dir" ]; then
rm $file_dir
fi
sleep 1
hastatus -sum >$file_dir
監控項部分分為父監控項和子監控項,為了減少對CTS 的訪問,采用父監控項采集日志文件內的全部信息,采用子監控項在父監控項的基礎上通過正則表達式對信息進行過濾[5],從而獲取具體每個資源組的運行狀態信息。例如,對于AWS-PQC-grp 這個應用的運行狀態采集結果如下:
B AWS-PQC-grp begy-cts01 Y N OFFLINE
B AWS-PQC-grp begy-cts02 Y N ONLINE
則對應的兩個子監控項的正則表達式分別為:B.*(AWS-PQC-grp).*(begy-cts01).*([A-Z]+).*([A-Z]+).*([A-Z]+)和,B.*(AWS-PQCgrp).*(begy-cts02).*([A-Z]+).*([A-Z]+).*([A-Z]+),然后分別取出第5 個字段即表示該應用在兩個節點上是否在線。
告警模塊的功能是通過Zabbix 系統觸發器組件實現。觸發器內嵌有很多函數,本系統使用str()函數來判斷監控項采集的信息中是否包含有OFFLINE 的字符串[6],1 表示信息中能找到,0 表示信息中心未找到。對于并行應用(parallel),每個應用的狀態均是ONLINE 狀態則表示資源組運行正常;對于主備應用(failover),一個應用ONLINE 狀態則表示對應的資源組運行正常。對于這兩種情況對應觸發器里可以包含多個條件,根據資源組在服務器之間的負載類型,觸發器的條件由and 或者or 連接,當負載類型是并行模式(parallel)時條件由and 連接;當負載類型是主備模式(failover)時條件由or 連接,觸發器樣例如下:
parrallel 類負載觸發器
{xxzx_yxjkk_CTS05:begy-cts01-Scheduler-grp.str(ONLINE)}=0 and {xxzx_yxjkk_CTS05:begycts02-Scheduler-grp.str(ONLINE)}=0
failover 類負載觸發器
{xxzx_yxjkk_CTS05:begy-cts07-bstd-grp.str(ONLINE)}=0 or {xxzx_yxjkk_CTS05:begy-cts08-bstd-grp.str(ONLINE)}=0
監控展示模塊功能通過Zabbix 系統拓撲圖組件實現,通過在拓撲圖畫布上添加“元素”,將CTS2 各資源組狀態以圖形的方式進行直觀的展示,在資源組狀態異常時,觸發器就會根據負載類型來判斷是否告警,“元素”圖標也會根據觸發器的狀態而發生變化[7]。通過“元素”之間添加連線可以清楚展示各資源組之間的依賴關系,在發生故障時根據發生異常的“元素”和“連線”可以快速、準確地定位故障發生的資源組及依賴的資源組,提升了運維效率,從而保障了數據服務能力[3],資源組依賴情況如圖2 所示。
圖2 資源組依賴圖Fig.2 Resource group dependency diagram
本文依托開源架構的監控系統Zabbix[8],針對集群的管理軟件VCS 不能提供告警的業務難點展開研究,通過梳理VCS 集群管理軟件上的資源組情況,將資源組之間的依賴關系以及資源組在服務器之間的負載類型考慮進來,實現了CTS 資源組狀態層面的集約化監控,提升了監控的精細性和準確性,提高了核心業務系統CTS 的運維能力,符合氣象信息化發展的需求。