基金项目:中国地震局地震监测预报预警(CEA-JCYJ-202501030)
作者简介:陈家樑(1985-),工程师,主要从事地震专业系统运维与数据质量监管。E-mail:cjlianga@163.com
Fujian Earthquake Agency , Fuzhou 350003, China
DOI: 10.13512/j.hndz.2026.02.17
随着预警工程项目正式开放对外服务,一方面提升了地震系统服务政府及人民的地震预警能力,另一方面对其中的核心业务系统的长期稳定运行提出了更高的要求。福建预警中心以一类省级中心标准建设,在满足物理设备工作环境要求的同时,统一部署数据处理系统、紧急地震信息服务系统、监控与运维系统和硬件支撑系统,为预警项目功能实现提供工作环境和软硬件支撑。福建预警台网中心已建成基于VMware的超融合平台,为最大限度的保证核心业务系统运行的稳定性,我中心采用一套虚拟化服务器,一套物理服务器的主备方式部署预警核心业务系统。
Zabbix是一款功能强大的监控工具,且已兼具对部署常规系统的物理服务器和部署ESXI服务器的监控,对于VMware的监控主要通过Collectors进程收集vSphere的配置信息,其中包括对ESXI实例的监控。对于物理机及虚拟服务器实例主要通过Zabbix Agent 采集对象数据,再主动向 Zabbix Server发送注册信息的方式进行监控。将其融合应用到预警系统中,细化预警系统各模块具体运行指标的监控项,分级分类的告警处理机制,有助于提高发现故障的时效性。
Zabbix是企业级开源监控解决方案,支持实时监控数万台服务器、虚拟机和网络设备。最新长期支持版为Zabbix6.0 LTS,6系列紧跟时代发展,支持对容器、云、VMware、IoT物联网的监控。
(1)强大的监控能力。 Zabbix集成了SNMP、agent、IPMI等多种数据采集方式[1],且能够监控各种网络环境、网络设备、服务器硬件、操作系统、应用程序以及数据库等。无论是物理设备还是虚拟环境, Zabbix都能提供全面的监控,此外, Zabbix还支持自定义监控,用户可以根据自己的需求,定义监控键值并编写实现监控目标的脚本程序。
(2)灵活的告警机制。Zabbix6.0系列提供了灵活的告警机制,允许用户自定义告警类别、告警信息和告警媒介。提供只要可监控即可告警的机制,根据监控类别不同定制化告警信息,同时可提供邮件、微信、短信等主流的信息发送媒介,使得用户能够迅速响应问题,提高发现和修复问题的时效性。
(3)易于使用和扩展。Zabbix具有直观且元素丰富的界面,内置大批模板开箱即用,使得用户能够轻松上手提升其操作体验。此外Zabbix的模块化设计使其易于扩展,用户可以根据自身需求随时增删监控项及告警项。
(4)数据安全和认证。 Zabbix前端可以通过SSL保护连接访问,以确保用户和服务器之间的安全。此外Zabbix支持使用传输层安全(TLS)协议v.1.2和v.1.3进行组件间的加密通信。
Zabbix由多个组件构成,其核心组件(如图1所示)包括以下几方面:
(1)Zabbix Server, Zabbix监控系统的核心组件,负责接收来自Agent、Proxy和其他监控组件的数据、处理触发器、告警和历史数据,并提供用户界面的API以进行配置和数据检索[2]。
(2)Zabbix Agent,部署于被监控主机上,用于将指定的监控项数据发送给Zabbix Server,Agent有主动和被动两种模式。
(3)Zabbix Proxy,适用于大型的分布式的监控环境,用以减轻Zabbix Server的负载。
(4)Zabbix Database,数据库用于存储所有配置信息、历史数据、事件数据等,支持独立部署或与Server一体化部署[3]。
(5)Zabbix Web,Zabbix系统的前端界面,用以提供简洁友好的参数配置、用户权限配置及监控数据展示等操作平台。
图1 Zabbix架构Fig.1 Zabbix architecture
图2 Zabbix监控流程图Fig.2 Zabbix monitoring flowchart
按国家预警工程相关要求将台站归纳为一般站、基本站和基准站三类站点,我省目前在线运行有900个一般站、85个基本站、120个基准站。因我省预警项目启动较早,一般站中有300个属于示范区项目建成的,这些站点主要通过中国电信的MPLS VPN组网方式将数据分别传输至福建预警中心与福建省海洋地震观测中心[4]。其余600个一般站实时数据流通过4G/5G传递到铁塔上海云中心,再通过预警骨干网传输到省级中心。基本站与基准站则是通过地震行业网或者承载网同时传送两路数据到省级中心,各核心系统再从省级主备波形交换管理服务器中接收实时数据进行相应处理。
图3 福建预警台网核心数据处理系统全功能部署图Fig.3 The full-featured deployment diagram of the Fujian Early Warning Network’s core data processing system
数据观测系统即部署在野外对地震动进行实时数据采集系统,根据站点类型的不同对观测场地和观测仪器也有不同的要求。目前福建预警台网在线运行的站点中,使用的观测设备涵盖了国内外主要仪器厂家的产品,主要包含有深研院、港震、泰德等国内的产品,也有Guralp、Kinematic等国外的产品。
数据汇集系统即JOPENS系统,各台站将实时波形数据按统一的CSTP数据协议发送至数据汇集服务器,数据汇集服务器采用主备方式部署,同时将汇集到的实时数据流转发至国家台网中心及灾备中心。按照预警工程相关要求,数据汇集服务器同时还需要接收邻省相关台站数据,并配置相关用户给邻省数据中心,用于接收本省相关台站数据。
波形存储管理系统部署的也是JOPENS系统,主要将实时波形数据接收至波形存储管理服务器并开启AWS模块,该模块主要采用文件系统建立NetCDF方式的索引,将实时数据流以miniSeed格式存储至硬盘中,以供其他科学研究使用。同时该系统还负责将波形数据提供给后端的数据处理系统,包括但不限于地震预警系统、地震烈度速报系统、地震参数速报系统等。
数据处理系统主要负责处理实时波形数据,产出对应的功能信息。地震预警系统用以快速处理实时波形数据后产出地震三要素和其他必要信息。地震烈度速报系统负责产出烈度图,为应急部门实施更为精准的救灾提供科学依据。地震参数速报系统主要用于完成地震事件自动检测、地震基本参数速报、地震基本参数人机交互速报等。综合波形分析系统则需依赖地震参数速报系统,该系统除产出最终的人工地震三要素外,还具备矩张量反演、时频分析及震源破裂过程计算等功能。紧急信息发布系统采用“国—省—市”三级发布体系,以信息发布系统为纽带,连接预警终端等系统。除市级发布系统对接省级发布系统外,国省两级分别对接各自的决策系统。
(1)明确监控系统的目标和需求,监控项需包括关键业务、性能指标及安全和稳定性的要求。
(2)全流程监控,为确保监控目标的实现,深入了解系统运行全流程各环节的因果顺序,提升监控及告警策略的细粒度及监控项设置的科学性。
(2)自动化和集成,充分利用Zabbix系统自带的监控告警功能,如自动发现新设备、自动注册新主机等,减少人为设置的需求。
(4)可预测可优化的监控,通过长期数据收集分析系统的性能趋势和模式,有助于预测未来的资源需求,并且根据现实需求可优化调整监控项及阈值。
预警系统的中的核心系统,多数由深圳防灾减灾技术研究院开发的JOPENS6.2系统(以下简称6.2系统)承担(表1),根据各系统不同的功能实现决定哪些模块需要开启。在预警系统上线之前,福建地震台网中心的数据汇集主要依靠JOPENS5.2系统(以下简称5.2系统),其功能模块、集成方式及部署方式都与6.2系统有区别。6.2系统部署于FreeBSD系统,5.2系统部署于SUSE Linux系统[5], 5.2系统数据的接收和分发还没有集成到jopens-box中,EJB容器为JBoss,一台全功能的5.2系统服务器需要开启表2所示的功能模块。5.2系统目前仍应用在人工速报及编目,且实时数据流还参与预警系统的地震参数速报系统。数据汇集系统起着承上启下的作用,数据流是预警系统所有功能实现的基础,5.2系统的实时数据流已汇集到6.2系统上,因此本文主要以数据汇集系统JOPENS6.2作为监控对象进行讨论。
(1)操作系统运行指标的监控,与其他软件一样JOPENS的正常运行依赖于硬件设备如CPU、内存及磁盘的使用是否超限,因此首先需对操作系统的这三项基本要素进行监控。其次6.2系统必须用到实时数据流,特别是数据汇集系统涉及到大量的数据接收及转发,因此需对进出流量进行实时监控,用以辅助判断数据接收模块是否正常运行。
表1 JOPENS6.2核心功能模块及数据库Table 1 JOPENS6.2 core functional modules and database
表2 JOPENS5.2核心功能模块及数据库Table 2 JOPENS5.2 core functional modules and database
(2)Agent组件状态监控,Zabbix Server获取各监控项的实时数据是基于在被监控服务器上部署了Agent组件,因此需要对该组件的存活状态进行监控,否则只要是基于该种形式进行监控的数据都将无法获取。
(3)数据库的监控,6.2系统使用的数据库为MySQL,数据库主要用于存储台站参数及流服务配置,对于6.2系统只需要数据库确实在运行即可,故对数据库的监控只需要简单的判断,无需细节化的处理。
(4)NTP对钟服务的监控,对钟监控首先保证NTP服务为运行状态,其次根据根据过往长期运行所得服务器的对钟延时平均不会超过1 ms,结合中国地震台网中心对NTP对钟延时的相关要求,设置告警阈值为小于5 ms即可。
(5)针对6.2系统本身的监控,需对各进程制定具体的监控键值,主要服务进程如表1所示,为细化到各进程无法用到Zabbix自带的进程监控项,因此需要自定义监控项。Zabbix提供了带参数的监控项,允许用户在具体定义监控项时输入某个进程名称,达到一键设置多项可用的效果。
(6)日志项监控,6.2系统底层由Java语言编写,因Java的多线程编程,导致Zabbix自带的监控项无法细化到进程中某个线程的运行状态,但线程的运行会有日志信息的实时写入,因此可以对日志信息进行过滤从而到达监控某个线程的目的。
根据上述监控项的设计需求,我们对于6.2系统正常运行所需要的核心监控项做了全面监控(表3)。Zabbix服务端及被监控端所需要完成的步骤主要有以下几个方面:
(1)监控键值的定义。充分利用Zabbix平台已经集成好的监控项来定义Key值,对于需要自定义的监控项,编辑被监控端的zabbix_agentd目录中以conf结尾的配置文件,该文件可以自己定义名称但必须以“.conf”做为文件的格式结尾。6.2系统的监控项中java.Thread.exist[*]为自定义监控项,其完整形式为:UserParameter=java.Thread.exist[*],ps-awwx|grep“$1”|grep-v grep|wc-l,在配置时可将星号替换成具体监控项,用来代替命令中的$1参数。对于NTP对时服务中的延时信息也是自定义键值,完整形式为: UserParameter=host. ntp1. delay, ntpq-np|grep 'ntp. fjenc. cn'|awk '{print $8}',其中“ntp.fjenc.cn”为福建局ntp服务器域名,也可以直接使用IP地址代替。
(2)Zabbix平台监控项设置。在Zabbix监控平台配置项的主机目录中可具体配置每一个监控项,自定义的键值需在键值项输入UserParamete定义好的关键字,其他监控可通过Zabbix自定义关键字中选择。对于使用“自动发现规则”来监控文件项的,需在过滤器中设置目标宏及匹配的正则表达式如图4所示,经过正则表达式匹配后将直接输出/zroot和/usr/home目录的所有信息。
(3)添加监控项可视化图形。对有数值返回的监控项绘制图形,可更加直观的反应监控项的历史变化及趋势。
(4)定义触发器。根据JOPENS系统实际运行需求及服务器性能,设定安全范围内的阈值,超过阈值则会触发告警,告警方式可通过开发对应的短信、微信及邮件等脚本供Zabbix调用后自动推送。
图4 文件信息过滤Fig.4 File information filtering
图5 ESXI主机监控配置页面Fig.5 ESXi host monitoring configuration page
福建预警中心超融合平台,主要由26台物理服务器采用VMware技术虚拟化组成,1个数据中心下按业务类型分成4个集群,预警工程核心业务系统全部运行于“Cluster.EEW”集群上。对于超融合平台的监控可基于vCenter和ESXI主机两种方式,基于vCenter的监控需要在其用户权限上做出限制,因为对于全局权限的用户, Zabbix会将vCenter上所有集群的主机及虚拟机全部纳入监控。vCenter的监控与ESXI的监控配置相似,下面以基于ESXI主机的方式进行监控为例,首先更改Zabbix主机上zabbix_server.conf[2]中的配置后重启相应进程;其次在Zabbix配置页上填写ESXI主机的IP地址并选择继承的模板(如图5所示),并采用宏变量的方式配置控制台的{$VMWARE. PASSWORD}、{$VMWARE. URL} 和 {$VMWARE. USERNAME}信息[6];最后点击“立即执行”按钮,实现其自动发现功能。当自动发现执行完毕时, Zabbix配置项中的主机页面,会自动将ESXI主机及虚拟机的监控项及其它信息展示出来。需要注意的是因超融合平台总体是一个动态平衡的过程,当某个ESXI主机的资源消耗较高时,vCenter会将资源消耗较高的虚拟机转移到同一个集群中其他资源消耗较低的ESXI主机,若监控的ESXI主机发生上述变动时,在Zabbix监控平台上会出现无法监控到被转移出去主机的错误提示。因此建议单个集群上全部运行主要业务,采用vCenter的方式进行监控,若虚拟机数量不大亦可按物理机的方式进行独立监控。
为避免被监控服务器出现自动重启时, Zabbix-Agent进程无法随主机自动重启的情况,分别编写如表4所示的在Suse Linux系统及FreeBSD系统环境下Zabbix-Agent的启动脚本。在Suse Linux系统环境中将启动脚本zabbix_agentd放在/etc/init.d目录下,赋予该脚本的执行权限,并用chkconfig命令将脚本设置为开机启动项,形式为chkconfig zabbix_agentd on。
在FreeBSD系统中,将启动脚本放在/usr/local/etc/rc.d目录下,同样要赋予其执行的权限,同时需要编辑/etc/rc. conf 文件,增加一行 zab⁃bix_agentd_enable=“YES”。两份脚本中“/etc/zab⁃bix/sbin/zabbix_agentd-c/etc/zabbix/conf/zabbix_agen td.conf”命令语句,需要根据zabbix_agentd及zabb ix_agentd.conf具体的存放路径进行更改。
通过上述设置Suse Linux及FreeBSD系统的服务器,在重启或开机时都将自动运行Zabbix-Agent进程,自动将监控项数据发送至Zabbix服务端。
表4 Zabbix-Agent启动脚本Table 4 Zabbix-Agent startup script
Zabbix支持多种形式的告警信息出口,福建预警中心选择用微信及钉钉作为告警媒介。微信及钉钉的告警脚本放在服务端的/usr/lib/zabbix/alertscripts目录下,告警脚本全部用Python语言编写,基于微信的脚本需要有经过认证的域名。Zabbix服务端的页面配置在管理项中的报警媒介类型选项中,如图6所示需要配置脚本名称及脚本参数,同时在Message templates中需要配置告警及恢复信息的内容。对于接收告警的人员名单可以在User settings中的Profile选项中配置,包括接收人员,接收告警信息的时段以及告警信息的类别。
图6 微信告警配置Fig.6 WeChat alert configuration
2025年7月8日上午8点57分,AWS存储备机剩余内存超过了最低告警阈值,紧接着在9点5分, Zabbix发出了从AWS备机传输至预警二级流的用户异常告警。系统维护人员检查发现AWS备机全部数据流中断, top命令查看内存实际使用量(active)已达到98GB,经查看日志发现AWS备机Server2Server用户连接超时,导致全部数据中断。后经全面排查发现,当天数据归档人员开了多个msdp同一时间进行多天的台网卷和台站卷归档,直接导致了AWS备机内存使用量陡然升高,挤占其他程序运行资源。
图7 内存剩余监控视图Fig.7 View of available memory monitoring
图8 数据流用户连接超时日志Fig.8 User connection timeout logs for data streams
图9 微信及钉钉端告警信息Fig.9 WeChat and DingTalk alert messages
通过部署Zabbix监控系统及一段时间的运行,发现JOEPNS系统运行稳定,极少的告警来自于目标服务器异常导致流服务用户的掉线,可通过及时的重启目标服务器上wildfly服务来解决此类问题。服务器物理硬件的告警主要来自于存储不足,可通过缩短服务器上的数据存储天数,来预防磁盘容量溢出的问题。目前主要针对操作系统和业务系统的运行状态进行监控,下一阶段将针对业务需求更加深入地挖掘,监控到更细的颗粒度。针对物理机通过SNMP协议监控风扇、温度、磁盘、内存等硬件资源消耗情况,同时将核心业务的依赖也纳入到监控中,真正做到从物理层到业务层的全流程多维度监控。Zabbix监控系统可有效且及时的发现运行环境及预警系统的潜在故障点,从而有效提高预警系统的在线时长,为保障整个系统连续、稳定的运行提供了坚实的技术基础。