.NET监控技术应用与分析

开发 后端
我们都知道,作为一个百、千万及以上访问量的网站,网站后台的支持系统是相当多的,各系统之间盘结交错,系统之间频繁的互相通信、交换数据。如果某个结点稍一出差错,可能就导致某个业务出现停滞现象,尤其对于一些关键的业务系统来说,需要做到高可用性。本文将介绍基于.NET监控技术应用与分析。

在平时除了业务系统具有良好的容错、备份机制以外,还有必要对关键系统的运行状态、输出日志等进行监控。一旦出现异常现象,及时的反馈给技术人员,使得我们可以对部署在各地的服务器进行一个有效地处置。下面将分析一下在Windows平台如何开发此类.NET监控技术应用。

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

一、系统架构分析

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


【图 2-1

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

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

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

.NET监控技术中数据上行流程:

数据上行流程

 

  1. 数据通讯层  
  2.  数据采集层  
  3.  事件  
  4.  状态  
  5.  数据通讯层  
  6.  数据展现层  
  7.  网络环境  
  8.  WMI  
  9.  数据打包  
  10.  协议  
  11.  发送数据  
  12.  接收数据  
  13.  协议  
  14.  数据解包  
  15.  数据存取管理  
  16.  数据库  
  17.  消息  
  18.  实时数据显示  
  19.  消息  
  20.   
  21.  

二、数据采集技术分析

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


 

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

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

代码片段

 三、数据通信技术分析

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

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

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

消息头格式

字段

长度(字节)

类型

说明

Message Length

4

Integer

消息的总长度(字节)

Command ID

4

Integer

命令ID

Sequence Number

12

Integer

序列号

 消息体格式

字段

长度(字节)

类型

说明

MessageLength

4

Integer

消息的长度

MessageContent

Message Length

String

消息的内容

Reserve

8

String

保留,扩展用

应答格式

字段

长度(字节)

类型

说明

Result

1

Integer

命令是否成功执行。

0:执行成功

其它:错误码

MessageLength

4

Integer

消息的长度

MessageContent

Message Length

String

消息的内容

Reserve

8

String

保留,扩展用

 消息ID定义

消息ID名称

消息ID取值

BIND

0x1

BIND_RESP

0x80000001

UNBIND

0x2

UNBIND_RESP

0x80000002

 错误码定义

错误码

描述

0

无错误

1

非法用户名

2

3

四、基于.NET监控技术与分析总结

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

【编辑推荐】

  1. NET方法演化史 从Delegate到Lambda再到LINQ
  2. .Net平台开源项目五年发展回顾
  3. .Net平台下的分布式缓存设计
  4. .NET平台上Web开发的未来?
  5. 微软.NET平台中类型使用的基本原理
责任编辑:彭凡 来源: cnblogs
相关推荐

2012-10-29 17:17:13

2015-08-10 14:41:39

Kubernetes监控开源容器管理

2012-11-26 10:58:33

2009-11-02 17:33:40

无线接入技术

2009-07-28 16:42:02

ViewState技术ASP.NET应用

2024-06-19 08:24:47

2022-12-21 08:32:34

OLAPDruid架构

2013-09-18 09:41:19

100G路由技术100G路由技术

2024-04-08 11:52:08

PromQL技术监控

2009-11-02 15:57:36

VB.NET WEB

2010-08-23 09:49:53

.NET 4

2009-08-05 15:01:04

ASP.NET应用Vi

2010-01-07 15:57:02

VB.NET ForEach

2014-01-16 10:21:54

2010-07-06 15:54:30

VB.NET UDP

2011-02-24 10:21:53

Femto组网网络

2009-08-03 08:45:23

PHP SNS.NET SNS

2022-07-28 08:45:40

Web应用监控与告警

2010-07-20 20:45:54

2022-05-10 11:23:56

漏洞补洞过程入侵检测
点赞
收藏

51CTO技术栈公众号