短波发射台站计算机主机状态监测系统的设计与实现
王晓峰 张亚蓉
(国家广电总局七二二台)
摘要:本文分析了作者所在短波发射台站信息化系统运行现状,根据实际运行维护工作的需要提出并实现了短波发射台站计算机主机状态监测系统。该系统使用SNMP协议、WMI协议,通过对计算机主机状态监测有效的提高了短波发射台站信息化系统使用的稳定性与可靠性。
关键词:SNMP协议 WMI协议 计算机主机状态监测
1.引言
经过多年的建设,经过广播技术人员的不断努力,本人所在的短波发射台站在短波发射机系统工作自动化、电台管理信息化等方面取得了很大发展。因技术工作与管理工作对信息化技术的需求,台站内使用了大量的计算机,在这些计算机上运行着短波台站设备运行维护和管理所需的各种台站信息化系统。如目前作者工作的短波发射台站中应用的发射机自动化系统、质量保证系统、技术平台自动化系统和节目智能调度系统等。短波发射台各类信息化系统的使用一方面减少或者规范了人员操作,保证了短波台站安全播出工作实施的稳定可靠,但是另一方面也引入了新的问题:各类信息化系统未正常运行会引入安全播出事故。
2.短波发射台站信息化系统现状
首先这些信息化系统已经成为短波台站安全播出工作流程的一部分,与安全播出工作密不可分,短波台站安全播出工作对这些信息化系统已经有了很高的依赖性。例如以前对广播发射效果的监听主要是通过收音机,现在使用质量保证系统来监测发射的节目情况,已很少使用收音机。
其次,短波台站安全播出工作必须使用上述信息化系统,否则会在管理与技术上带来更多的不便。例如音频调度系统用来完成发射机节目源的指派,不使用该系统就需要值班员手动操作,非常不方便。
最后,根据工作中的经验,这些系统运行故障后往往需要重新启动计算机主机,系统重新运行起来花费的时间比较长,容易对安全播音产生影响。所以只有保证了台站信息化系统运行可靠才能保证短波发射台站安全播出工作的可靠。
3. 计算机主机状态监测系统的提出
目前作者所在台站的信息化系统维护存在如下问题:分别部署在几个不同的部门,地理位置的不集中给值班人员频繁巡检带来一定困难,无法做到实时监测,两次监测相隔的时间较长;缺乏必要的监测方法,在某个信息化系统发生故障后只有当需要使用该系统时才能发现;缺少明确的监测参数,信息化系统只有运行和停止运行两种描述,缺少对中间状态的定义,缺少信息化系统运行是否健康的界定方法;对信息化系统的操作缺少检查手段,发生信息化系统维护人员维护后未能及时运行系统软件、必要软件和硬件改变的情况时没有快速发现的有效办法。
为了解决上述问题,需要设计一套系统,保证台站信息化系统的稳定运行。台站信息化系统的本质是运行在计算机主机(计算机或服务器)上的软件,软件正常运行的两个要素是:物理主机的正常运行,如CPU、硬盘等工作在正常状态;软件本身被启动,未被关闭,同时分配了所需的系统资源。短波发射台站运维工作经验表明,要想保证台站信息化系统的稳定,首先要保证运行台站信息化系统计算机主机的工作正常;其次要保证台站信息化系统软件运行环境的正常;最后,信息化系统运行所依靠的软件或者硬件环境一旦发生问题要第一时间报警,以便及时人工干预,恢复系统的运行,将带来的影响降到最低。所以,只要对运行短波台站各种信息化系统的计算机主机软硬件实时必要的监测并在故障后报警,就能保证台站信息化系统的稳定运行。综上所述,此系统的主要监测目标是运行信息化系统软件的计算机主机,下面对该系统的设计与实现做详细介绍。
4. 计算机主机状态监测系统的监测对象
本文所提出的计算机主机状态监测系统所要实现的功能为:通过对计算机主机特定属性的监测保证运行在计算机主机上的信息化系统运行的稳定可靠,同时在出现威胁到信息化系统运行稳定的事件后报警。既然本系统的主要目的是保障信息化系统运行稳定,那么监测的重点应该放在与信息化系统运行相关的计算机主机状态上来。本文中的信息化系统均为运行在计算机主机上的计算机软件,与计算机软件相关的主机状态为软件的运行环境和软件自身。因此本文中计算机主机状态监测系统的监测对象为:信息化系统运行环境监测和信息化系统自身的监测。
4.1信息化系统运行环境监测
在这里信息化系统运行环境指的是运行信息化系统的计算机主机在工作状态下所表现出的性能和状态。计算机主机是承载信息化系统运行的物理基础,只有它运行时的性能和状态正常,信息化系统才可能正常运行。在本文所实现的系统中监测计算机主机的CPU利用率、可用计算机主机内存利用率、剩余磁盘容量和计算机主机硬件设备信息。CPU利用率过高会造成运行的信息化系统响应过慢甚至无响应;计算机主机内存利用率过高使运行在其上的信息化系统无法正常工作;有些信息化系统需要存储大量的记录信息,所以对剩余硬盘容量有要求;对计算机主机硬件设备信息的定期监测可以确保能及时得知主机硬件的变动能。
4.2信息化系统自身的监测
信息化系统是运行在主机上的一系列软件,对其自身的监测,主要监测目标是信息化系统软件有无启动;信息化系统运行必须的软件是否安装;信息化系统运行所需的计算机操作系统服务有无启动。
5.系统总体方案设计
短波发射台站计算机主机状态监测系统是以监测计算机主机状态为手段,以保障运行在主机上的信息化系统运行稳定为目的的综合性管理系统。为了能清楚的说明此系统的工作原理与工作流程,下面分别对系统所要实现的功能、系统总体结构与工作流程做介绍。
5.1系统所要实现的功能
为确保信息化系统的稳定而开发的短波发射台站计算机主机状态监测系统应该具有以下功能:
(1)实时监测计算机主机的CPU利用率、内存利用率和硬盘剩余空间等。
(2)监测计算机主机的硬件信息。
(3)监测必须运行的系统服务、必须安装的计算机软件是否正常,信息化系统软件本身是否运行。
(4)当监测的计算机主机属性达到报警阀值时告警,通知值班人员及时处理。
(5)为保证监测信息的实时性、有效性,信息化系统所使用的三十二台计算机主机必须每隔3分钟被监测一次。
5.2系统总体结构与工作流程
短波发射台站计算机主机状态监测系统从结构上分为三部分,分别为:系统服务器端、系统客户端和数据库服务器。
系统服务器端由计算机主机状态信息采集和报警信息产生两个部分组成。状态信息采集部分通过SNMP协议和WMI协议轮询读取所要监测的计算机主机状态信息,同时把读到的信息存储到数据库服务器中。根据测试,读取一台计算机主机的状态信息所花费的时间为5.5秒,信息化系统所用的主机计算机共三十二台,每台主机每经过176秒就会被监测一次。当然也可以采用多线程技术来降低每台主机被轮询监测一次所间隔的时间,但是这样会增加单位时间内网络的数据流量,给网络带来额外压力,因此在这里不予考虑。报警信息产生部分对超过报警阀值的计算机主机状态信息产生报警,报警信息也被记录在数据库服务器中。
系统客户端是值班人员用来操作和监测的界面。用来添加需要监测的计算机主机IP地址、需要监测的属性和报警阀值等信息。在系统客户端操作添加的信息都存储在数据库服务器中,同时系统客户端定时从数据库服务器中读取要监测的状态信息刷新显示在本地。系统客户端读到报警信息后会通过声音和图像的方式报警。
计算机主机状态监测系统的组成结构图见图1,下面根据图1讲解该系统的工作过程。值班人员通过系统客户端添加所要监测的计算机主机IP地址、监测属性和报警阀值,这些信息通过网络保存在数据库服务器上的SQL2008数据库中。系统的服务器端从数据库中读取这些IP地址后,使用SNMP或者WMI协议与每个IP地址所对应的计算机主机通信得到其状态信息并将这些信息存储到数据库服务器。系统的服务器端从数据库服务器上不断读取最新存入的计算机主机状态信息和报警阀值做比较,超出阀值的情况会产生报警信息存入数据库服务器。系统客户端间隔一定的时间去读取数据库服务器中的报警信息,如果读到则在系统客户端使用声、光报警。整个短波发射台站计算机主机状态监测系统均工作在windows2003操作系统环境下,被监测的计算机主机所运行的操作系统为linux系列或windows系列操作系统。
6. 系统方案实现的重点技术
此系统的实现重点在计算机主机状态信息的获取上。计算机主机状态信息的获取可以通过SNMP协议和WMI协议完成。本系统使用C#编程语言编写。下面作简要介绍。
6.1 SNMP协议读取计算机主机状态信息
SNMP协议是基于管理工作站/代理模式工作的,运行网络管理程序的计算机称为网络管理站,代理是运行在被管理设备上的进程。管理工作站通过向代理询问获得被管理设备的工作状态信息,其中每种工作状态信息的标识被管理信息库即MIB所定义[1]。在本系统中管理工作站为系统服务器端,代理是被监测的计算机主机系统自带的SNMP服务。在MIB中找出所要监测的计算机主机属性对应的标识编号——Oid码,按照SNMP协议提供的结构组织数据包就能完成对被监测计算机主机属性的读取。对SNMP协议数据包的组织等内容因篇幅限制请参看相应的RFC文档。本系统开发中使用如下方法。
SNMP协议已经有了多个版本的程序实现,在开发过程中可以选择利用已经实现的SNMP协议软件包来完成开发工作,加快开发进度。本系统中使用的是SNMP#Net开放源代码SNMP协议软件包。使用SNMP#Net软件包完成计算机主机信息读取分以下几步:
(1)设置读取对象。使用SNMP#Net软件包的OctetString、AgentParameters、 UdpTarget和Pdu类完成读取对象的设置。
//设置共同体名称,共同体名在SNMP协议中类似访问密码
OctetString community = new OctetString("DBXXH");
//设置使用的SNMP协议版本为v2
AgentParameters para = new AgentParameters(community);
para.Version = SnmpVersion.Ver2;
//设置要提取信息的计算机主机IP地址为ZJIP,访问端口号为161
UdpTarget tag = new UdpTarget(new IpAddress(ZJIp), 161, 2000, 1);
//设置访问的命令为查询请求
Pdu pdu = new Pdu(PduType.Get);
//设置要读取信息对应的Oid码
pdu.VbList.Add(Oid);
(2)读取指定计算机主机的状态信息。第(1)步中的Oid值不同,从指定计算机中读取到的状态信息内容也就不同。浏览MIB查找需要查询的计算机主机属性对应的OID值,在程序内设置后读取。
//读取Oid所对应的信息
SnmpV2Packet Result = (SnmpV2Packet)tag.Request(pdu, para);
//将读到的值存储到对应的数据库字段
Save(Result.Pdu.VbList[0].Value.ToString());
6.2 WMI协议读取计算机主机状态信息
WMI是一种 Windows 管理技术,用户可以使用 WMI 管理本地和远程计算机,也可以使用WMI获取本地和远程计算机的信息。WMI是由微软公司定义的一套管理组件,支持windows2000以上版本的windows系列操作系统,它的使用要遵循一定的规范。下面以取得远程计算机主机上运行的进程为例加以说明:
(1)建立系统服务器端到信息化系统计算机主机之间的远程连接。
ConnectionOptions Cn = new ConnectionOptions ( );
Cn.Username="信息化系统计算机主机用户名";
Cn.Password="信息化系统计算机主机密码";
ManagementScope Ms = new ManagementScope ("\\\\计算IP\\root\\cimv2",Cn);
Ms. Connect();
(2)使用WQL查询语言查询主机上运行的进程。
ObjectQuery Wql = new ObjectQuery("SELECT * FROM Win32_Process");
ManagementObjectSearcher result = new ManagementObjectSearcher(Ms,Wql);
result变量中存储了被监测主机上正在运行的所有进程信息。可以根据系统的需要存入数据库或者判断某个必须运行的程序是否存在。"SELECT * FROM Win32_Process"为WQL查询语言,要查询计算机主机的其他状态只需更换ObjectQuery函数中的WQL语句参数即可。
7.结束语
短波发射台站计算机主机状态监测系统可以对多台计算机主机集中监测,它的使用方便了值班工作,有利于短波发射台站信息化系统的稳定运行。
参考文献
[1]武孟军.Visual C++开发基于SNMP的网络管理软件.北京:人民邮电出版社;2007:39.
评论 点击评论