付 琦,张 帆,张仁鹏
(吉林省地震局,吉林 长春 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
吉林省地震烈度速报与预警系统可视化监控平台经过一段时间的试运行测试,可实现对预警台站及预警中心的网络设备、所有物理和虚拟服务器及预警核心业务应用服务的可视化监控,并实现告警信息的自动发送。该系统可实现对吉林省地震烈度速报与预警系统软硬件平台运行状态的实时监控,及时发现系统出现的问题并进行智能化处理,从而有效节省台网运维成本、提高运维效率,保障预警系统连续可靠运行。