基金项目:中国地震局地震科技星火计划项目(XH20018Y)
作者简介:王卓(1983-),男,高级工程师,主要从事地震信息网络规划建设和运维、网络安全、地震应急等工作。E-mail:wangzhuo1111@sina.com
Heilongjiang Earthquake Agency , Haerbin 150090, China
Earthquake;Network;Power Supply;Monitor;Operation and maintenance;
DOI: 10.13512/j.hndz.2022.01.11
黑龙江省基于网络化的地震观测台网始建于“九五”项目时期,在“十五”期间通过黑龙江数字地震观测网络项目得到了极大的扩建,以测震业务为例,省属测震台站由原来的8个增加到“十五”项目建设后的35个。后续又经过“十一五”、黑龙江省地震深井综合观测网工程等一系列项目的建设,台站数量逐渐增加。黑龙江省地震局已建成涵盖测震、强震、地球物理场观测、信息节点、GNSS观测、地震应急等多项业务的综合信息网络系统。系统硬件既包含网络设备、计算资源、存储资源、供电设备、操作终端等通用型设备,也包含种类繁多的地震行业专业仪器(数据采集器、地震计等)。由于设备种类多样且网络规模较大,多数台站为无人值守模式,因此远程管理和维护能力尤为重要。
为管理和维护好黑龙江省的地震信息网络系统,黑龙江省地震局从“十五”时期开始到现在陆续开发了智能电源管理平台和基于开源软件Cacti的网络监控系统。后又将上述两套系统的关键监控数据提取出来再次开发了台网智能监控与运维管理系统,实现了远端无人值守台站的故障智能判定功能,帮助值班员和运维人员快速定位故障原因并及时处理,通过降低修复时间来提高运维效率,减少因各类故障带来的数据损失。以下将详细介绍监控及运维管理系统在黑龙江省地震局的配置和应用情况。
根据黑龙江省地震信息系统的特点,测震系统对在网设备的连续率和运行率要求是最高的,因此对于测震台站仪器设备的监控也是重中之重。在开发网络监控系统之前,通常的维护方式是使用JOPENS(地震速报系统)软件,以检验地震波形是否正常的方式来判断台站是否正常运行。地震波形是测震系统的应用数据,而在信息系统中应用数据出现异常或中断,可能的原因会有许多。在黑龙江省地震台站长期运行中,故障原因最多的主要有以下几种:①市电停电导致台站所有设备供电中断;②运营商提供的网络专线中断导致数据传输失败;③台站数据采集器故障导致地震波形数据上传失败。其它故障原因包括台站网络设备故障、雷击或其他原因导致设备损坏等也偶有发生,但相对比较少见。
从结果上看上述所有原因都会导致测震系统的应用数据丢失,但仅通过对应用数据的检验无法分辨出故障原因,这时常见的做法是联络网络信道运营商或台站看护人员前往实地查看,再根据反馈结果进行后续处置。黑龙江省地域辽阔,前往台站路途遥远,如果恰逢冬季又格外增添了出行方面的困难,因此更加需要对设备进行充分的监控来实现远程判断故障原因的功能。
网络监控可以使运维人员充分了解信息系统底层支撑平台——网络信道和网络设备的实时情况。根据黑龙江省地震台网的设备种类、设备分布情况、传输信道及网络结构等特点,总结出以下网络监控方面的需求:
(1)对设备及重要服务的在线状态监控:直观掌握运行情况和设置告警通知;
(2)对信道的流量监控:掌握全省网络中哪些信道带宽资源不足,可及时为信道扩容或限制一些视频会议、视频监控等大量占用带宽的应用,来避免造成挤占专业数据带宽的问题;
(3)对不支持 SNMP(Simple Network Mana-gement Protocal,简单网络管理协议)设备的在线状态监控:如台站数据采集器、供电设备、地球物理场观测仪器等IP设备,更丰富的数据有利于判断故障原因;
(4)拓扑图展示:有助于网络管理员分析和判断网络设备故障,而且将相同网络信道类型或相同网络接口的从属设备在拓扑图上归纳到一起后,发生批量故障时原因非常直观;
(5)其它常用功能:多种手段告警、监控报表产出、多用户分级权限管理等。
根据上述网络监控需求,黑龙江省地震局使用Cacti实现对本省网内设备的多种监控和告警等功能。
Cacti是一种网络流量监测图形分析工具,它基于B/S (Browser/Server Architecture,浏览器和服务器架构)架构,通过安装各种插件不仅可以实现流量监控,还可实现多种扩展功能。
黑龙江省地震局配置应用的Cacti软件部署在CentOS操作系统上,用到的Cacti插件主要有以下几种:
(1)cacti-plugin:用于扩展Cacti架构,支持安装其它插件;
(2)weathermap:将监控数据以拓扑或点位等图形化方式展示;
(3)monitor:以图标方式展示主机状态,中断后通过本地声音告警;
(4)nectar:邮件报告及定制化报表推送功能;
(5)thold:扩展告警功能,对各项监控数据设定阈值,超出阈值范围后告警;
(6)syslog:用于收集路由器、交换机等网络设备日志,集中分析和管理。
Cacti中的监控主机类型用主机模板加以区分,模板涵盖了多种不同的监控图形模型。如网络设备类型的模板包括设备接口流量、负载和数据包等信息,通常用于路由器和交换机设备的监控;而服务器类型的模板则包括性能、硬盘内存空间占用、系统线程等信息,通常用于对服务器、工作站等Linux和Windows主机的监控。以上几种类型的设备需要在主机中开启SNMP协议即可获取丰富的网管监控信息,Linux和Windows操作系统需要安装相应的组件才能实现。
MySQL数据库有相应的数据库监控模板,需要在数据库中建立与Cacti配置文件中相对应的用户名和口令的可读取权限账户,即可实现对进程、响应时间、连接数等数据库性能和可用性上的监控。
对于不具备开启网管协议功能的设备和服务,可以利用PING命令来探测主机或端口的存活和开放状态。在Cacti图形模板中添加Advance Ping监控模板,即可实现对主机定时、定量及定向端口的探测功能。对于系统服务来说,相应端口的开放是服务正常的必要条件,以EQIM(地震速报信息系统)服务为例,其使用的是5001端口提供连接和服务,如果探测到5001端口处于关闭状态则需要立即抢修该服务。
在Advance Ping模板应用设置中建议不要将时间间隔设置过小,也不要将发送数据包数量设置过多,主要为防止探测行为过于频繁造成主机端网络阻塞,同时也减轻监控服务器负载,尤其是在使用Advance Ping模板监控大量主机和服务时尤为重要。
黑龙江省地震局Cacti监控系统已将全省测震台网、地球物理台网和信息网络系统的大部分设备、专业仪器和重要服务纳入到监控中,目前已有监控主机279个,监控图形675个,典型监控图形见图1。
图1 典型Cacti监控图形Fig.1 Typical cacti monitoring graphics
从监控图形我们可以发现一些系统运行中存在的问题和隐患,例如图1中地震台数采的网络延时不稳定和个别时段数据包丢失严重等。如果没有网络监控系统则只有在网络或服务中断严重时通过应用数据丢失将问题暴漏出来,许多隐患无法在日常运行中发现。解决这些或大或小的隐患就能使系统运行更稳定,达到更高的运行率。
Cacti通过weathermap插件实现拓扑图功能。/var/www/html/plugins/weathermap为气象图配置目录,每张气象图都有一个独立的配置文件。气象图目录下的images是素材目录,想要绘制出美观的拓扑图需要有优质素材做支撑,可将背景图、设备图标等素材拷贝到该目录下即可实现高度自由定制。
图2是本系统在用的全省测震台站设备监控点位图,按照台站大体所在位置标识出全省台站的数据采集器与智能电源设备,可一目了然测震台站的运行情况。
图3是几张典型拓扑图,有些按照真实网络结构绘制设计,有些按照相同信道类型或相近业务归纳设计。值班员或网络管理员在维护系统时,不需要翻看台站信道信息或网络拓扑图,多种信息一目了然。在监控界面上将鼠标放置在相应点位上会自动展示该点位的在线状态、网络延时等信息。
图2 黑龙江省测震台站设备监控图Fig.2 Equipment monitoring diagram of seismic stations in Heilongjiang Province
图3 典型监控气象图Fig.3 Typical monitoring weathermap
气象图的大部分绘制包括添加点位和流量等功能均可通过图形化界面来实现,流量信息需要引用前面主机配置中使用SNMP协议从网络设备中获取到的接口流量信息。在流量配置上需要注意设定正确的流量方向,并配置当前信道或连接线的准确带宽。气象图上会根据当前带宽利用率的百分比按照图例将流量显示为不同的颜色,带宽占用过高的流量会显示警示颜色,同时也可以为每个流量通过设置阈值的方式来实现自动告警功能。
气象图上的主机在线状态需要通过编辑气象图配置文件来实现,如下截取两段配置命令。
图例配置:
KEYPOS cactiupdown 1305 279主机状态
KEYSTYLE cactiupdown tags
SCALE cactiupdown 0 0.5 192 192 192 关闭监控
SCALE cactiupdown 0.5 1.5 255 0 0 离线
SCALE cactiupdown 1.5 2.5 0 0 255 恢复中
SCALE cactiupdown 2.5 3.5 0 255 0 在线
主机点位配置:
NODE鹤岗数采
LABEL鹤岗
INFOURL/graph. php? rra_id=all&local_graph_id=649
OVERLIBGRAPH/graph_image. php? rra_id=0&graph_nolegend=true&graph_height=100&graph_width=300&local_graph_id=649
TARGET cactihost:169
USESCALE cactiupdown in
POSITION 1056 942
主机点位配置中TARGET一行需要引用前面主机配置中系统自动分配到的主机ID。其它信息还包括了主机内部名称、显示名称、鼠标放置时显示图形、点位坐标位置等信息。
智能电源管理系统由黑龙江省地震局与黑龙江天元时代自动化仪表有限公司联合开发,为黑龙江省野外地震台站的供电和远程维护管理提供服务,经历了多年的版本迭代更新和完善,与传统的UPS系统有着本质的区别。
电源管理系统包括安装在各无人值守台站的野外智能电源设备,以及部署在省地震局端的电源监控管理平台。
野外智能电源设备专为直流电器装置供电,正常的运行模式是隔供模式,即隔离交流电或太阳供电。一组蓄电池经开关电源供电,另一组蓄电池充电,保持二者轮换一充一放的方式,即保证了供电安全,也有助于延长蓄电池使用寿命。除隔供模式外,还有直供模式,将交流市电直接转换为直流进行供电;浮充模式,只有一组电瓶的时候同时进行充放电。
电源监控管理平台(见图4)是一款实时监控全省各台站电源设备信息的软件,通过TCP协议与台站电源终端进行通信。软件以台站点位图的方式显示全省电源工作状态,除了可以读取全省野外智能电源设备的运行数据外,还具备远程控制通断负载、改变台站供电模式的功能。
图4 电源监控管理平台Fig.4 Power monitoring management platform
在获取到充足的网络和电源监控数据后,本系统已具备远程综合判断故障原因的基础。运维管理平台的设计目的是为了解决网络和电源监控两款软件数据相互独立、无法合并处理业务的问题。
通过数据接口实时获取两款软件监控的网络与电源设备信息。为更准确的进一步分析台站出现故障的原因,将cacti的网络监控数据与电源监控管理平台的电源设备信息关联起来。例如:若cacti网络监控系统发现某电源设备网络中断,发生这种情况的原因可能是设备断网、设备故障、设备停电等,此时再从电源监控管理平台中获取电源具体状态和状态的前后变化情况,即可确定设备中断的具体原因并反馈给相关运维人员进行处理。运维管理平台软件设计图见图5。
图5 运维管理平台软件设计图Fig.5 Software design drawing of operation and maintenance management platform
为满足软件系统功能需求,运维管理平台设计了多个功能模块,主要有统计信息、通知消息、通知规则、触发策略、设备信息、值班管理、系统管理和定时任务等。
Cacti监控系统通过SNMP或其他方式获取到的设备信息不是存储在mysql中,而是存在rrdtool生成的rrd文件中,存放在Cacti根目录的rra文件夹下。rrd文件是大小固定的档案文件(Round Robin Archive),rrdtool对数据的更新和存储就是对rrd文件的处理。由于数据直接绘制于底图之上,无法直接从图片中获取数据,web监控界面中也不存在相关数据接口,因此在网络监控数据的获取功能上设计为采取数据抽取的形式直接读取数据库并实时同步数据。
Cacti的数据库编码使用latin1,直接抽取到本系统数据库中会存在中文乱码现象,因此需要在数据同步过程中对含有中文的数据进行转码操作,从“CP1252”转换成“utf-8”编码。
Cacti监控系统显示在地图上的设备状态存储于数据库中的“host”表,其中“description”字段存储设备名称,“hostname”存储设备ip,“status”存 储 设 备 状 态。“host_template_id”关 联“host_template”表中的id字段,“host_template”表中的“name”字段存储设备监控方式。
此外,数据库中还存有“fail_data”设备宕机时间和“rec_data”设备恢复时间等字段,可以辅助运维管理平台做设备的进一步状态判断。
运维管理平台需要获取电源监控软件中的设备列表、详细信息以及异常设备日志,用于判断设备当前状态与状态变化记录。设备状态包括恒流恒压、DC12V供电、隔供模式、市电停电、直供模式、回数异常、充电故障、所数未回、通信中断、浮充模式、工作端口连接不成功。
与电源监控管理平台的对接采用TCP协议,使用十六进制进行数据传输。命令格式是约定好的两位十六进制数字作为起始和结尾,同时包含了命令长度的标识。以获取设备列表命令为例,发送命令为“起始标识 长度标识 GetDeviceList 结尾标识”可以被电源监控管理平台所识别。其中GetDeviceList字符也转换为十六进制进行传输。收到命令后,返回数据也以相似的命令进行传输和识别。
public String send (String cmdInfor,String host,int port){
// System.out.println ("ttttt:"+cmdInfor) ;
//System.out.println ("发送成功") ;
String strReturn=null;
try{
//要连接的服务端IP地址
//String host="IP地址";
//要连接的服务端对应的监听端口/
/int port=端口号;
//将十六进制的字符串转换成字节数组
byte[] cmdInfor2 = hexStrToBinaryStr (cmdInfor);
//1.建立客户端socket连接,指定服务器位置及端口
Socket clientSocket = new Socket (host, port) ;
//2.得到socket读写流
OutputStream os=clientSocket.getOutputStream ();
PrintWriter pw=new PrintWriter (os) ;/
/输入流
InputStream is = clientSocket. getInputStream () ;
//3.利用流按照一定的操作,对socket进行读写操作
os.write(cmdInfor2);
os.flush();
clientSocket.shutdownOutput();
//接收服务器的响应
int line=0;
byte[] buf=new byte[1024];long d=System.currentTimeMillis();//接收收到的数据
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();while((line=is.read(buf))!=-1){
byteArrayOut.write(buf,0,line);
}
byte[] recv=byteArrayOut.toByteArray();
strReturn = BinaryToHexString(recv);//将字节数组转换成十六进制的字符串
//4.关闭资源
is.close();
pw.close();
os.close();
clientSocket.close();
}catch(Exception e){
e.printStackTrace();
}
if("02 09 00 65 6D 70 74 79 03 ". equals (strReturn)){
return null;
}
if(strReturn==null){
return null;
}
if(strReturn.length()<11){
return null;
}
strReturn = strReturn. substring (7 + 1, strReturn.length()-3);//截取有用信息
return hexStringToString(strReturn);//将字节数组转换成十六进制的字符串
}
地震台网传统的运维和监控软件一般更侧重于覆盖自身学科类别的设备,如网络监控系统往往只监控网络设备、设备管理软件只管理专业仪器、测震和地球物理台网的软件更侧重于专业数据的处理和加工。本系统通过融合网络和电源两个类别的监控数据,将获取到的设备列表归纳到各自无人值守台站的中心站运维片区,实现设备的部门化统计、运维和管理,并将智能电源设备与相应的网络监控信息关联起来,通过多种信息综合处理,见图6。
运维平台通过配置触发策略及规则实现网络与电源故障智能判定。触发策略可以创建几组触发规则,当系统匹配到网络或电源设备状态与策略匹配一致时即可触发,随即根据触发策略设置,将异常信息发送给对应用户。
触发规则需要选择网络或电源设备,网络监控主要用到在线、正在恢复和宕机三个状态,电源监控主要用到隔供模式、市电停电、直供模式、通信中断、浮充模式等几个状态。通过规则中这些设备状态的变化来判断当前台站故障原因,如图7所示。通过创建多组故障特征的触发规则来识别和判定各类故障原因。
图7 故障综合判断设置Fig.7 Comprehensive fault judgment setting
由于两套监控的数据同步存在差异,因此在创建规则的时候需要设置每个状态维持或者变化后维持的时间,当系统检测到设备状态符合触发规则后,会根据数据库中保存的“fail_data”字段存储时间进行比较,如当前时间减去fail_data时间大于设置的持续时间,即表明该条状态符合规则上的延时时间,进行后续进一步判断。
同一组触发规则采用从上到下的顺序依次检测,每条规则可以选择逻辑上的“与”、“或”、“非”关系设置,本条规则会与上一条规则进行逻辑判断。“与”的关系需要本条规则与上一条同时满足可通过;“或”的关系需要本条规则和上一条规则满足其一即可通过;“非”的关系是本条规则不满足时可通过。
在故障判定算法规则的设计上,对于一些易于识别的故障原因,如台站的两台IP设备:数据采集器和智能电源设备,当出现一台设备在线而另一台宕机的情况,可直接初步判断为设备故障。对于电源故障,由于各台站的蓄电池配备会有一些差别,根据实际情况增加电源浮充模式或直供模式的变化规则,且可通过网络监控数据判断智能电源设备自身故障的可能性。
本系统还包含许多运维管理中常用的其它基础功能,值班排班模块可实现向当天值班员定向发送告警信息;部门管理模块可实现设备运维属地化管理;告警模块可根据故障判定的触发情况通过云短信平台实现短信告警。
通过以上多年的工作,黑龙江省地震局信息系统中已开发并建成了全省网络监控和电源监控系统,并将两者的数据整合到运维管理平台中,实现台站故障的远程智能判定,为黑龙江省地震台网的运维和管理工作提供服务和帮助。
丰富的监控数据能够使故障判断更加准确,如果在每个无人值守台站使用可网管交换机,将每个端口的状态和流量都监控到位,远程运维工作将会更加易于开展。