Web 事件--向SQL Server 数据库、Windows 事件日志、WMI 命名空间或电子邮件输出事件

Web 事件
Web 事件功能为发出运行时事件提供了一个通用框架,用以指示应用程序中发生的值得注意的操作,报告应用程序运行状况或任何其他值得注意的信息。该功能可使管理员通过配置中的事件订阅确切地确定他们感兴趣的事件,并指定事件通过哪些信道传送。该功能包括多种现成可用的信道提供程序,它们适用于不同的方案:
将事件保存到 Microsoft? SQL Server
通过电子邮件发送事件报告
将事件写入 Windows? 事件日志
通过 WMI 转发事件
ASP.NET 2.0 自身也使用 Web 事件功能提供对各种运行时功能的运行状况报告、审核和检测。任何人都能开发并引发自定义事件类型以进一步检测他们的应用程序。

 


在下面的示例中,应用程序被配置为将所有发出的 Web 事件发送到 SQL Server 提供程序。该页在加载时将引发派生自 WebEventBase 的自定义事件类型的实例,并使用数据源控件直接从 SQL Server 事件表中读取事件。显示事件列表的 GridView 还显示了一些 ASP.NET 在请求处理周期中自己生成的事件。


C# Health Monitoring Events
 
事件和事件提供程序
Web 事件是在运行时以相应的信息构造的各种 Web 事件基类的实例,并且指定了事件代码/详细信息代码,这些代码可用来标识该事件所要表示的情况。ASP.NET 有一组用来检测在基础结构中引发的多种情况的基类,并且它允许应用程序以自定义事件类来扩展这些基类,这些自定义事件类表示该应用程序选择报告的任意信息。这些自定义事件随后可由应用程序代码通过 Web 事件引擎创建并引发。

ASP.NET 包含下列 Web 事件基类(没有全部列出),它们位于 System.Web.Management 命名空间中:

功能 说明
 WebBaseEvent  所有事件的事件基类。包含所有事件必需的属性,如事件代码、事件详细信息代码、事件引发的日期和时间、序列号、事件消息和事件详细信息。
 WebManagementEvent  管理事件的事件基类,如应用程序生存期、请求、错误和审核事件。
 WebHeartbeatEvent  由应用程序以固定的时间间隔生成的事件,用以捕获有用的运行时状态信息。
 WebAuditEvent  安全审核事件的基类,这些事件用于标记授权失败、解密失败等情况。
 WebRequestEvent  所有信息请求事件的基类。
 WebBaseErrorEvent  所有指示错误情况的事件的基类。

当事件引发时,它们由 Web 事件引擎进行处理,该引擎将这些事件路由到一个或多个表示事件使用者的 Web 事件提供程序,事件使用者被配置为侦听运行状况监视配置中的特定事件。Web 事件引擎还提供了其他一些服务,如对事件进行限流以避免不可承受的事件量。

Web 事件领域中的提供程序其实是可插接的事件使用者。ASP.NET 2.0 提供了多种现成可用的内置提供程序,并且使您能够实现和配置您自己的自定义提供程序。所包含的提供程序可以向 Microsoft SQL Server 数据库、Windows 事件日志、WMI 命名空间或电子邮件输出事件。

配置事件
注意:本节中,所有的配置都是指节中的元素(除非另有说明)。

为了收到事件,需要创建一个将事件集映射到事件使用者的订阅,这由 Web 事件提供程序实现。订阅有下列几个部分:

事件映射。用于定义一个事件集以及可用来在订阅中引用该事件集的名称,通过一个事件基类和一个可选的事件代码范围来标识该事件集,此事件集中的所有事件必须派生自该事件基类。例如,下面的映射创建了一个事件集,其中包含事件代码从 0 到 1000 的所有审核事件:
<eventMappings>

  <add name="Audit Events" startEventCode="0" endEventCode="1000" type="System.Web.Management.WebAuditEvent" />

</eventMappings>

事件订阅规则。用于定义事件集与将处理该事件集的 Web 事件提供程序之间的映射。该规则还可以选择指定一个包含事件限流信息的配置文件,以限制该规则处理的事件量,或者直接指定这些设置。

例如,下面的规则将我们在前面创建的审核事件集通过信道发送到随 ASP.NET 2.0 安装的默认事件日志提供程序:
<rules>

  <add name="MyFirstSubscription" eventName="Audit Events" provider="EventLogProvider" />

</rules>

提供程序。用于定义将使用事件的事件信道的提供程序。此处,您可以配置 ASP.NET 2.0 所包含的默认提供程序之一,或者指定您自己的派生自 Web 事件提供程序基类的类型。

例如,下面的配置默认情况下存在于 ASP.NET 2.0 安装中,以便使 ASP.NET 事件日志提供程序能够将事件写入 Windows 事件日志:
<providers>

  <add name="EventLogProvider" type="System.Web.Management.EventLogWebEventProvider" />

</providers>

您还可以配置其他设置以进一步控制节中的 Web 事件的行为,如设置配置文件以指定应用于规则的限流设置,以及用于缓冲的提供程序的缓冲模式。


创建自定义事件
为了创建自定义事件类型,您必须从某个可派生的 Web 事件基类派生您自己的事件类。然后,可以在运行时创建并引发此事件的实例,并如上所述配置对该事件的订阅。

下面的示例使用自定义事件代码和消息创建一个自定义事件,并且在页事件处理程序中将引发此事件的一个实例:
// in the code directory, or your application source code

class MySampleEvent : System.Web.Management.WebBaseEvent

{

  public const int MySampleEventCode = 200001;

 

  public MySampleEvent(String message) : base(message, null, MySampleEventCode) {}

}

 

// in an aspx page

void Page_Load()

{

  // create an instance of the event

  MySampleEvent e = new MySampleEvent("In Page_Load()");

  // raise the event to the web event engine

  e.Raise();

}

检测应用程序
为了检测应用程序以进行运行时监视,您应该创建派生自正确的 Web 事件基类的自定义事件类,并包含对应用程序有意义的附加信息。然后,您可以在您想检测的代码中创建并引发这些事件的实例。

在应用程序或其组件的内部创建并引发了您自己的事件之后,您可以配置事件订阅以通过信道将值得注意的特定事件发送到相应的提供程序。


事件限流
事件限流是指限制事件传入提供程序的速率以避免提供程序负担过重,或者限制用来传输、处理、存储或显示事件的输出方式。限流设置应用于规则级别。

您可以通过在每条规则的基础上指定限流设置,或者创建定义一组限流设置的配置文件来对事件进行限流。您可以随意使用的限流能力包括对发生 N 次的事件只记录一次,在给定时期内只记录一次事件,或者只记录某个给定事件发生的前 N 次。

下面的示例修改了审核事件订阅规则,以保证最大事件速率为每秒一个事件:
<rules>

  <add name="MyFirstSubscription" eventName="Audit Events" provider="EventLogProvider" minInterval="00:00:01" />

</rules>

注意:限流会丢失事件,因此在为审核事件之类的敏感事件设置限流设置时要格外小心。限流的替代方式是使用特定提供程序的缓冲功能,该功能以延迟事件发送为代价避免丢失事件。

下面示例将限流设置放置在一个配置文件中,该配置文件随后可在多条规则间共享:
<profiles>

  <add name="MyProfile" ="00:00:01" />

</profiles>

 

<rules>

  <add name="MyFirstSubscription" eventName="Audit Events" provider="EventLogProvider" profile="MyProfile" />

</rules>

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值