基于WMI的网络监控系统的设计
摘要:目前许多网络的功能已经越来越复杂,性能也变得越来越强大。通过WMI服务,在Windows平台上,采用.Net技术,构建一种网络监控系统。其核心是通过创建数据采集、数据通信和数据展示三层模块,各层之间通过业务作为接口,使得系统具有业务扩展性强,耦合度低,便于部署等特点。
关键词: WMI;.Net;网络监控
中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)23-5612-02
Design of Net Monitoring System Based on WMI
YE Wen
(Electromechanic and Information Engineering Department, Ya"an Vocational College, Ya"an 625000, China)
Abstract: At present many network Architecture has become increasingly complex and performance has become increasingly powerful. Through the WMI service on Windows, using .Net, to build a network monitoring system. Its kernel is creating three modules that include data collection, data communications and data display, through the business as an interface between the layers to make the system become stronger to extend, low coupling and easy to deploy.
Key words: WMI; .Net; network monitoring
对于一个大型网站,每天都有数以千万记的访问量。每个网站后台的系统支持也是非常复杂的,各系统之间盘根错节,每时每刻都在进行着大量的数据通信与交换。如果某个结点出现差错,就可能导致某个业务出现停滞现象,尤其对于一些关键的业务系统来说,需要做到高可靠性,每时每刻处于运行状态,这时除了系统要具有良好的容错、备份机制以外,还有必要对关键系统的运行状态进行监控。当出现异常情况时,能及时反馈信息给技术人员,使得技术人员能对异常进行有效地处置。本文利用Windows提供的WMI服务,能有效对远程机进行监控,并将监控信息传递给网站管理人员。
1 架构分析
该系统分为三层结构,分别是数据采集层,数据通信层和数据展示层(如图1)。各层之间采用协议为接口,协议根据业务的要求可进行扩展,这样做的优点是层内的功能相对独立,并降低层与层之间的耦合度。各层的功能如图1。
1.1 数据采集层的主要任务是获取服务器数据
包括对服务器运行状态、Web服务器性能、数据库服务、自行开发的服务以及服务器资源的使用情况等软硬件数据进行抓取。数据的采集可分为两种方式:
1) 主动对被监控的服务器采集数据,包括服务器的实时运行状态及一些周期性事件。
2) 通过接收监控中心的指令来被动地对被监控服务器采集数据。
服务器数据的采集使用了WMI服务,WMI是Windows平台的分布式强制任务管理(DMTF)中基本Web的企业管理工具,它以公用信息模型(CIM)为基础。CIM是一种可扩展的数据模型,用于在管理环境中以一致和统一的方式在逻辑上组织管理对象。在Microsoft数据模型中包含了存储元数据和存储管理数据的知识库。数据、类和事件提供者向知识库提供数据,管理应用程序或脚本则通过WMI存取该数据。通过WMI可以访问、配置、管理和监视几乎所有的Windows资源,它提供了一种发现和获取数据的标准方式,设备驱动程序可以使用该服务向应用程序提供所有类型的数据。
1.2 数据通信层负责数据的传输
要能准确安全地把采集到的数据传递给监控中心。数据通信层需要考虑通信的性能,安全,以及现有的网络结构,选择适当的网络通讯模型。与采集数据的接口是业务协议,负责对协议进行解析,关键数据进行加密,然后传输数据。
1.3数据展示层是对采集的数据进行加工和显示
是监控人员与网络之间的接口,所有的业务功能将在这一层体现。
2 技术实现
2.1 数据采集,服务器采用的是Windows Server,数据的采集使用WMI服务
可以采集到几乎所有的软硬件数据信息。Microsoft把WMI封装成COM接口的形式提供给开发人员使用。在.NET框架中,提供了更为简便的使用方法来查询系统各种的信息、订阅事件。有关WMI的操作包含在System.Managerment,System.Management.Instrumentation两个命名空间内,可以获取CPU占用率、内存空间、磁盘空间等信息。其中关系密切的有六个类,分别是:
1) ConnectionOptions类:主要的功能是为建立的WMI连接提供所需的所有设置。在利用WMI对远程计算机进行操作的时候,首先要进行WMI连接,WMI连接主要是使用的是ManagementScope 类,成功完成WMI连接就要提供远程计算机WMI用户名和口令。
2) ManagementScope类:能够建立和远程计算机(或者本地计算机)的WMI连接,表示管理可操作范围。
3) ObjectQuery类:用于在ManagementObjectSearcher中指定查询。程序中一般采用查询字符串来构造ObjectQuery实例。其中的查询字符串是一种类似SQL语言的WQL语言。
4) ManagementObjectSearcher类:主要是根据指定的查询检索WMI对象的集合。
5) ManagementObjectCollection类:主要表示 WMI 实例的不同集合,其中包括命名空间、范围和查询观察程序等。
6) ManagementObject类:为单个管理对象或类,通过ManagementObject中的方法可以调用ManagementObject对应的对象,从而执行相应的操作。
定义的接口如下:
//连接远程计算机
Public interface IConnectHost
{//创建连接
ConnectionOptions Conn ();
//获取验证
ManagementScope Scope (string, ConnectionOptions);
}//获取服务器信息
public interface IGetHostInfomation
{//获取物理内存
ManagementObjectSearcher GetMemoryInfo (ManagementScope conn, ObjectQuery query);
//获取剩余内存
ManagementObjectSearcher GetAvailableMemoryInfo (ManagementScope conn, ObjectQuery query);
//获取CPU占用率
ManagementObjectSearcherGetCupInfo (ManagementScope conn, ObjectQuery query);
//获取C盘信息
ManagementObjectSearcherGetCdiskInfo (ManagementScope conn, ObjectQuery query);
//其它获取信息的方法
//…}
3.2 数据通信
传输的数据内容是由业务需求来决定的,需制定统一的规范,以便数据在各层之间进行传输。在传输过程中,可考虑使用消息的方式,先将数据进行封装,然后转换成字节流,由数据所通信层把数据发送到目标机器。接收方接收到字节流后,再将其解析,然后转换成对应的消息。
每个消息都包含消息头和消息体。由命令标识、序列号、消息长度,再加上特定的业务信息就构成了一个完整的消息。协议解析时就可以根据消息标识,选择相应的消息处理对象,生成对应的消息实体。数据展现层再负责把消息实体写入数据库中。
针对不同的消息,会有应答消息,即消息一般以成对的方式出现。比如监控方向被监控方查询某个设备状态,它接收到命令后,会把查询的结果以相同的序列号为关联,发出应答消息。这样监控方就可以准确无误的收到信息。
4 部署
由于被监控的网络内部一般存在多个子网,在部署的时候,有两种方案可供选择:一是选择子网的一个服务器作为网关服务器来管理其范围内的所有主机。此方案部署简单,便于统一管理,但对网关服务器的要求比较高(图2)。二是在每台主机安装一个服务,然后通过网关服务器传送给监控中心。此方案网关服务器只起到一个中转的作用,因为只负责数据通信的功能,所以压力相对较小,但由于部署分散,导致安全、管理上需要集中统一的时候比较复杂(图3)。每个网络可根据自己的需求来选择适当的方案。
方案一:
如图2所示。(下转第5619页)
(上接第5613页)
方案二:
如图3所示。
4 结束语
本文设计主要定义了应用WMI采集数据的接口,由于采用了接口作为功能描述,使得各层内功能内聚强,层与层之间耦合度低,便于开发者实现。本架构在各层功能定义方面采用接口方式,开发者可根据需求进行扩展。
参考文献:
[1] 刘晓逃,李利军.局域网组网技术大全[M].北京:人民邮电出版社,2007.
[2] 任建基.基于WMI技术的局域网计算机设备的监测[J].计算机工程与应用,2006(25).
[3] 宋昕.WMI中计算机管理中的应用[J].电脑知识与技术,2008(2).
推荐访问: 监控系统 设计 网络 WMI