2011-01-05 102 views
7

我有很多应用程序运行在我想监视的ASP.NET之上。我关心的主要事情是:监控.NET ASP.NET应用程序

  • 例外:我们目前一些自定义代码发生异常时,将发送电子邮件。如果应用程序失败了,它会使我们的前景崩溃......我知道(并使用)elmah,它部分解决了这个问题,但它仍然只是一个很大的例外与一个漂亮的(ish)用户界面。我想要的东西,使意义上,所有这些异常的(时新发生的例如组的异常,警报,告诉我什么是常见的是,我应该修复等)

  • 记录:目前,我们记录到文件然后通过dev的grep &尾部共享文件夹访问。有没有人知道更好的方式来呈现这些信息。在理想的世界中,我想将它与例外联系起来。

  • 性能:请求时间,内存占用,CPU等任何统计数据,我可以得到

我猜这可能是要通过一些手段来解决,有没有人有任何建议?

+1

解决异常问题的最佳方法是立即修复它们。为什么你有这么长时间没有解决的例外情况? – 2011-01-05 22:18:59

+0

我同意但我继承了一个遗留应用程序,我正在尝试转向。首要任务是确定最大的问题是什么,所以我们最好知道如何解决问题。 – 2011-01-05 22:24:59

+0

大声笑,我不得不检查你的名字两次,以确保你没有在这里工作;) – 2011-01-05 22:42:26

回答

3

你应该看看Gibraltar没有用过它自己,但看起来非常好!也适用于nLog和log4net,所以如果你使用那些你是幸运的!

+0

很多很好的建议,但这似乎是最有前途的。我要去做这件事。谢谢:) – 2011-01-06 20:02:55

+1

我们有一些好消息!直布罗陀现在免费。更多细节在下面的一个单独的答案。 – 2013-05-09 16:04:34

1

在处理的异常或者只是典型的记录l4ndash方面是值得一试。我总是设置我们的log4net不仅写出文本文件,而且还附加到数据库。这样l4ndash可以轻松分析它。它会分组你的错误,让你看到坏事发生的地方。你得到一个免费的开发许可证

随着ELMAH我们只是定期拉下日志。它可以导出为csv,然后我们使用Excel对数据进行过滤/分组。这不是理想的,但它的工作原理。编写一个脚本来自动化这一点会更好。我没有看到Elmah的其他地方。

0

您可以通过运行LogParser在IIS日志得到请求超时(和其他任何中保存的)一些指标。

1

我先去了log4net的。 SmtpAppender可以在发送电子邮件之前等待N个例外累积并避免崩溃Outlook。和log4net的还记录记录可存储网络驱动器上的文件,与猫和grep读等

有关统计,你可以使用同样的工具,即执行健康/性能记录。因为它产生的每分钟记录的CPU使用率等

我没有对问题的第一部分具体的答案一个线程,因为这意味着自动化的日志分析和合并。在大学时,我们制作了一个旨在完成这些任务的一部分的工具,但不适用于您的场景(但它与log4net是双向集成的)。

3

那么,我们有完全相同的当前解决方案。邮件上的电子邮件使我的收件箱乱丢垃圾,并且大部分被忽略。在假期中的错误引起的开发,达到他们的收件箱限制每个人;)

所以我们哪里头脑冷静的解决方案?

  1. 我们已经为我们所有的锻炼产生了类,它们很少从不止一个地方使用过。这基本上是第一步,但我们这样开始了代码库。
  2. 我们修改了生成器以为所有异常创建唯一的HRESULT值。
  3. 我们再次添加了一个生成器来为每个异常创建.MC消息资源文件。
  4. 现在每个异常都可以自行写入Windows事件日志,因此我们删除了所有电子邮件等,并依赖于事件日志。
  5. 现在,通过事件日志充满了各种信息,包括每个异常的唯一消息代码和参数,我们可以使用现成的工具来聚合,监控和警报。

异常发生器(上面的修改之前)位于此处:

它由与此替换的ResX发生器与Visual Studio集成:

我还没有发布MC发生器,或HRESULT代;但是,当我获得时间时,它将在上述位置提供。

- UPDATE -

所有工具和源现在可以在网络上这一点。那么我从哪里去?

  1. 下载从源文件或二进制文件:http://code.google.com/p/csharptest-net/
  2. 看看在帮助CmdTool.exe Visual Studio Integration
  3. 然后审查Generators for ResX and MC files帮助下,有几种方法来生成的ResX文件MC文件或整个消息的DLL 。选择最适合你的方法。
  4. 运行CmdTool.exe REGISTER与Visual Studio注册工具
  5. 创建的ResX文件为正常,然后更改自定义工具CmdTool
  6. 您将需要一些条目添加到RESX文件。在最小的创建以下文件:
  7. 现在您应该有一个正在生成的写入日志事件的异常类。您将需要建立MC文件的前/后生成操作的东西,如:
    • CSharpTest.Net.Generators.exe RESXTOMESSAGEDLL /output=MyCustomMessages.dll /input=TheProjectWithAResX.csproj
  8. 最后,你需要注册,运行框架的InstallUtil.exe MyCustomMessages.dll

应让你开始,直到我有时间记录下来。

0

我们已经构建了一个简单的监视应用程序,它位于桌面上,当从服务器上的某个应用程序写入事件日志或者将错误写入错误日志表时,闪烁红色数据库。它还监视数据库运行状况,检查碎片等。

我们遇到的唯一问题是,它可能在桌面上有点侵入,因为如果出现问题,它会一直弹出一个红色的消息框。不过,它确实鼓励你尽快修复它。

我们目前在几个开发者机器上运行。我们正在考虑的改进是在服务器上运行一个监控应用程序,然后发布rss订阅源,以便应用程序只在一个地方检查一次,但我们可以使用我们在当时选择的任何一种方法从任何地方使用这些信息(例如当我们不在办公室时通过我们的电话)。

0

你可以从你的例外表(和其他东西)中选择一个RSS订阅源。 然后,您可以在MS Outlook或任何智能手机上订阅RSS源。我使用了一个名为NewsRob的RSS阅读器,因为它会在有新内容时提醒我。

我的博客如何做到这一点HERE.

作为相关的步骤,我找到了一种方法来通知自己,当事情并没有发生。该博客是HERE.