基于.NET技术的监控应用分析

原创|其它|编辑:郝浩|2009-07-02 10:38:41.000|阅读 387 次

概述:我们都知道,作为一个百、千万及以上访问量的网站,网站后台的支持系统是相当多的,各系统之间盘结交错,系统之间频繁的互相通信、交换数据。如果某个结点稍一出差错,可能就导致某个业务出现停滞现象,尤其对于一些关键的业务系统来说,需要做到高可用性,需要每天不间断的处于运行状态。除了业务系统具有良好的容错、备份机制以外,还有必要对关键系统的运行状态、输出日志等进行监控。一旦出现异常现象,及时的反馈给技术人员,使得我们可以对部署在各地的服务器进行一个有效地处置。下面将分析一下在windows平台如何开发此类应用。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

       我们都知道,作为一个百、千万及以上访问量的网站,网站后台的支持系统是相当多的,各系统之间盘结交错,系统之间频繁的互相通信、交换数据。如果某个结点稍一出差错,可能就导致某个业务出现停滞现象,尤其对于一些关键的业务系统来说,需要做到高可用性,需要每天不间断的处于运行状态。除了业务系统具有良好的容错、备份机制以外,还有必要对关键系统的运行状态、输出日志等进行监控。一旦出现异常现象,及时的反馈给技术人员,使得我们可以对部署在各地的服务器进行一个有效地处置。下面将分析一下在windows平台如何开发此类应用。

先来大致描述一下网站方面的东西,我们这个网站是用asp.net开发的,服务器操作系统是windows 2003,专门提供视频内容分享方面的服务。前台基本上是以shtml页面展现内容,后台有负责生成页面内容的系统,负责视频上传,转换,分发,存储及播放的系统,负责数据统计方面的系统,站内搜索的系统等。后台的系统是以系统服务的形式运行,各数据中心的系统通过IBM MQ进行通信。需要监控的地方主要可以分为硬件,软件及网络方面,例如:存储视频的磁盘空间小于某个阀值,MQ的核心队列堆积了大量数据包,某个系统服务输出了错误的日志信息,某台服务器出现故障关机,网络中断等。

一、系统架构分析

该系统一种典型的网络通讯应用,所以可以在系统的每个层次之间通过业务协议作为接口,协议根据业务的内容可以不断的扩充,这样层与层之间的耦合性低,功能相对独立。在数据采集和数据通讯层都比较完善的时候,数据展现层的功能扩展对下面两层的影响可以降低到最小。数据通讯的模式可以分为主动和被动的方式发送数据到监控平台。例如有一些数据需要被监控计算机实时发送,而另一些数据是由操作员向某台计算机发出查询命令,然后被监控计算机执行应答。可以从功能上可以自下而上把整个系统的架构分为数据采集,数据通讯和数据展现共三个层次。

<!--[if !vml]-->
<!--[endif]-->

【图 2-1

数据采集层是服务器数据的源。主要包括对服务器运行状态、IIS可用性与性能、MQ服务器与消息队列、ORACLE数据库服务、自行开发的服务和服务器资源的使用情况等等软硬件数据进行抓取。从技术上分析可以把采集的数据分为两大类:一是被监控服务器主动发送出来的数据,这里又包含计算机的实时运行状态和一些定制的事件。二是监控中心向被监控服务器发送的各项数据指令。

数据通讯是传输数据的承载体。主要是把采集到的数据准确,安全的输送到监控中心。这里需要考虑通讯的性能,安全,以及现有的网络结构。然后综合这些情况选择合适的网络通讯模型。与采集数据的接口是业务协议。这个层面负责把协议进行解析,关键数据进行加密,然后传输数据。

数据展现层是对采集的数据进行加工、表现的地方,它是作为监控人员与机器之间的一个控制接口,所有的业务功能都最终体现到这个层面。例如:各服务器的运行信息实时显示,远程操作服务、权限管理、输出报表、数据的存放以及预警功能。

数据上行流程:

 

数据通讯层

数据采集层

事件

状态

数据通讯层

数据展现层

网络环境

WMI

数据打包

协议

发送数据

接收数据

协议

数据解包

数据存取管理

数据库

消息

实时数据显示

消息

<!--[if !vml]-->
<!--[endif]-->

               二、数据采集技术分析

因为服务器的操作系统是Windows Server,数据的采集就可以用WMI技术。它可以采集到几乎所有的软硬件数据信息。MicrosoftWMI封装成COM接口的形式提供给开发人员使用。而在 .NET 框架中,提供了更为简便的使用方法来查询系统各种的信息、订阅事件。

<!--[if !vml]-->
<!--[endif]-->

 

System.Managerment, System.Management.Instrumentation命名空间就包含了所有对WMI的操作功能。通过WMISQL语句就可以查询和订阅计算机的运行状态信息。例如:

查询某台机器的类型创建事件,就可以用类似SQL语法的程序代码来完成。

  

三、数据通信技术分析

传输的数据内容是由业务功能决定的,但其设计方法可以统一制定一个规范。考虑到网络通讯程序的特点,可以用消息的形式,发送方把数据进行封装,然后转换成字节流,由网络通讯层把数据发送到目的机器。目的机器接收到某段字节流后,解析之,然后转换成对应的消息。

每一个消息都包含消息头和消息体。由命令标识、序列号、消息长度,再加上特定的业务信息就构成了一个完整的消息。协议解析时就可以根据消息标识,选择相应的消息处理对象,生成对应的消息实体。数据展现层再负责把消息实体持久化到数据库中。

       针对不同的消息,会有应答消息,即消息一般以成对的方式出现。比如监控方向被监控方查询某个设备状态,它接收到命令后,会把查询的结果以相同的序列号为关联,发出应答消息。这样监控方就可以准确无误的收到信息。

6.1.1消息头格式

字段

长度(字节)

类型

说明

Message Length

4

Integer

消息的总长度(字节)

Command ID

4

Integer

命令ID

Sequence Number

12

Integer

序列号

 

6.1.2 消息体格式

字段

长度(字节)

类型

说明

MessageLength

4

Integer

消息的长度

MessageContent

Message Length

String

消息的内容

Reserve

8

String

保留,扩展用

 

6.1.3 应答格式

字段

长度(字节)

类型

说明

Result

1

Integer

命令是否成功执行。

0:执行成功

其它:错误码

MessageLength

4

Integer

消息的长度

MessageContent

Message Length

String

消息的内容

Reserve

8

String

保留,扩展用

 

6.1.4 消息ID定义

消息ID名称

消息ID取值

BIND

0x1

BIND_RESP

0x80000001

UNBIND

0x2

UNBIND_RESP

0x80000002

 

6.1.5 错误码定义

错误码

描述

0

无错误

1

非法用户名

2

3

 

四、结束

windows平台下可以通过WMI技术采集服务器的状态,然后把状态消息发送到监控中心,对接收到的数据进行加工呈现,同时以邮件,短信发送警报信息。最终实现对服务器软硬件状态的有效监控。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:博客园

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP