省级气象通信系统综合监测方案设计
2017-07-27王建荣金素文王云冯义新
王建荣+金素文+王云+冯义新
摘要:针对省级气象通信业务中系统数量日益增加,系统功能日益复杂,目前缺乏综合性的系统运行状态监测方案,通信业务出现的异常状况无法及时通知值班人员,影响了业务质量。提出一种集中监测网络、FTP服务、进程运行、磁盘空间、数据库连接和Web Service服务的方案,使用的关键技术包括WMI、SSH协议等。为解决监测程序受防火墙限制无法访问DMZ区网络和FTP服务的问题,借助SSH协议登录到DMZ区的中间服务器,执行Linux Shell命令返回结果。修改开源的SharpSSH类库,使其输出重定向到字符串变量中,后续的网络、FTP状态判断均基于该字符串。测试结果表明,该方案对异常情况总的检出准确率达到95.8%,其中网络连通性、磁盘剩余空间、数据库连接、Web Service登录异常检出准确率达到100%,能够满足业务系统监测需求。
关键词:WMI;DMZ;SSH协议;中间服务器;ShpSSH类库
1概述
气象信息中心从事气象报文的收集、处理、分发职能,也承担了气象观测资料的质量控制、气象产品的开发与资料服务工作,是气象流程中枢部门,信息部门与大气探测、天气预报、气候预测、气象科研与公共服务紧密联系。随着计算机技术、网络技术与数据库技术的发展,各種软硬件系统开发与应用使得气象信息自动化程度日益提高,复杂度提高,对通信过程的每个环节包括软件、硬件、网络状态的监测非常重要。
本文首先归纳气象通信业务中关键的影响因素并将其分为6大类,将其作为监测对象。并分别研究和设计监测方案,针对业务中使用的操作系统主要有Windows和Linux,Windows上进程及硬件资源的监测用WMI技术;Linux上的资源监测使用SSH和SheH相结合的技术。关键技术有两点:是如何在内网区域辅助SSH协议完成对国家气象信息中心服务器和网络的监测。
2气象通信系统监测对象
省级气象通信业务包括网络状态、FTP服务、进程状态、磁盘空间、数据库连接、Web Service服务等,如图1所示。
气象地面、高空、雷达、卫星等探观测资料需要通过网络传输到达气象信息中心,如观测台站从采集器采集气温、湿度、气压、风速风向等气象要素再通过地面有线网络或GPRS无线网络传至省级气象信息中心服务器。因此网络状态如连通性、稳定性是气象资料传输的重要影响因素之一,直接影响着资料的传输及时率和可用性。通过网络连通性也可判断目标计算机是否宕机。
目前业务中主要通过FTP协议和相关工具下载和推送资料,如台站测报软件按固定时次生成国家级自动站文件后立即通过FTP通常通过电信、联通、移动专线上传至省气象信息中心国家级自动站中心站服务器;全省资料共享服务基本也是建立FIP服务供资料用户上传与下载。因此FIP服务的稳定性也是气象资料传输的重要影响因素之一。使用.NET FTP类库。
气象通信业务系统运行着数量众多、种类繁多的程序。目前使用的操作系统有Windows系统(Windows Server 2003、2008等)和Linux系统(suse10、RedHat、CentOS等)。而程序的运行方式主要有常驻内存和周期性执行两大类,周期性执行方式在Windows系统上表现为任务计划程序,即设置程序的执行时间间隔,在Linux系统上表现为Cron服务。周期性执行的特点是程序执行完毕其进程退出,无法直接监控进程状态。气象业务程序涉及资料(各种观测报文、加工产品)的输入输出、加工处理等过程,创建资料的工作目录如入口目录、临时中转目录、归档目录等。为常驻内存和周期性执行的进程设计通用的状态检测方案,可以获取进程工作目录的时间属性(如目录的修改时间)与当前系统时间的时间差,如果该值超过设定的阈值,则认为进程异常终止。如此统一了进程状态信息采集模型,简化了代码设计。
通信业务机器必然有磁盘空间的限制,随着归档目录中资料集聚、程序运行日志文件、数据库数据文件和日志文件的膨胀等等,造成磁盘空间不足,影响程序的持续执行,对于Win-dows服务器,可以调用WMI接口远程监控服务器磁盘空间;对于Linux服务器,将目录通过Samba映射盘作为Windows服务器的网络驱动盘,再调用WMI接口查看该盘目录的时间属性。
数据库在气象通信业务中发挥着重要作用,气象资料的接收、处理、分发流程以及各步骤的时效性以及气象资料数据服务等都需要存储在后台数据库中,Web系统调用数据库数据用于气象要素的列表显示、GIS显示等。目前业务运行的数据库有SQL Server(SQL Server 2005、2008)、MySQL、Oracle(11g),使用ADO.NET API连接测试,需要导入不同的类库。
气象数据共享服务通常有三种方式:文件方式、数据库方式和Web Service方式,目前省信息中心业务运行的Web服务有综合观测数据应用平台和CIMISS MUSIC,用户通过调用Web Service接口获取数据。而Web Service必须部署在Web服务器(Apache Tomcat等)上,监测Web Service能否调到数据、是否出现异常两方面。
3关键技术
方案使用的主要关键技术包括WMI和SSH。
省级气象信息网络从安全角度分为两个区域:内网区域和DMZ区域。处于两个区域中的设备,其监测策略不同。
3.1DMZ区概念
DMZ是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题而设立的一个非安全系统与安全系统之间的缓冲区。省级新一代国内通信系统集群以及CTS集群位于DMZ区域,能够直接访问国家气象信息中心的服务器,而内网区域(非DMZ区)的服务器因其IP地址受防火墙限制,无法直接访问国家气象信息中心的资料服务器。
3.2WMl概述
WMIP(Windows Management Instrumentation,Windows管理规范)是一项核心的Windows管理技术;WQL(WMI QueryLanguage,Windows管理规范查询语言)是WMI中的查询语言,其语法结构与SQL非常相似。WQL语法:
SELECT properties[,properties] FROM class [where clause]
参数说明:
SELECT必选项。代表WQL语句的开始;
properties必选项。代表想查询的属性名字。可以是多个属性名,也可查询所有属性值,用*代替。Properties由class决定,不同的class定义了不同的properties,方案中使用了“Freespace”和“LastModified”两个properties。
FROM必选项。跟在properties的后面。
class必选项。代表想要查询的类的名称。方案中使用了“Win32_LogicalDisk”和“Win32_Directory”两个类名。
where clause可选项。where从句和相关条件语句,用来缩小查詢范围。
查询远程Windows服务器上D盘“磁盘剩余空间”信息的WQL语句:
Select Freespace From Win32_LogicalDisk Where Name=D:
查询远程Windows服务器D:/data文件夹“修改日期”信息的WQL语句:
SELECT LastModified FROM Win32_Directory WhereName=D:/data
调用内网区域的远程Windows主机上的WMI(WindowsManagement Instrumentation,Windows管理规范)服务实现程序状态的监控,即调用远程Windows主机的WMI服务查看工作目录的“修改时间”属性来判断程序的状态,“修改时间”值超过设定的阈值则认为该程序已停止运行,即处于异常状态
通过它可以得到几乎Windows系统的全部信息(如硬件环境、操作系统信息、进程、服务信息等等),通过.NET Framework提供的System.Management库便可以利用。利用WMI来连接远端计算机首先要具有远端计算机管理员的用户名和密码,写进配置文件。
3.3SSH协议概述
SSHES-61是Secure Shell的缩写,SSH协议是建立在应用层和传输层基础上的安全协议。SSH最常见的应用场景是客户端通过SSH连接到服务器建立一个安全会话,然后可以进行用户登录和远程执行命令等操作。
操作员一般通过SSH协议工具如SecureCRT、Putty等登录本省位于DMZ区的通信业务服务器,如新一代国内通信系统集群服务器、CIMISS/CTS服务器等,成功登录到中间服务器后,通过FTP协议登录到国家局资料服务器,执行相关下载命令。上述由人工借助SSH工具从国家局下载资料的过程完全可以简化为程序自动执行。各省气象局一般会部署新一代国内通信系统备份服务器(下文称为中间服务器,均运行Linux操作系统),位于DMZ区。
3.4SharpSSHm类库简介
SharpSSH是开源的、基于C#.NET实现的SSH客户端组件,供了一个连接SSH服务器的应用程序接口(AP1)。程序使用c#调用SharpSSH类库远程执行Linux服务器的Shell命令。而SharpSSH提供的示例代码的输入输出都是定向到Console(控制台),但从Console中获取命令执行结果较难。因此需要对源码进行一定的修改,将命令返回结果赋予字符串变量(string),程序后续逻辑均基于该字符串变量。
执行SSH协议前,应确保Linux主机上的ssh服务已启动,命令:service sshd start。SharpSSH修改,重定向到字符串变量。
3.4.1 SharpSSH输出重定向
为实现SSH自动登录并执行Linux Shell,在SharpSSH中的SshStream-cs,增加方法输出重定向代码,将字节流输出到控制台调整为输出到字符串,代码如下:
4监测流程
4.1远程进程监测
监测国家局防火墙、路由器、服务器IP是否通畅,不能直接Ping,通过SecureCRT、Putty等SSH协议工具如登录省级中间服务器,在其上Ping国家局目标IP。在监测远程资料服务器FTP服务时,也需要SSH协议。远程Linux服务器文件系统使用率也可以通过SSH登录后执行Shell命令来判断。
远程服务器进程监控流程如图2所示:
4.2网络连通性监测
网络连通性监测流程如图3所示:
局域网内远程服务器、网络设备可以直接Ping,国家局服务器、网络设备需要登录DMZ区SSH服务器,在其上执行PingShell命令,依据返回的结果字符串再作判断。局域网内的设备lP连通性测试方法为:调用.NET Ping类API循环Ping对方N次(N=4,可调整),若Ping成功率超过75%,则返回网络监测成功结果。对于国家局设备IP,由于其在DMZ区,气象通信业务系统监控程序位于内网区,受到防火墙的限制,不能直接访问国家局服务器和网络设备,必须先登录省中心DMZ区部署的服务器,在其Ping国家局目的IP。
FTP登录监测流程和网络连通性监测流程类似,在此不再赘述。
4.3磁盘空间监测
磁盘空间监测流程如图4所示:
Windows和Linux系统均有文件系统的概念,但Windows分驱动盘,如C:、D:等,Linux系统有/var、/usr等文件系统使用率,本文统称为磁盘剩余空间。
Linux服务器上文件系统使用率可以通过df—h获得。文件存储需要一定的磁盘空间,根据文件(如Linux系统日志、历史资料归档、数据库表空间和日志文件等)在某个时间粒度内消耗存储空间的情况,需要设定磁盘或文件系统的阈值。
4.4数据库监测
应用ADO.NET打开数据库连接字符串指向的SQL Server或MySQL数据库,程序发生异常则判断数据库连接失败。
4.5 Web Service监测
在Web Service初始化時没有抛出异常则返回状态正常。异常类型多样,都继承自Exception类,只要catch到该类或子类,即可得出Web服务无法访问的结果。可能是Web Service容器(女IApacheTomcat服务器等)中断。
4.6日志文件和配置文件设计
所有的监控项目都要写入日志,便于分析。每行记录包括:日志写入时间、检测时间、检测对象、对象状态。
每类监测项目分别设计XML格式的配置文件,程序初始化时运用.NET XML类库API解析并保存在项目列表中(List)。其中中间服务器配置如下:
格式说明:IP元素代表中间服务器登录IP地址;User和Pwd表示登录账户。可以填写多个中间服务器。
5测试效果评估
5.1评估对象
对2016年6月1日00:00至30日23:00的网络连通性、FTP登录、进程运行状态、磁盘剩余空间、数据库连接、Web Service登录6大类对象进行测试。
5.2评估方法
通过统计6大类对象各自监测日志中的异常记录,与同时刻人工检查、确认的结果进行对比。
5.3结果分析
统计结果如表1所示:
人工检测是对程序自动检测的检验和确认。从表1可知,评估时期内,自动检出异常总数为24次,而人工检出23次,人工是自动检出数的95.8%。FTP服务器登录用户较多时可能造成登录成功信息返回较慢,此时程序自动监测存在极少量误判,但也从另一个角度说明FTP服务器运行负荷较重。
其中,Ping、FTP手工执行命令查看、核实,数据库连接需要借助SQL Server Management Studio(检测SQL Server)、Navicatfor MySQL(检测MySQL)、PLSQL Developer(检测Oracle)等工具。
6结束语
本文为解决省级气象通信业务中网络、FTP服务、进程状态、磁盘空间、数据库连接和Web Service连接等主要对象缺乏监测问题,设计了综合监控方案,使用的关键技术包括WMI和SSH等。借助WMI技术,实现了远程Windows主机磁盘空间、进程状态的监测;辅助于SSH协议和开源的SharpSSH类库实现了非DMZ区监控程序主机访问国家局DMZ区网络、FTP服务器的功能以及局域网Linux主机磁盘剩余空间的检测。评估结果表明,程序自动监测各对象和同时刻人工检测的结果基本一致,方案可行。