基金项目:中国地震局星火攻关项目(XH243714B); 中国地震局三结合课题(3JH-202001034); 江苏省地震局青年科学基金项目(202205).
第一作者简介:瞿 旻(1983-),高级工程师,主要从事地震观测技术研究.E-mail:124894157@qq.com.
通信作者简介:张 敏(1991-),工程师,主要从事地震监测、仪器研发与运维.E-mail:541734199@qq.com.
(1.云南省地震局,云南 昆明 650224; 2.江苏省地震局,江苏 南京 210014; 3.中国地震台网中心,北京 100045)
(1.Yunnan Earthquake Agency,Kunming 650224,Yunnan,China;2.Jiangsu Earthquake Agency,Nanjing 210014,Jiangsu,China;3.China Earthquake Networks Center,Beijing 100045,China)
the geophysical network; operation and monitoring of the instrument; automatic analysis; alarm for abnormal operation
DOI: 10.20015/j.cnki.ISSN1000-0666.2025.0015
随着中国地震局业务体系改革,“国家中心—省级中心—地震监测中心站—一般监测站”的四级业务架构逐步形成,地震台站建设和观测仪器运维工作由省级中心调整至地震监测中心站(以下称“中心站”)。大部分省地震局中心站为新组建,运维保障能力有待提升,为确保在业务改革转型后地震观测数据产出质量保持稳定,亟需提升中心站运维效能。测震与预警站网现有数据汇聚软件能够实时监测数据连续性,若数据中断就发出警报,提示运维人员开展故障排查与维修。而地球物理站网观测数据多为分钟采样的非实时汇聚数据,通过地球物理台网管理系统软件收取前一天数据后进行检查、预处理和数据交换,当仪器或供电等方面发生故障造成仪器中断、仪器时间错误、仪器缺数等问题时,无法实时发现故障并开展运维工作。随着地震预报业务对地球物理站网高质量数据的需求,以及信息化、智能化技术的发展,利用信息化技术实现地球物理站网观测仪器运行状态的实时监控,向中心站运维人员提供辖区观测仪器实时状态和告警提示,能有效提升故障修复及时性。
目前行业内有学者开展过地球物理站网仪器网络、观测数据、运维管理等方面监控或信息化研究工作。有基于商业化成熟软件实现业务配置和部署的研究,包括利用Nagios软件(李刚等,2012)、HostMonitor软件(胡玉良等,2016),实现地震网络化仪器的实时数据动态监控与异常报警。也有根据地球物理站网对台站仪器监控和运维需求特点,开发相关专业仪器监控告警系统,如李俊超等(2019)设计地震台站综合观测仪器自动化监控报警系统,通过软件定时获取一个台站所有观测仪器的数据,实现观测仪器状态信息监控; 姜佳宁等(2019)研制地震观测仪器自动监控软件(SIAM软件),对网络化观测仪器的网络、运行及数据等状态实现实时和定时监控; 赵祖虎等(2022)对SIAM软件进一步完善,丰富了地球物理台网仪器状态监控的可视化功能; 王建国等(2007)开发了前兆观测数据监视及异常自动识别软件系统,实现了对数据上报情况和各测项异常情况的自动识别; 瞿旻等(2016)对影响仪器网络通讯单元运行效率的原因进行了分析,提出改进措施; 陈力刚等(2016)根据《地震前兆台网专用设备网络通信规程》要求研发了断层气二氧化碳监测仪,实现了通过协议指令获取仪器状态和数据等功能; 刘高川等(2021)开发了基于B/S架构的仪器维修管理系统,实现地球物理台网仪器维修信息化管理。这些技术系统多为单个台站内对特定型号仪器进行状态监控,或提升某一学科日常业务信息化自动化水平,或监控范围无法覆盖核心专业仪器关键指标,或更面向于各级业务部门管理需求。
本文针对中心站对地球物理站网仪器运行维护需求设计开发了一套地球物理仪器运行监控系统。系统包括基于B/S(Browser/Server,即浏览器/服务器)架构设计的监控软件平台、手机监控App软件和基于C/S(Client/Server,即客户端/服务器)架构设计的调试工具,通过仪器通讯协议实时获取仪器状态流和数据流,实现了仪器状态和数据质量在线监控; 以北斗/GPS双模分体式地震观测授时终端(瞿旻等,2021)为基础,配套开发地球物理仪器NTP授时服务器在不同中心站分布式部署,以实现地球物理仪器时间信息的在线监控和自动修正,以及对仪器和数据异常状态实时告警推送。
地球物理仪器数据传输采用基于Socket连接的TCP/IP协议,根据《地震前兆台网专用设备网络通信规程》通过指令方式获取仪器的观测数据。系统设计思路如图1所示,部署在中心站的NTP授时服务器为辖区内地球物理仪器提供精准授时,在地震行业内网部署基于B/S架构的监控平台服务器,通过循环定时任务方式向地球物理仪器发送获取仪器状态和数据的指令和向NTP授时服务器获取时间信息,对仪器返回数据进行处理解析、并对获取的NTP服务器时间数据进行准确度校准,进而对观测数据进行异常检测分析,并将各类数据信息和状态信息存储到数据库。通过WebAPI连接访问数据库,并在省级中心和中心站监控计算机网页上展示相关监控信息,实现监控可视化。
另设计基于C/S架构调试工具可安装在行业网的计算机上,实现客户端可连接地球物理仪器测试单台通讯情况,可连接监控平台服务器获取历史数据、查看绘制波形和状态告警等功能。同时,开发手机App软件,通过VPN连接进入行业内网,应用程序连接访问监控平台服务器的数据库并获取相关数据,实现对仪器的故障信息发布与实时监控管理。
网页版监控系统软件采用B/S架构开发,系统分为Web显示端、API接口服务、数据处理、MySQL数据库4大部分。采用前后端分离设计,前端技术基于VUE+ElementUI+OpenLayer,地图采用离线地图; 后台接口基于Asp.net Core3.1 WebApi,数据库采用MySQL5.6。根据监控系统的设计思路和业务流程,通过通信指令采集台站仪器的观测数据存储于数据库,设计功能性模块便于用户切换界面,保证仪器运行状态监控可视化。监控系统逻辑上分为前端展示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)、数据库及运行环境,图2为地球物理站网仪器运行监控系统架构图。
图2 地球物理站网仪器运行监控系统架构图
Fig.2 Architecture of the monitoring system of the geophysical network's instruments
(1)业务层(BL)是系统向用户提供的各类业务服务以及人机交互,包括:台站、仪器型号、测项代码、用户等各类管理服务、系统界面展示、告警消息推送、数据查询下载等; 并为用户和系统直接交互提供可视化窗口,用户根据实际应用需求通过浏览器使用地球物理站网仪器运行监控系统提供的各种应用服务。
(2)处理层(PL)连接业务层与数据层,提供各种组件,实现地球物理仪器数据获取、完整性计算、超阈值检测、校时比对、告警处理等功能。
(3)数据层(DL)负责数据库的访问,向处理层提供所需的各类数据,具有高效的数据存取、备份和安全管理等机制,实现对数据表的Select(查询)、Insert(插入)、Update(更新)、Delete(删除)等操作。
(4)运行环境是整个系统的最底层,为系统提供数据库管理平台、应用软件运行平台和相关系统运行仪器硬件。
系统基于MySQL数据库实现监控系统数据的存储和管理。根据系统需求,数据库设计表格按表类别分为三大类:数据类、状态类和告警类,其中数据类按信息内容分为基础信息类、测量数据类和异常数据类。基础信息类的数据表有用户账号表、台站信息表、测项代码表、仪器信息表、仪器型号管理表,这些表中的数据经用户对系统进行基本配置后成为系统的数据词典; 测量数据类的数据表有当前测量数据表、NTP时钟源数据表; 异常数据表有仪器异常信息表、分钟数据异常信息表、仪器状态异常信息表、NTP异常信息表; 状态类数据表有设备状态信息表; 告警类数据表有测项阈值表。数据表及其存放相关信息说明见表1。
为了保证地球物理站网仪器的观测数据可以被完整采集,仪器网络连接、时钟信息等状态可及时呈现,监控系统采用多线程技术设计后台程序,各项功能采用模块化设计的方法实现,模块之间职责明确。监控服务器采用Window Server,通过管理工具中的任务计划程序,作为定时任务进行循环执行,循环时间为5 min。通过循环遍历的仪器信息,实现多套仪器准实时的数据采集、数据异常检测和告警提示。
以系统对单台仪器监控为例,业务流程设计如图3所示:
(1)连通性测试。部署测试仪器、时钟服务器网络地址的线程,如果仪器可Ping通,进行后续的数据采集,反之提示网络异常告警,并将告警信息(台站信息、仪器信息、告警类型、时间)存储到数据库。同理,时钟源采用的时钟服务器NTP授时,在定时任务中也通过Ping方法测试其
IP地址是否在线。
(2)仪器数据和状态获取。部署获取仪器当前测量数据和仪器当前状态的程序,通过指令方式获取仪器的观测数据。服务器和仪器建立连接登录后,发送响应的请求指令,仪器收到指令执行后会返回信息,按照通信规程的约定,进行处理解析,并存储到数据库。
(3)时钟源信息获取。搭建基于北斗授时的NTP授时系统,作为时钟源为区域地球物理观测仪器提供授时服务。部署获取NTP服务器时间的程序,解析获取最新的服务器时间作为基准时间,用于对比仪器时间,计算仪器钟差。
(4)数据异常检测。获取仪器测量数据后进行完整性和有效性分析,对每套地球物理仪器按不同测项的观测数据异常检测,并统计数据的当日数据完整率(已收到的数据和应收到的数据比值)。数据异常检测基于滑动窗口技术的阈值判断、差分计算等,结果出现超过或低于判定条件,则以告警提示。
(5)数据库存储。为了保证各类监控信息稳定可靠的存储和管理,包括台站信息、用户信息、仪器信息、仪器观测数据、仪器状态数据、异常告警等,在监控服务器安装数据库,实现数据的存储、检索、更新和删除功能。通过建立数据库,使监控系统能够更好地实现数据的收集、存储、分析和利用。
(6)监控信息展示。用户可根据需求部署监控系统软件,包括网页版、手机App版和调试工具软件。网页版可通过浏览器远程访问监控系统全部信息; 手机App版方便用户在移动端实时查阅系统关键信息; 调试工具包括仪器调试、数据下载导出、仪器基础信息管理等功能。
基于监控系统的业务需求,在开发网页版和手机App版的基础上,配套开发调试工具软件,如图4所示。不同版本的软件功能分类上略有区别,但各有侧重,每个软件版本均包括多个功能模块,各个模块之间相互配合,实现地球物理站网仪器运行监控。
(1)网页版监控系统包括仪器监控、时钟源监控、数据查询、原始报文、下载中心和系统管理6个模块。
(2)手机App版包括异常告警、故障处理、站点管理、仪器管理和用户管理5个模块,分别是网页版仪器监控和系统管理模块的子模块。主要是为用户提供手机端实时异常告警,便于用户查看管理,是网页版的简化版。
(3)调试工具包括通信测试、数据导出、查看波形、设备管理4个模块。
以地球物理仪器数据和状态信息获取为例,系统使用Quartz.NET开源调度框架实现任务调度,开启了2个定时任务,分别是“仪器分钟数据计划任务”和“仪器状态计划任务”,通过cron表达式来设置计划任务的执行事件,通过修改jobs.json配置文件来实现定时执行。为了保证在尽可能短的时间内读取完全部仪器的数据,使用了Task开启多线程,每个仪器开启一个线程去读取数据,使用Socket读取数据,通过登录仪器,以指令获取仪器的分钟数据,实现把获取到的分钟数据返回做下一步的业务处理,如异常判断等,核心代码如下:
string backdata="";
IPAddress myIP=IPAddress.Parse(ip);
IPEndPoint myServer=myServer=newIPEndPoint(myIP,port);
Socket sock=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
Try
{
sock.Connect(myServer);
byte[]bya=System.Text.Encoding.UTF8.GetBytes(cmd1.ToCharArray());
sock.Send(bya,bya.Length,SocketFlags.None);
Thread.Sleep(100); //短暂休眠后再获取数据
int n=sock.Available; //获取当前待读取数据的字符节
if(n>0)
{
Byte[]byaBack=new Byte[n];
sock.Receive(byaBack,n,0);
string lognback=System.Text.Encoding.UTF8.GetString(byaBack);
if(lognback.Index0f("ack")!=-1)
{
byte[]byaSend=System.Text.Encoding.UTF8.GetBytes(cmd2.ToCharArray());
sock.Send(byaSend,byaSend.Length,SocketFlags.None);
Thread.Sleep(100);
int nBack=sock.Available;
if(nBack >0)
{
Byte[]byaBackData=new Byte[nBack];
sock.Receive(byaBackData,nBack,0);
backdata=System.Text.Encoding.UTF8.GetString(byaBackData);
//return backdata;
}
}
}
}
当监控系统检测到仪器时钟偏差时,通过校正算法去除路径延时影响,将准确时间以自动或手动方式赋予误差仪器,实现了时钟故障自动修复,节约了修复时间、提高了运维效率,使地球物理观测数据的时间统一性得到提高,短临预报分析中的可用数据更加丰富。校正算法采用多线程技术同步获取仪器和时钟源(NTP服务器)当前时钟,再循环Ping仪器和时钟源地址,获取返回的时间。对仪器时钟与NTP服务器时钟,分别扣除路径耗时,得到仪器钟差的绝对值,进行判断。计算公式如下:
t=|(T1-t1)+(T2-t2)| (1)
式中:T为仪器与与NTP服务器钟差; T1与T2分别为同时刻仪器时钟和NTP服务器时钟; t1与t2分别为服务器分别到仪器与NTP服 务器的网络耗时。
经3次计算得出平均值 ,若
>1 s,通过控制指令以时钟源时间对仪器校时,再次重新读取仪器时间和时钟源, 再对比2个时间,如果
>1 s,判定为时钟异常信息,在监控系统提供告警或根据用户需求由系统直接修正仪器时钟。
监控系统的异常检测包括网络连接异常、仪器状态异常、仪器数据异常和时钟异常,其中仪器数据异常是系统监控的核心和难点,其他检测易于实现。对于采集地球物理仪器观测数据,开展数据异常检测实现数据质量监控具有重要意义。
(1)数据完整性检测
数据完整性检测主要是诊断仪器数据是否缺测,缺测数据一般用“NULL”表示,通过软件程序统计获取当天截止当前数据非空的数据量,以及按照仪器采样率和当前时间计算理论数据量值,计算两者比值,即为当日数据的实时完整率。
(2)数据有效性检测
监控系统主要采用基于阈值检测方法和基于Z分数检测方法建立数据异常监测的判定规则,实现数据的有效性分析。
基于阈值检测的方法:设置阈值,超过或低于该阈值的数据点被判定为异常。设置的阈值可以是固定的,也可以是动态调整的。每套地球物理仪器有唯一序列号标识,但可能对应有一个或多个测项代码,需要对每套仪器各个测项进行阈值设置。设置阈值的参数需要尽可能缩小阈值的上下限,这样可以保证观测数据出现突跳等异常数据时及时告警。同时,设置的阈值需根据观测实际情况(如趋势变化)进行动态调整和优化。
基于Z分数检测的方法:计算数据点与平均值的Z分数,超过某个阈值的数据点被判定为异常。设x为最新采集的地球物理数据,y(i)(i=1,2,3,…,n)为已经采集的数据观测序列。对采集到的数据计算Z分数,计算公式如下:
Z=(x-μ)/σ (2)
式中:x为仪器最新采集的观测值; μ和σ分别是y(i)观测序列样本的平均值和标准差。对每个地球物理仪器观测项设置Z分数判定阈值(一般为2或3),通过上述公式计算获得x对应的Z分数,如果Z分数大于阈值,则判定为异常值,以告警提示。监控系统对于分钟值采样的数据,设置y(i)(i=1,2,3,…,n)的n取值为60,即以一个小时的数据为样本,计算平均值和标准差。对于新采集到的数据x,如果Z分数检测正常,则删除y(i)序列中最早的一个数据y1,并将x添加进去,从而形成新的观测序列,保证观测序列样本个数不变。对于新的观测序列,计算其平均值和标准差,用于下一个时间点观测数据的异常检测。
定时任务以多线程方式读取仪器数据,仪器数据包括仪器状态数据和仪器测量数据,仪器状态数据的异常判断主要对返回数据含义进行判断从而实现异常识别; 仪器测量数据的异常判断包括:缺数判断、超阈值判断、时钟判断,通过各自不同的异常识别原则进行识别判断。如果识别存在异常信息,系统会通过SignalR.Net主动通知页面。系统监听到后端的通知后在离线地图上标记出异常站点,并通过报警声音来进行提示,报警声音可收到关闭和开启。异常信息识别及告警流程如图5所示。
为保证系统的有效运行,系统将站点均部署到IIS上,设置应用程序池的启动模式为:始终运行、回收时间间隔为0、进程模型的空闲时间为0、网站预加载等。此外,为确保业务系统的高可用性和数据安全,系统采用冗余和备份策略,具体做法如下:
(1)数据库双备份策略
①主从复制:设置主从数据库服务器。主服务器负责处理所有的写入操作,从服务器实时同步主服务器的数据,并且在主服务器故障时可以迅速切换为主服务器。
②定期备份:定期对数据库进行完全备份和增量备份,并将备份文件存储在不同的位置,如本地存储和云存储。
③灾难恢复:部署灾难恢复系统,以便在系统发生重大故障时能够迅速恢复业务。
(2)站点双备份策略
①负载均衡:使用负载均衡器将流量分配到多个Web服务器上。当一台服务器发生故障时,负载均衡器可以自动将流量切换到其他可用的服务器。
②热备份服务器:部署一台或多台热备份服务器,实时同步主服务器的数据和配置。当主服务器发生故障时,热备份服务器可以立即接管。
③自动故障转移:配置自动故障转移机制,当检测到服务器故障时,自动切换到备份服务器。
监控系统于2020年开发完成,2021年将服务器部署于省级中心机房并投入试运行使用,为江苏省地球物理台网提供仪器运行监控服务,后不断升级迭代。系统初始化运行需将本区域地震台站及专业仪器相关信息完整导入服务器数据库,实现在可视化地图界面上对辖区内的地震专业仪器的运行质量要素监控。发生故障和数据异常时系统可提供报警并推送故障判断原因,并具备地震台站管理、地震仪器管理、历史数据查询等查询和管理功能。
如图6所示,监控系统首页显示监控所有站点运行情况,左侧显示全部站点列表,右侧显示离线地图,地图上标注监控站点,台站所有仪器运行正常就以绿色显示,反之则以红色显示台站标识并以声音告警提示,用户可点击左侧列表或者地图上的点弹窗,查看详细的站点信息、仪器时间和异常信息描述等显示内容。
为了满足移动端客户的使用需求,基于Android Studio平台开发了手机版App监控系统,实现移动端对地球物理仪器的运行监控和仪器运维的实时管理,如图7所示。
为了满足地震监测中心站对地球物理仪器的运维需求,基于C# Winform框架开发了客户端版的调试工具,如图8所示。当监控系统无法采集数据时,可以使用调试工具软件对单台仪器进行通信协议指令以排除故障。调试工具还可支持台站信息、仪器信息的管理、观测数据的查看以及数据库数据的下载和导出等功能。
系统于2021年开始部署应用,经不断优化完善将更多学科观测类型的仪器纳入监控,根据江苏省地球物理台网运行年报统计,对系统部署前1年(2020年)到2023年江苏省地球物理台网仪器运行率和数据有效率进行对比分析(图9)。
图9 2020—2023年江苏省地球物理台网仪器运行率和数据有效率统计
Fig.9 Statistics of data integrity and validity of the Jiangsu Geophysical Network from 2020 to 2023
如图9所示,仪器运行率自2020年的99.87%逐年提高至2023年的99.94%; 数据有效率自2020年的99.63%提升至99.7%以上,平均提升0.1%以上。这些提升得益于系统的实时告警功能,运维人员可以第一时间发现并处理故障,使仪器故障时长平均减少8~16 h,相当于每次仪器故障造成的运行率损失平均减少0.01%/月以上。此外,提升幅度也受当年故障仪器数量和故障严重程度影响。
根据2020—2023年度全国地震监测预报观测资料质量评估结果,从2021年系统部署运行后,随着仪器运行率的提高,江苏省地球物理台网系统运行从全国三等奖提升到二等奖,并一直保持在此水平,系统部署后在省级地球物理台网运行中取得了理想的应用实效。
地球物理站网仪器运行监控系统通过获取仪器的状态流和数据流,结合自研的基于北斗授时的NTP服务器作为时钟源,实现了对省级和中心站级辖区地球物理仪器的状态在线监控,当发现仪器异常时进行实时告警提示,为仪器故障快速修复提供有力的技术支撑,改善了省级地球物理站网值班人员手动查障的现状,提高了省级地球物理站网运维效率和运行质量,为地震科学研究和地震监测预报提供稳定、连续、可靠的数据资料。
系统已实现对地球物理仪器异常状态的监测,在引入数据异常判别指标后可建立典型异常的数据库,为数据异常核实与判别提供基础数据案例。在引入大数据分析、机器学习等技术后,可面向地震预报中地球物理异常跟踪分析研究工作需求,开展数据质量实时监控以及监测预报综合服务产出相关研究和二次开发,不断拓展系统服务领域。