zoukankan      html  css  js  c++  java
  • ASP.NET拾遗 Health Monitoring

    缘起

    上午计划为一个小站点,增加一个日志的Dashboard,找到了这篇文章:

    Log Reporting Dashboard for ASP.NET MVC

    文中讲解了如何用ASP.NET MVC实现一个Dashboard,为四种日志源提供检索和统计图表的功能。
    ASP.NET MVC Log Reporting Dashboard

    从图中也可以看出来,这四种日志源分别是:

    • Elmah
    • Health Monitoring
    • log4net
    • NLog

    可以把它们归为三类工具:
    1. Elmah,应用场景非常明确,用于搜集ASP.NET应用程序未捕获异常及大量上下文信息,并提供了不错的UI。
    2. log4net和NLog都是通用的日志库,专注在记录上,而记录哪些内容,给查看者提供UI,并不是他们的目标。
    3. Health Monitoring,也是站在ASP.NET应用程序的角度,基于一套事件模型,提供(Provider)记录(或通知)机制。

    因此,这三类工具,虽然从记录这个角度看有些交集,但各自侧重点不同。

    眼前这个小站点,只使用log4net作为单纯的记录工具。对于应用程序级别的监控,还一片空白,遂想着看这方面的需求,能否利用Health Monitoring来满足一部分。

    Health Monitoring

    对于Health Monitoring,以前几乎没有了解。甚至从来没有想过,为什么一个未捕获的异常,在ASP.NET应用程序中,会被记录到Windows EventLog中。

    先是读了MSDN:

    healthMonitoring Element (ASP.NET Settings Schema)

    最吸引我的是:

    • healthMonitoringheartbeatInterval属性
    • bufferModes
    • Profile中的minInterval属性 从这里也可以看出,已经不是单纯的做记录了,而是侧重于Monitoring

    %windir%\Microsoft.NET\Framework\v4.0.30319\Config\web.config中定义了四种bufferModes(应该也可以很容易定义自己的bufferModes):
    1. Critical Notification
    2. Notification
    3. Analysis
    4. Logging

    <bufferModes>
        <add name="Critical Notification" maxBufferSize="100" maxFlushSize="20"
            urgentFlushThreshold="1" regularFlushInterval="Infinite" urgentFlushInterval="00:01:00"
            maxBufferThreads="1" />
        <add name="Notification" maxBufferSize="300" maxFlushSize="20"
            urgentFlushThreshold="1" regularFlushInterval="Infinite" urgentFlushInterval="00:01:00"
            maxBufferThreads="1" />
        <add name="Analysis" maxBufferSize="1000" maxFlushSize="100"
            urgentFlushThreshold="100" regularFlushInterval="00:05:00"
            urgentFlushInterval="00:01:00" maxBufferThreads="1" />
        <add name="Logging" maxBufferSize="1000" maxFlushSize="200" urgentFlushThreshold="800"
            regularFlushInterval="00:30:00" urgentFlushInterval="00:05:00"
            maxBufferThreads="1" />
    </bufferModes>
    

    由于这个机制最早是在ASP.NET 2.0中引入的,时隔多年,便有一点想去了解有没有变化的部分。找到的文章里,并没有发现这方面内容,但其中的示例,
    很轻易的就实现了一个常见的需求:当某个特定异常发生时,发邮件通知干系人。

    Health Monitoring in ASP.NET 3.5

    另外,受该文启发,有另一篇入门文章,其中其中有一个非常好的关于Health Monitoringquick reference(见下图)

    Re: Health Monitoring in ASP.NET 3.5

    healthMonitoring

    Health Monitoring的其它相关资料:

    MSDN
    ASP.NET Health Monitoring Overview

    www.asp.net
    Logging Error Details with ASP.NET Health Monitoring
    (C#)

    两篇2007年的园子里的翻译文章
    [翻译] ASP.NET 2.0中的健康监测系统(Health Monitoring)(1) - 基本应用
    [翻译]ASP.NET 2.0中的健康监测系统(Health Monitoring)(2) - 通过Email发送监测信息

    yicone
    -The future is worth fighting for.
  • 相关阅读:
    48-最长不含重复字符的子字符串
    51-数组中的逆序对
    字符串的排列
    二叉树转链表
    求根
    构造二叉树
    二叉树中序遍历
    反转链表系列
    斐波那契系列
    f.lux
  • 原文地址:https://www.cnblogs.com/yicone/p/3001626.html
Copyright © 2011-2022 走看看