你的位置:首页 > ASP.net教程

[ASP.net教程]healthMonitoring与运行状况监视


配置针对应用程序的运行状况监视的一个服务

   

配置节内容比以往的较为复杂,如下

<healthMonitoring Enabled="true|false"heartbeatInterval="time interval"><bufferModes>...</bufferModes><providers>...</providers><eventMappings>...</eventMappings><profiles>...</profiles><rules>...</rules></healthMonitoring>

 

   

实际上这是运行状况监视是一个事件定义与处理的模型,简单来看整个运行状况监视基本点有以下三个

1.在eventMappings定义事件

2.在providers定义事件的处理

3.通过rules绑定事件给某个处理程序去处理。

稍微丰富一点的话,还可以包含下面这几点

1.事件可以带参数,参数则定义在profiles中,也是在绑定事件时通过rules指定

2.处理程序可以具备缓冲功能,缓冲功能在在bufferModes中定义,在providers中指定给对应的处理程序。

  

  

配置中所有子节点都是一个集合,下面展示几个关键个集合中元素的特性

eventMappings:件的友好名称

name:事件友好的名称(唯一标识)

type:事件的完全限定类型名称

startEventCode和endEventCode:指定事件代码标识符的其实范围

  

profiles:事件配置

name:指定配置文件名称(唯一标识)

minimumInstances:激发事件之前至少出现的次数

maximumLimit:指定阈值,在达到该值后,将停止激发事件

minimumInterval:指定两个事件之间的最小时间间隔,以 "hh:mm:ss" 的形式表示

  

providers:负责事件处理类型的集合

name:指定提供程序的友好名称(唯一标识)

type:指定对某个类的完全限定的程序集引用

buffer:指定提供程序是使用缓冲还是立即将每个事件发送给收件人,仅适用于type是 SqlWebEventProvider 类

bufferMode:指定提供程序使用的缓冲模式的名称(如果提供程序处于缓冲模式)。此名称必须引用 BufferModesCollection 集合中存在的现有缓冲模式之一;否则,将引发一个异常。如果打开了缓冲,则此属性必须存在,仅适用于 SQLWebEventProvider 属性。

  

rules:将事件映射到它的提供程序(给事件绑定处理类进行处理)

name:指定此规则的名称

eventName、provider和profile:对其它配置节的关联引用

minInstances:事件通知触发前在给定应用程序内部的规则实例的最小数量

maxLimit:指定生成提供程序通知的规则实例的最大数量。

minInterval:指定两个事件之间的最小时间间隔。

  

看profiles和rules中有相似的属性存在,虽然同样有最小次数、最大数量和最小时间间隔,而从文字上看,是先按照rules判断,再按照providers进行判断。

  

纵观之前的描述和鄙人之前看的一篇博客(看上去感觉在MSDN中抄了不少)。只要了解了事件处理模型,这个配置节的内容以及它的功能则会好理解。框架中定义了若干个事件,和若干个事件处理程序。博文后的附录部分则是ASP.NET中定义的事件和处理程序。开发人员有需要的话可以自己对其进行扩展,不过不管怎么去改,也需要去添加一个新的rule。

另外,从博文或者从MSDN中也得知,如需要自己触发事件,可调用WebBaseEvent的Raise()方法。

  

<eventMappings><add name="All Events" type="System.Web.Management.WebBaseEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/><add name="Heartbeats" type="System.Web.Management.WebHeartbeatEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/><add name="Application Lifetime Events" type="System.Web.Management.WebApplicationLifetimeEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/><add name="Request Processing Events" type="System.Web.Management.WebRequestEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/><add name="All Errors" type="System.Web.Management.WebBaseErrorEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/><add name="Infrastructure Errors" type="System.Web.Management.WebErrorEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"                                                                                                                                                                                         startEventCode="0" endEventCode="2147483647"/><add name="Request Processing Errors" type="System.Web.Management.WebRequestErrorEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/><add name="All Audits" type="System.Web.Management.WebAuditEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/><add name="Failure Audits" type="System.Web.Management.WebFailureAuditEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"                                                                                                                                                                                                                                                                                   startEventCode="0" endEventCode="2147483647"/><add name="Success Audits" type="System.Web.Management.WebSuccessAuditEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"                                                                                                                                                                                                                                                                                                                 startEventCode="0" endEventCode="2147483647"/></eventMappings>

事件
<add name="EventLogProvider" type="System.Web.Management.EventLogWebEventProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/><add connectionStringName="LocalSqlServer" maxEventDetailsLength="1073741823" buffer="false" bufferMode="Notification" name="SqlWebEventProvider" type="System.Web.Management.SqlWebEventProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/><add name="WmiWebEventProvider" type="System.Web.Management.WmiWebEventProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/>

事件处理程序