王士成,周施文,李水龍,于偉恒,周躍勇
(福建省地震局,福州 350003)
經(jīng)福建省政府授權(quán),福建省地震局已于2018年5月12日開始面向公眾發(fā)布地震預(yù)警信息,因此地震預(yù)警系統(tǒng)的運(yùn)維工作至關(guān)重要。由于地震的不可預(yù)見,而地震預(yù)警系統(tǒng)不像12306或淘寶等系統(tǒng)存在明顯可預(yù)見的高峰或低谷期,亦無法停機(jī)維護(hù),而地震預(yù)警又是“爭(zhēng)分奪秒”,這要求地震預(yù)警系統(tǒng)必須具備7×24 h不間斷運(yùn)行的能力,其穩(wěn)定性和可靠性要求堪比航天級(jí)。地震預(yù)警系統(tǒng)的穩(wěn)定、可靠運(yùn)行除受軟件本身影響外,還會(huì)受到臺(tái)站觀測(cè)數(shù)據(jù)、通信網(wǎng)絡(luò)、時(shí)鐘、運(yùn)行環(huán)境等諸多因素的影響。由于福建地震預(yù)警系統(tǒng)是一套具有完全自主知識(shí)產(chǎn)權(quán),采用多線程、高并發(fā)等技術(shù)實(shí)現(xiàn)的分布式的高度定制化軟件系統(tǒng),市面上現(xiàn)有通用監(jiān)控軟件及前人研究成果[1-2]等無法滿足地震預(yù)警監(jiān)控運(yùn)維需求,因此建設(shè)一套地震預(yù)警運(yùn)維保障系統(tǒng)十分必要。
福建地震預(yù)警系統(tǒng)自2012年正式上線運(yùn)行以來,筆者及所在團(tuán)隊(duì)就開始負(fù)責(zé)該系統(tǒng)的運(yùn)維工作。早期主要以人工為主,每天安排值班人員分時(shí)段檢查系統(tǒng),一般通過分析日志和觀察系統(tǒng)界面及后臺(tái)等方式進(jìn)行,存在工作負(fù)荷重、效率低下、無法監(jiān)控臺(tái)站數(shù)據(jù)、網(wǎng)絡(luò)和服務(wù)器等諸多問題,遠(yuǎn)不能滿足地震預(yù)警系統(tǒng)的運(yùn)維保障需求。因此,從2015年開始筆者針對(duì)福建地震預(yù)警系統(tǒng)的運(yùn)維特點(diǎn)和需求,利用JMX、Sigar、MQTT、WebSocket、ECharts和Html5等技術(shù)組件建設(shè)了一套福建地震預(yù)警運(yùn)維保障系統(tǒng),經(jīng)過多年的功能擴(kuò)充和完善,當(dāng)前系統(tǒng)已具備臺(tái)站數(shù)據(jù)斷記/時(shí)延、數(shù)據(jù)質(zhì)量、預(yù)警系統(tǒng)JVM和關(guān)鍵線程、預(yù)警系統(tǒng)運(yùn)行日志、服務(wù)器CPU、內(nèi)存、網(wǎng)絡(luò)和硬盤及NTP授時(shí)等的(近)實(shí)時(shí)監(jiān)控及可視化展示的功能,在保障地震預(yù)警系統(tǒng)穩(wěn)定可靠運(yùn)行,提升運(yùn)維效率的同時(shí),為福建地震預(yù)警系統(tǒng)服務(wù)福建民眾提供有力保障。系統(tǒng)目前已在福建局、四川局和甘肅局等地部署應(yīng)用,本文就系統(tǒng)有關(guān)情況進(jìn)行介紹。
運(yùn)維保障系統(tǒng)需要滿足跨平臺(tái)、分布式部署的需求,因此采用B/S和C/S混合開發(fā)模式,后端使用Java語言開發(fā),前端使用Jsp&Servlet及Echarts、Html5等,使用MySQL數(shù)據(jù)庫(kù)進(jìn)行日志等的持久化存儲(chǔ),利用Eclipse/IDEA作為IDE開發(fā)工具,使用subversion進(jìn)行版本控制[2-4]。系統(tǒng)技術(shù)方案如圖1所示,設(shè)計(jì)思路如下:
圖1 運(yùn)維保障系統(tǒng)技術(shù)方案Fig.1 Technical scheme of the operation and maintenance system.
(1)系統(tǒng)運(yùn)維需要具備值排班、日志登記、結(jié)果分析比較、經(jīng)驗(yàn)分享等功能,針對(duì)地震預(yù)警的運(yùn)維保障系統(tǒng)的數(shù)據(jù)庫(kù)共設(shè)計(jì)16張表,包括:值班人員信息表,值班人員角色表,值班表,業(yè)務(wù)系統(tǒng)編碼表,監(jiān)控系統(tǒng)連接信息表,監(jiān)控系統(tǒng)日志路徑配置表,系統(tǒng)監(jiān)控日志登記表,值班日志登記表,值班文檔表,波形延遲表,值班報(bào)告信息表,預(yù)警系統(tǒng)處理登記表,預(yù)警發(fā)布信息表,地震預(yù)警定位表,地震三要素表和用戶名密碼找回表。
(2)考慮到地震預(yù)警等業(yè)務(wù)系統(tǒng)一般運(yùn)行在內(nèi)網(wǎng)環(huán)境,而告警信息的展示和推送等又需要外網(wǎng)支持,因此為保障數(shù)據(jù)安全和方便運(yùn)維人員管理,將運(yùn)維保障系統(tǒng)分為數(shù)據(jù)采集(Agent)和數(shù)據(jù)應(yīng)用(Server)兩個(gè)部分,兩者之間通過消息中間件進(jìn)行通信。下面分別就這兩部分進(jìn)行介紹。
數(shù)據(jù)采集(Agent)部分主要負(fù)責(zé)信息采集和處理,一般部署在地震預(yù)警服務(wù)器上??蛻舳烁鶕?jù)其IP地址從數(shù)據(jù)庫(kù)獲取該IP下需要監(jiān)控的業(yè)務(wù)系統(tǒng)的配置參數(shù),如連接預(yù)警系統(tǒng)JVM的JMX參數(shù)、預(yù)警系統(tǒng)運(yùn)行日志路徑等;客戶端采集到的信息使用MQTT協(xié)議或JMS等發(fā)送到消息中間件指定主題;客戶端采用模塊化設(shè)計(jì),各模塊可獨(dú)立運(yùn)行,通過配置文件或網(wǎng)頁可以實(shí)現(xiàn)功能的動(dòng)態(tài)開啟和關(guān)閉而不用更改代碼。其核心功能包括:
(1)監(jiān)控地震預(yù)警系統(tǒng)Java虛擬機(jī)(JVM)的CPU使用率、堆內(nèi)存占用情況、預(yù)警系統(tǒng)數(shù)據(jù)接收線程和處理主線程等重要線程有無丟失、監(jiān)控其運(yùn)行狀態(tài);
(2)根據(jù)一定規(guī)則提取地震預(yù)警系統(tǒng)運(yùn)行日志中不同等級(jí)(DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL等)的日志信息,重點(diǎn)關(guān)注ERROR及以上級(jí)別的日志信息,并對(duì)外告警。
(3)以某個(gè)NTP授時(shí)服務(wù)為基準(zhǔn),比如中國(guó)科學(xué)院國(guó)家授時(shí)中心(NTSC)提供的NTP授時(shí)服務(wù)(ntp.ntsc.ac.cn),監(jiān)控臺(tái)站數(shù)據(jù)斷記/延遲情況,還可以對(duì)預(yù)警系統(tǒng)所在服務(wù)器的NTP授時(shí)進(jìn)行監(jiān)控,保證地震預(yù)警系統(tǒng)授時(shí)準(zhǔn)確;
(4)利用臺(tái)站噪聲功率譜等方法監(jiān)控臺(tái)站數(shù)據(jù)質(zhì)量;
(5)監(jiān)控預(yù)警服務(wù)器的CPU、內(nèi)存、硬盤、網(wǎng)卡等使用情況。
數(shù)據(jù)應(yīng)用(server)部分主要負(fù)責(zé)訂閱消息中間件對(duì)應(yīng)主題,然后接收Agent采集到運(yùn)行狀態(tài)信息和告警信息等并進(jìn)行推送和可視化展示;服務(wù)端同樣采用模塊化設(shè)計(jì),可根據(jù)需要進(jìn)行功能配置部署在不同的機(jī)器上,這樣的設(shè)計(jì)一方面可以減輕單一服務(wù)端的節(jié)點(diǎn)壓力,起到負(fù)載均衡功能;另一方面可以做到內(nèi)外網(wǎng)分離,比如打印、FTP上傳日志和數(shù)據(jù)入庫(kù)等可在內(nèi)網(wǎng)進(jìn)行,而郵件告警或企業(yè)微信推送可在外網(wǎng)處理。服務(wù)端的核心功能包括:
(1)設(shè)定異常等級(jí)劃分和告警規(guī)則,按照不同等級(jí)和規(guī)則向?qū)?yīng)的人員發(fā)送信息;
(2)通過企業(yè)微信或郵件等推送監(jiān)控告警信息或人員值班提醒信息等;
(3)運(yùn)維報(bào)告自動(dòng)打印、自動(dòng)以FTP等方式對(duì)信息進(jìn)行歸檔;
(4)Web界面進(jìn)行排班、統(tǒng)計(jì)分析、監(jiān)控系統(tǒng)參數(shù)配置等;
(5)Web界面實(shí)時(shí)推送和可視化顯示臺(tái)站數(shù)據(jù)斷記/延時(shí),臺(tái)站數(shù)據(jù)質(zhì)量、服務(wù)器的信息等。
基于運(yùn)維人員的監(jiān)控運(yùn)維需求,按照系統(tǒng)技術(shù)方案,福建地震預(yù)警運(yùn)維保障系統(tǒng)主要包括7個(gè)功能模塊,各模塊之間的關(guān)系如圖2所示。
圖2 軟件系統(tǒng)功能流程圖Fig.2 Flow chart of the system
值排班模塊負(fù)責(zé)調(diào)配值班人員,系統(tǒng)巡檢模塊負(fù)責(zé)對(duì)已配置業(yè)務(wù)系統(tǒng)進(jìn)行檢查,并將告警信息通過信息通知模塊推送到值班人員。同時(shí),巡檢結(jié)果、值班人員信息、告警信息、配置參數(shù)等信息存儲(chǔ)在數(shù)據(jù)庫(kù)中,供日志管理模塊、報(bào)表產(chǎn)出、統(tǒng)計(jì)分析和服務(wù)模塊使用。
值排班模塊包括用戶管理模塊和排班模塊。用戶管理模塊按照不同角色用戶擁有不同權(quán)限進(jìn)行設(shè)計(jì)。管理員擁有最高權(quán)限,可查看所有值班日志的權(quán)限并對(duì)某一天的值班日志可進(jìn)行增加、刪除、查詢和修改等操作,普通值班員具有查詢往日值班日志和修改當(dāng)天值班日志內(nèi)容的權(quán)限;排班模塊可以根據(jù)當(dāng)前值班人員情況自動(dòng)地每天分配相應(yīng)的值班人員,同時(shí)允許值班人員申請(qǐng)修改調(diào)整值班順序(圖3)。
圖3 值班查詢與管理界面Fig.3 Query and management interface of system.
系統(tǒng)巡檢模塊主要負(fù)責(zé)對(duì)系統(tǒng)軟件及服務(wù)器硬件等信息的采集和處理、配置和管理系統(tǒng)監(jiān)控有關(guān)參數(shù)進(jìn)行管理,采用模塊化設(shè)計(jì),各模塊可獨(dú)立運(yùn)行,可通過配置文件或網(wǎng)頁實(shí)現(xiàn)功能的動(dòng)態(tài)管理(圖4)。主要功能包括:
圖4 系統(tǒng)重要線程管理界面(可動(dòng)態(tài)配置監(jiān)聽參數(shù)及監(jiān)控狀態(tài))Fig.4 Management interface of key threads of the system(dynamically configure monitoring parameters and status)
(1)利用JMX技術(shù)實(shí)現(xiàn)對(duì)地震預(yù)警系統(tǒng)JVM虛擬機(jī)的CPU,堆內(nèi)存使用率,以及數(shù)據(jù)接收、預(yù)警處理等重要線程的實(shí)時(shí)監(jiān)控;
(2)利用自研組件實(shí)現(xiàn)了對(duì)地震預(yù)警系統(tǒng)運(yùn)行日志的監(jiān)控和錯(cuò)誤自動(dòng)提?。灰灾袊?guó)科學(xué)院國(guó)家授時(shí)中心(NTSC)提供的NTP授時(shí)服務(wù)(ntp.ntsc.ac.cn)為基準(zhǔn),對(duì)中心NTP授時(shí)服務(wù)以及各臺(tái)站數(shù)據(jù)的時(shí)間延遲進(jìn)行監(jiān)控;
(3)使用基于臺(tái)站噪聲判別數(shù)據(jù)質(zhì)量方法實(shí)現(xiàn)對(duì)地震臺(tái)站的數(shù)據(jù)質(zhì)量進(jìn)行監(jiān)控[5];
(4)利用Sigar組件實(shí)現(xiàn)了對(duì)預(yù)警系統(tǒng)服務(wù)器的CPU、內(nèi)存、硬盤、進(jìn)程和網(wǎng)絡(luò)接口等的監(jiān)控;
(5)利用MQTT、JMS等技術(shù)協(xié)議將監(jiān)控信息和告警信息推送到消息中間件,供服務(wù)模塊使用。
包括告警規(guī)則設(shè)定和告警通知兩部分。告警規(guī)則設(shè)定根據(jù)問題嚴(yán)重程度進(jìn)行劃分,具體包括:一般異常、中等異常和嚴(yán)重異常。告警通知包括每日值班提醒和告警信息提醒。一般異常無須處理只進(jìn)行歸檔,中等異常需要加強(qiáng)關(guān)注可不處理,嚴(yán)重異常需要人工立即處理(表1)。
表1 異常分類表Table 1 Anomaly classification table
此模塊允許運(yùn)維人員通過網(wǎng)絡(luò)查詢當(dāng)前或歷史的系統(tǒng)運(yùn)行日志、值班日志,支持時(shí)間范圍、系統(tǒng)名稱、日志等級(jí)、進(jìn)程名稱等的搜索;可手動(dòng)添加、補(bǔ)充或編輯系統(tǒng)和值班日志,同時(shí)還可自動(dòng)生成當(dāng)天或任一時(shí)段任意指定內(nèi)容的值班內(nèi)容(圖5)。
圖5 日志查詢與管理界面Fig.5 Query and management interface for logs
統(tǒng)計(jì)分析模塊使用HighCharts顯示統(tǒng)計(jì)結(jié)果,主要包括:異常統(tǒng)計(jì)分析,可以統(tǒng)計(jì)一天、一周或一個(gè)月異常出現(xiàn)的情況;地震預(yù)警系統(tǒng)產(chǎn)出分析,可以統(tǒng)計(jì)預(yù)警的處理情況,如震中偏差、震級(jí)偏差等;人員值班分析,可根據(jù)排班情況,自動(dòng)分析每位值班員的值班次數(shù),值班情況,用于后續(xù)排班和值班人員績(jī)效考核。見圖6。
圖6 地震預(yù)警統(tǒng)計(jì)分析Fig.6 Statistic analysis of earthquake early warning system
產(chǎn)出模塊可根據(jù)需求自動(dòng)產(chǎn)出當(dāng)日值班報(bào)告、一周異常統(tǒng)計(jì)分析報(bào)告,業(yè)務(wù)系統(tǒng)處理情況報(bào)告或值班人員考勤報(bào)告等,運(yùn)維人員可通過網(wǎng)頁進(jìn)行下載。
服務(wù)模塊包括兩個(gè)部分:資料共享服務(wù)部分和可視化展示部分。資料共享服務(wù)部分具有展示系統(tǒng)值班相關(guān)材料的功能。如值班制度,值班細(xì)則,值班表等可以通過網(wǎng)頁形式進(jìn)行展示,可提供下載與打印服務(wù)。使用pdfview.js實(shí)現(xiàn)PDF文件在網(wǎng)頁的顯示??梢暬故静糠质褂肳ebSocket協(xié)議、ECharts開源組件和Html5等實(shí)現(xiàn)臺(tái)站數(shù)據(jù)延遲/斷記,臺(tái)站數(shù)據(jù)質(zhì)量,臺(tái)站地震動(dòng)信息的實(shí)時(shí)顯示;使用Highcharts組件顯示服務(wù)器硬件CPU、內(nèi)存、硬盤等的監(jiān)控信息(圖7)。
圖7 基于HighCharts的預(yù)警服務(wù)器監(jiān)控信息顯示Fig.7 The interface of the system monitoring information based on HighCharts
自2015年研發(fā)完成上線運(yùn)行以來,福建地震預(yù)警運(yùn)維保障系統(tǒng)已先后在福建局、甘肅局和四川局等地部署應(yīng)用,用于福建地震預(yù)警系統(tǒng)的監(jiān)控運(yùn)維,實(shí)時(shí)監(jiān)控和告警包括臺(tái)站時(shí)延異常、數(shù)據(jù)流服務(wù)中斷、內(nèi)存溢出、重要線程丟失等嚴(yán)重異常,有效地保障了地震預(yù)警系統(tǒng)的正常運(yùn)行,提升了運(yùn)維效率。部分告警信息如圖8、圖9所示。
圖8 內(nèi)存溢出告警,流服務(wù)中斷郵件告警Fig.8 The warning of the OOM and data service interruption notified by E-mail.
圖9 企業(yè)微信推送告警信息Fig.9 Warning information pushed by Enterprise WeChat
本文介紹了福建地震預(yù)警運(yùn)維保障系統(tǒng)的設(shè)計(jì)方案、關(guān)鍵技術(shù)和功能模塊,對(duì)系統(tǒng)應(yīng)用情況進(jìn)行了說明。應(yīng)用表明,福建地震預(yù)警運(yùn)維保障系統(tǒng)可以對(duì)影響地震預(yù)警處理諸多因素如臺(tái)站數(shù)據(jù)斷記/延時(shí),臺(tái)站質(zhì)量、NTP授時(shí)和運(yùn)行環(huán)境等進(jìn)行監(jiān)控和告警,有效地保障了福建地震預(yù)警系統(tǒng)穩(wěn)定可靠運(yùn)行,提升了運(yùn)維效率。當(dāng)然,一套完整的監(jiān)控與運(yùn)維保障系統(tǒng)實(shí)際應(yīng)包含臺(tái)站、觀測(cè)數(shù)據(jù)、業(yè)務(wù)系統(tǒng)、設(shè)備運(yùn)行和臺(tái)網(wǎng)運(yùn)行等諸多方面,本文介紹的福建地震預(yù)警運(yùn)維保障系統(tǒng)只涉及到其中很少部分,因此考慮后續(xù)逐步進(jìn)行功能的擴(kuò)充和完善。