惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
美团技术团队
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
月光博客
月光博客
宝玉的分享
宝玉的分享
小众软件
小众软件
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research
A
About on SuperTechFans
J
Java Code Geeks
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
Vercel News
Vercel News
博客园 - 聂微东

博客园 - sinlight23

Web开发框架趋势 ASP.NET MVC - PageData的应用 .NET Xml序列化时会忽略值为"默认值"的Property或Field ASP.NET MVC 实现模式 - ModelBuilder Enumerable.Range和自定义的IntRange/DateRange HOWTO: Web Deploy时服务器报登录失败的解决方法 HOWTO: 为GitHub for Windows指定代理服务器 ASP.NET MVC - 在MVC 3项目中使用ASP.NET Bundling and Minification机制 脚印:关于错误编码的管理的一些思考 脚印:软件开发随想录 脚印:关于扩展方法的使用 脚印:一次重构讨论 脚印:记录一次重构,将规则生产和规则消费(执行委托)分离 HOWTO: IE8下处理iframe自适应高度 Microsoft ASP.NET 2.0 AJAX 相关信息备忘 MVC 模式在javascript中的应用 VS2010 "SQL Server 2005 Database Project" 使用笔记(二) VS2010 "SQL Server 2005 Database Project" 使用笔记 腳印: 初學者的心態
ASP.NET拾遗 - Health Monitoring
sinlight23 · 2013-04-05 · via 博客园 - sinlight23

缘起

上午计划为一个小站点,增加一个日志的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发送监测信息