付 琦,張 帆,張仁鵬
(吉林省地震局,吉林 長春 130117)
國家地震烈度速報與預警工程吉林子項目將測震臺網和強震臺網有機融合,結合測震學和工程學的特點及優勢,將多重算法計算的參數結果融合之后實現秒級地震預警、分鐘級地震烈度速報。項目建成后可彌補現有臺網能力的不足,有效提高減災能力和社會服務能力。
該項目建設主體由一個省級預警中心和30個基本站(強震臺)、30 個基準站(強震和測震)、30 個一般站(簡易烈度計)構成,而整個工程項目的核心就是核心業務處理系統。該系統主要以深研院開發的JOPENS 平臺為基礎進行搭建,采用Java 語言進行編寫,分成數據采集,數據流分布式匯集,數據處理分析和顯示、發布、報警等四個模塊;觀測系統采用加速度計、測震計以及簡易烈度儀三種觀測手段相結合的方式部署,通信系統采用中國電信的2M MSTP數據專線。
目前吉林子項目雖已實現臺站數據的匯聚與上傳,軟硬件平臺也都能穩定運行,但在實際運維中,也暴露出一些問題,如缺少對硬件系統的監控、豐富的告警媒介以及可視化監控等。針對上述問題,基于Zabbix 開源平臺開發了一套功能強大、穩定高效的可視化監控平臺。
Zabbix 是一款用于監控IT 設備及服務可用性和性能情況的開源分布式監控系統,具有各種功能完備的系統模塊,可部署在Linux、Unix、BSD 及Windows 等多種操作系統平臺,擁有高性能的實時監控能力,并具有可視化,提供圖形、聚合圖形及拓撲等多種動態展示功能。
Zabbix 與Nagios、Cacti 及Prometheus 等同類型軟件相比有如下優勢:
(1)提供更加強大、友好的UI 界面。Zabbix對監控主機的所有操作幾乎都可以通過瀏覽器在用戶的Web 界面來完成,極少數的自定義監控需要通過后臺的配置文件來實現。
(2)可實現全棧的監控。Zabbix 可以監控物理層面的主機、CPU、內存即硬盤I/O 等,可以監控服務層諸如Nginx、RediMySQL 即Tomcat等服務,還可以監控應用層面的例如SNMP、IPMI、JMX等應用協議。
(3)具有多重的可視化監控展示。Zabbix自帶強大的可視化模塊,用戶可根據監控項自行創建定制化的圖形監控、聚合圖形和拓撲圖,極大地方便了運維工作。
(4)具有豐富的自定義監控設置。Zabbix可通過自定義監控項定制模板中不存在的或者滿足不了我們要求的監控項,并進行監控。
Zabbix 屬于低并發服務平臺,穩定性高、配置簡單。
1.2.1 Zabbix-Agent方式
安裝在主機上的Zabbix-Agent 將收集的數據發送至Zabbix-Server 端存儲到MySQL 數據庫中,Zabbix-Web 端將其取出并在前端頁面展現、繪圖和告警。
1.2.2 SNMP方式
Zabbix-Server端通過被監控設備上的SNMP信息來識別并監控網絡設備的狀態信息。
吉林省預警中心采用基于JOPENS 6.1.10的地震烈度速報與預警系統,臺網設備分為基本站、基準站和一般站。基本站和基準站通過2M 數據專線連接省局,一般站則由鐵塔集團的FSU 以4G 方式將數據回傳至上海鐵塔云中心,該中心再通過專線將數據傳給吉林局。
核心業務處理系統采用深研院以Java 語言開發、基于JOPENS6.1.10 的系統框架,包括數據流分布式匯集模塊和數據處理分析模塊。前一模塊負責站點匯集存儲和分發,后一模塊負責地震波形數據的計算、處理及結果的融合。核心業務處理系統應用JEE7新技術和規范,最新版的系統以Wildfly 取代原有的JBOSS 作為中間件,使整個系統容易部署和維護。系統數據庫為關系型數據庫MySQL57。按照軟件模塊部署位置分為如下幾個部分。
2.2.1 流服務器
包括儀器適配器JOPENS-Box 服務、數據庫服務Mysqld、應用程序中間件服務Wildfly 以及流服務SSS。
2.2.2 核心數據處理服務器
包括應用程序服務Wildfly、波形存儲服務AWS、地震參數速報RTS、地震預警JEEW、預警信息融合Merge、地震烈度速報服務JOPENS-gm、地震烈度速報計算ShakeMap、MQTT 消息中間件Mosquitto 以及數據庫服務Mysqld。
2.2.3 核心數據處理客戶端
包括綜合地震波形分析軟件MSDP 和地震預警JEEW-GUI。

圖1 軟件模塊部署示意圖Fig.1 Software module deployment diagram
以基本站觀測系統為例,基本站配備深研院開發的JS-A2 強震計,數采采用港震公司開發的EDAS-24GN,傳輸設備為華三公司的H3C IE4300-12P-PWR,數據鏈路為中國電信的2M MSTP數據專線。
吉林省地震烈度速報與預警系統智能監控平臺的結構分為預警核心業務處理系統監控、預警中心網絡系統監控與觀測系統監控三大部分。
3.1.1 核心業務處理系統監控
核心業務處理系統監控分為系統狀態部分與應用服務監控部分。系統狀態部分含服務器CPU、內存、系統負載及網卡流量監控等;應用服務監控部分含中間件Wildfly 服務(Standalone)、數據庫服務(Mysqld)、數據流服務進(SSS)、消息服務(Mosquitto)、烈度速報計算(ShakeMap)、烈度速報服務(JOPENS-gm)、波形存儲(AWS)及時間服務(NTPD)等。
3.1.2 預警中心網絡系統監控
預警中心網絡系統監控主要指網絡通信設備監控和網絡安全設備監控。被監控網絡設備需要配置統一的SNMP 信息,監控平臺服務器端通過SNMP信息抓取被監控設備的各種信息。
3.1.3 觀測系統的監控
觀測系統監控包括數采監控、接入網絡設備監控以及動環設備監控。
Zabbix 系統自帶多種設備及監控項的模板,能夠滿足大多數用戶的需求,例如CPU 負載、網卡流量、磁盤使用率等。用戶可以根據實際需求去選擇相應模板,并對模板中的監控項根據運維中對各系統監控記錄的分析、總結經驗、設定合理的告警閾值,以便在系統出現故障時能第一時間觸發告警通知運維人員或者自動化處理。
表1 為地震烈度速報與預警系統的主要監控項以及監控項閾值,例如CPU 負載這一項,告警閾值>5,即當CPU 負載達到50%以上將觸發監控告警。又例如核心存儲進程AWS 這一項,告警閾值為0,即當系統對AWS 進程進行PS 命令操作返回值為0 時,將視該進程已經死亡,進而觸發進程監控告警。

表1 地震烈度速報與預警系統監控項閾值設計
當模板中的監控項無法滿足用戶需求時,就需要自定義監控項。對于烈度速報與預警系統這種高度定制的系統來說,大部分的應用服務在模板中是不存在的,需要開發人員自行編譯。
通常自定義監控項有兩種方式,一個是編寫Shell 腳本放在被監控主機的Zabbix_Agent 根目錄下,然后由其調用對主機監控;另一方法是直接將監控命令寫在被監控主機配置文件中直接對主機進行監控。
以核心業務處理系統中流服務模塊為例,對其Wildfly 中間件生存狀態、Mysqld 服務生存狀態、流服務CPU 利用率及生存狀態進行監控。其監控命令及配置步驟如下。
3.3.1 自定義監控項的設計
找到被監控主機的Zabbix_Agentd 配置文件,編輯自定義監控項UserParameter,語法是UserParameter=<key>,<command>,Key 是監控項鍵值,command 是可執行監控命令或執行腳本信息(表2)。

表2 核心數據處理系統自定義監控項釋義
3.3.2 在監控系統服務端添加監控項
在Zabbix-Web 端配置自定義監控項的相關信息,把Zabbix_Agentd.conf文件中UserParameter的鍵值添加進去。
3.3.3 添加監控圖形
根據自定義監控項的鍵值繪制圖形,通過圖形化監控直觀了解被監控項的狀態。
3.3.4 自定義觸發器
根據設計好的監控項閾值配置相應的觸發器,當監控項的Key 值達到監控閾值時,觸發自動化處理動作或企業微信告警。
企業微信告警是監控系統的重要組成部分,它負責將所有的告警信息以微信的方式推送給運維人員,為運維人員處置故障提供決策依據。筆者在Zabbix-Server 端編寫企業微信告警推送的Python 腳本,當被監控主機出現故障時,觸發器觸發企業微信告警并調用告警Python 腳本發送信息給運維人員。
觸發告警就是參數傳遞的過程,在定義微信告警內容時,主要有三個基本信息需要傳遞給微信告警腳本:即{ALERT.SENDTO}發給誰、{ALERT.SUBJECT}發送的主題、{ALERT.MESSAGE}發送的內容(表3)。

表3 企業微信告警腳本代碼釋義
其次,就是獲得企業微信的Corpid、Ap-pSecret 和AgentID,這些在注冊企業微信時可以獲取到。核心語句及釋義如表2所示。
企業微信告警的內容包括被監控主機故障發現、故障恢復以及故障更新。
監控系統還提供了聚合圖形監控,就是將若干個相關監控項的圖形組合在一起,方便運維人員掌握多組數據及應用服務狀態。圖3 為JOPENS系統的聚合圖形監控。

圖2 JOPENS系統聚合圖形Fig.2 System aggregation graph
吉林省地震烈度速報與預警系統可視化監控平臺經過一段時間的試運行測試,可實現對預警臺站及預警中心的網絡設備、所有物理和虛擬服務器及預警核心業務應用服務的可視化監控,并實現告警信息的自動發送。該系統可實現對吉林省地震烈度速報與預警系統軟硬件平臺運行狀態的實時監控,及時發現系統出現的問題并進行智能化處理,從而有效節省臺網運維成本、提高運維效率,保障預警系統連續可靠運行。