福建地震预警运维保障系统设计与实现

2022-10-29 04:43王士成周施文李水龙于伟恒周跃勇
华南地震 2022年3期
关键词:保障系统预警系统台站

王士成,周施文,李水龙,于伟恒,周跃勇

(福建省地震局,福州 350003)

0 引言

经福建省政府授权,福建省地震局已于2018年5月12日开始面向公众发布地震预警信息,因此地震预警系统的运维工作至关重要。由于地震的不可预见,而地震预警系统不像12306或淘宝等系统存在明显可预见的高峰或低谷期,亦无法停机维护,而地震预警又是“争分夺秒”,这要求地震预警系统必须具备7×24 h不间断运行的能力,其稳定性和可靠性要求堪比航天级。地震预警系统的稳定、可靠运行除受软件本身影响外,还会受到台站观测数据、通信网络、时钟、运行环境等诸多因素的影响。由于福建地震预警系统是一套具有完全自主知识产权,采用多线程、高并发等技术实现的分布式的高度定制化软件系统,市面上现有通用监控软件及前人研究成果[1-2]等无法满足地震预警监控运维需求,因此建设一套地震预警运维保障系统十分必要。

福建地震预警系统自2012年正式上线运行以来,笔者及所在团队就开始负责该系统的运维工作。早期主要以人工为主,每天安排值班人员分时段检查系统,一般通过分析日志和观察系统界面及后台等方式进行,存在工作负荷重、效率低下、无法监控台站数据、网络和服务器等诸多问题,远不能满足地震预警系统的运维保障需求。因此,从2015年开始笔者针对福建地震预警系统的运维特点和需求,利用JMX、Sigar、MQTT、WebSocket、ECharts和Html5等技术组件建设了一套福建地震预警运维保障系统,经过多年的功能扩充和完善,当前系统已具备台站数据断记/时延、数据质量、预警系统JVM和关键线程、预警系统运行日志、服务器CPU、内存、网络和硬盘及NTP授时等的(近)实时监控及可视化展示的功能,在保障地震预警系统稳定可靠运行,提升运维效率的同时,为福建地震预警系统服务福建民众提供有力保障。系统目前已在福建局、四川局和甘肃局等地部署应用,本文就系统有关情况进行介绍。

1 整体设计

运维保障系统需要满足跨平台、分布式部署的需求,因此采用B/S和C/S混合开发模式,后端使用Java语言开发,前端使用Jsp&Servlet及Echarts、Html5等,使用MySQL数据库进行日志等的持久化存储,利用Eclipse/IDEA作为IDE开发工具,使用subversion进行版本控制[2-4]。系统技术方案如图1所示,设计思路如下:

图1 运维保障系统技术方案Fig.1 Technical scheme of the operation and maintenance system.

(1)系统运维需要具备值排班、日志登记、结果分析比较、经验分享等功能,针对地震预警的运维保障系统的数据库共设计16张表,包括:值班人员信息表,值班人员角色表,值班表,业务系统编码表,监控系统连接信息表,监控系统日志路径配置表,系统监控日志登记表,值班日志登记表,值班文档表,波形延迟表,值班报告信息表,预警系统处理登记表,预警发布信息表,地震预警定位表,地震三要素表和用户名密码找回表。

(2)考虑到地震预警等业务系统一般运行在内网环境,而告警信息的展示和推送等又需要外网支持,因此为保障数据安全和方便运维人员管理,将运维保障系统分为数据采集(Agent)和数据应用(Server)两个部分,两者之间通过消息中间件进行通信。下面分别就这两部分进行介绍。

数据采集(Agent)部分主要负责信息采集和处理,一般部署在地震预警服务器上。客户端根据其IP地址从数据库获取该IP下需要监控的业务系统的配置参数,如连接预警系统JVM的JMX参数、预警系统运行日志路径等;客户端采集到的信息使用MQTT协议或JMS等发送到消息中间件指定主题;客户端采用模块化设计,各模块可独立运行,通过配置文件或网页可以实现功能的动态开启和关闭而不用更改代码。其核心功能包括:

(1)监控地震预警系统Java虚拟机(JVM)的CPU使用率、堆内存占用情况、预警系统数据接收线程和处理主线程等重要线程有无丢失、监控其运行状态;

(2)根据一定规则提取地震预警系统运行日志中不同等级(DEBUG,INFO,WARN,ERROR,FATAL等)的日志信息,重点关注ERROR及以上级别的日志信息,并对外告警。

(3)以某个NTP授时服务为基准,比如中国科学院国家授时中心(NTSC)提供的NTP授时服务(ntp.ntsc.ac.cn),监控台站数据断记/延迟情况,还可以对预警系统所在服务器的NTP授时进行监控,保证地震预警系统授时准确;

(4)利用台站噪声功率谱等方法监控台站数据质量;

(5)监控预警服务器的CPU、内存、硬盘、网卡等使用情况。

数据应用(server)部分主要负责订阅消息中间件对应主题,然后接收Agent采集到运行状态信息和告警信息等并进行推送和可视化展示;服务端同样采用模块化设计,可根据需要进行功能配置部署在不同的机器上,这样的设计一方面可以减轻单一服务端的节点压力,起到负载均衡功能;另一方面可以做到内外网分离,比如打印、FTP上传日志和数据入库等可在内网进行,而邮件告警或企业微信推送可在外网处理。服务端的核心功能包括:

(1)设定异常等级划分和告警规则,按照不同等级和规则向对应的人员发送信息;

(2)通过企业微信或邮件等推送监控告警信息或人员值班提醒信息等;

(3)运维报告自动打印、自动以FTP等方式对信息进行归档;

(4)Web界面进行排班、统计分析、监控系统参数配置等;

(5)Web界面实时推送和可视化显示台站数据断记/延时,台站数据质量、服务器的信息等。

2 功能设计及实现

基于运维人员的监控运维需求,按照系统技术方案,福建地震预警运维保障系统主要包括7个功能模块,各模块之间的关系如图2所示。

图2 软件系统功能流程图Fig.2 Flow chart of the system

值排班模块负责调配值班人员,系统巡检模块负责对已配置业务系统进行检查,并将告警信息通过信息通知模块推送到值班人员。同时,巡检结果、值班人员信息、告警信息、配置参数等信息存储在数据库中,供日志管理模块、报表产出、统计分析和服务模块使用。

2.1 值排班模块

值排班模块包括用户管理模块和排班模块。用户管理模块按照不同角色用户拥有不同权限进行设计。管理员拥有最高权限,可查看所有值班日志的权限并对某一天的值班日志可进行增加、删除、查询和修改等操作,普通值班员具有查询往日值班日志和修改当天值班日志内容的权限;排班模块可以根据当前值班人员情况自动地每天分配相应的值班人员,同时允许值班人员申请修改调整值班顺序(图3)。

图3 值班查询与管理界面Fig.3 Query and management interface of system.

2.2 系统巡检模块

系统巡检模块主要负责对系统软件及服务器硬件等信息的采集和处理、配置和管理系统监控有关参数进行管理,采用模块化设计,各模块可独立运行,可通过配置文件或网页实现功能的动态管理(图4)。主要功能包括:

图4 系统重要线程管理界面(可动态配置监听参数及监控状态)Fig.4 Management interface of key threads of the system(dynamically configure monitoring parameters and status)

(1)利用JMX技术实现对地震预警系统JVM虚拟机的CPU,堆内存使用率,以及数据接收、预警处理等重要线程的实时监控;

(2)利用自研组件实现了对地震预警系统运行日志的监控和错误自动提取;以中国科学院国家授时中心(NTSC)提供的NTP授时服务(ntp.ntsc.ac.cn)为基准,对中心NTP授时服务以及各台站数据的时间延迟进行监控;

(3)使用基于台站噪声判别数据质量方法实现对地震台站的数据质量进行监控[5];

(4)利用Sigar组件实现了对预警系统服务器的CPU、内存、硬盘、进程和网络接口等的监控;

(5)利用MQTT、JMS等技术协议将监控信息和告警信息推送到消息中间件,供服务模块使用。

2.3 信息通知模块

包括告警规则设定和告警通知两部分。告警规则设定根据问题严重程度进行划分,具体包括:一般异常、中等异常和严重异常。告警通知包括每日值班提醒和告警信息提醒。一般异常无须处理只进行归档,中等异常需要加强关注可不处理,严重异常需要人工立即处理(表1)。

表1 异常分类表Table 1 Anomaly classification table

2.4 日志管理模块

此模块允许运维人员通过网络查询当前或历史的系统运行日志、值班日志,支持时间范围、系统名称、日志等级、进程名称等的搜索;可手动添加、补充或编辑系统和值班日志,同时还可自动生成当天或任一时段任意指定内容的值班内容(图5)。

图5 日志查询与管理界面Fig.5 Query and management interface for logs

2.5 统计分析模块

统计分析模块使用HighCharts显示统计结果,主要包括:异常统计分析,可以统计一天、一周或一个月异常出现的情况;地震预警系统产出分析,可以统计预警的处理情况,如震中偏差、震级偏差等;人员值班分析,可根据排班情况,自动分析每位值班员的值班次数,值班情况,用于后续排班和值班人员绩效考核。见图6。

图6 地震预警统计分析Fig.6 Statistic analysis of earthquake early warning system

2.6 产出模块

产出模块可根据需求自动产出当日值班报告、一周异常统计分析报告,业务系统处理情况报告或值班人员考勤报告等,运维人员可通过网页进行下载。

2.7 服务模块

服务模块包括两个部分:资料共享服务部分和可视化展示部分。资料共享服务部分具有展示系统值班相关材料的功能。如值班制度,值班细则,值班表等可以通过网页形式进行展示,可提供下载与打印服务。使用pdfview.js实现PDF文件在网页的显示。可视化展示部分使用WebSocket协议、ECharts开源组件和Html5等实现台站数据延迟/断记,台站数据质量,台站地震动信息的实时显示;使用Highcharts组件显示服务器硬件CPU、内存、硬盘等的监控信息(图7)。

图7 基于HighCharts的预警服务器监控信息显示Fig.7 The interface of the system monitoring information based on HighCharts

3 应用情况

自2015年研发完成上线运行以来,福建地震预警运维保障系统已先后在福建局、甘肃局和四川局等地部署应用,用于福建地震预警系统的监控运维,实时监控和告警包括台站时延异常、数据流服务中断、内存溢出、重要线程丢失等严重异常,有效地保障了地震预警系统的正常运行,提升了运维效率。部分告警信息如图8、图9所示。

图8 内存溢出告警,流服务中断邮件告警Fig.8 The warning of the OOM and data service interruption notified by E-mail.

图9 企业微信推送告警信息Fig.9 Warning information pushed by Enterprise WeChat

4 结语

本文介绍了福建地震预警运维保障系统的设计方案、关键技术和功能模块,对系统应用情况进行了说明。应用表明,福建地震预警运维保障系统可以对影响地震预警处理诸多因素如台站数据断记/延时,台站质量、NTP授时和运行环境等进行监控和告警,有效地保障了福建地震预警系统稳定可靠运行,提升了运维效率。当然,一套完整的监控与运维保障系统实际应包含台站、观测数据、业务系统、设备运行和台网运行等诸多方面,本文介绍的福建地震预警运维保障系统只涉及到其中很少部分,因此考虑后续逐步进行功能的扩充和完善。

猜你喜欢
保障系统预警系统台站
中国科学院野外台站档案工作回顾
气象基层台站建设
建立智能地质保障系统的8大关键技术
民用飞机机载跑道入侵预警系统仿真验证
一种基于CNN迁移学习的井下烟、火智能感知预警系统
基于ZigBee与GPRS的输电杆塔倾斜监测预警系统
地面气象观测站远程保障系统设计与实现
桥、隧安全防范声光预警系统
国产500kW发射机灯丝UPS电源保障系统
基层台站综合观测业务管理之我见