监视.NET ASP.NET应用程序

时间:2011-01-05 22:09:59

标签: c# .net asp.net logging monitoring

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

  • 例外:我们目前有一些自定义代码会在发生异常时通过电子邮件发送给我们。如果应用程序失败了将会崩溃我们的前景...我知道(和使用)elmah部分地解决了问题,但它仍然只是一个很好的(ish)UI的异常表。我想要一些让所有这些异常 sense 的东西(例如,群组异常,新的异常时发出警报,告诉我应该修复的常见内容等等)

  • 记录:我们当前登录的文件可以通过共享文件夹访问,该文件夹是dev的grep&尾巴。有谁知道更好的方式来呈现这些信息。在理想的世界中,我想将它与异常联系起来。

  • 效果:请求时间,内存使用情况,cpu等,无论我得到什么统计数据

我猜这可能会被许多工具解决,有人有任何建议吗?

8 个答案:

答案 0 :(得分:3)

好吧,我们目前的解决方案完全相同。电子邮件上的电子邮件会丢弃我的收件箱,而且大多数都会被忽略。在假期期间,错误导致dev中的每个人都达到其收件箱限制;)

那么我们在哪里找到解决方案?

  1. 我们已经为所有的繁殖生成了类,它们很少被从多个地方使用。这基本上是第一步,但我们以这种方式启动了代码库。
  2. 我们修改了生成器,为所有异常创建唯一的HRESULT值。
  3. 我们再次添加了一个生成器,为每个异常创建一个.MC消息资源文件。
  4. 现在每个异常都可以将自己写入Windows事件日志,因此我们删除了所有电子邮件等,并依赖于事件日志。
  5. 现在,事件日志中包含大量信息,包括每个例外的唯一消息代码和参数,我们可以使用现成的工具进行聚合,监控和警报。
  6. 异常生成器(在上面的修改之前)位于:

    它通过用以下代码替换ResX生成器与visual studio集成:

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

    - 更新 -

    现在可以在线获取所有工具和来源。那么我从哪里开始呢?

    1. 从以下网址下载源代码或二进制文件:http://code.google.com/p/csharptest-net/
    2. 查看CmdTool.exe Visual Studio Integration
    3. 的帮助
    4. 然后查看Generators for ResX and MC files上的帮助,有几种方法可以从ResX文件生成MC文件或完成消息DLL。选择最适合你的方法。
    5. 运行CmdTool.exe REGISTER以使用Visual Studio注册该工具
    6. 正常创建ResX文件,然后将自定义工具更改为CmdTool
    7. 您需要在resx文件中添加一些条目。最小化创建以下内容:
    8. 现在您应该生成一个写入日志事件的异常类。您将需要构建MC文件作为前/后构建操作,具体如下:
      • CSharpTest.Net.Generators.exe RESXTOMESSAGEDLL /output=MyCustomMessages.dll /input=TheProjectWithAResX.csproj
    9. 最后,您需要注册它,运行框架的InstallUtil.exe MyCustomMessages.dll
    10. 这应该让你开始,直到我有时间记录它。

答案 1 :(得分:3)

你应该看看Gibraltar我自己没用过但看起来很好!也适用于nLog和log4net,所以如果你使用那些你很幸运!!

答案 2 :(得分:1)

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

对于Elmah,我们只是定期下拉日志。它可以作为csv导出,然后我们使用Excel做过滤/分组数据。它并不理想,但它有效。编写一个脚本来自动化这一点会更好。我没见过Elmah的其他东西。

答案 3 :(得分:1)

来自One suggestion的{p> Ryans Roberts我真的很喜欢exceptioneer,这似乎至少可以解决我的异常问题。

答案 4 :(得分:1)

我首先选择 log4net 。 SmtpAppender可以在发送电子邮件之前等待N个异常累积,并避免Outlook崩溃。 log4net还会记录到可以存储在网络驱动器上的日志文件,并使用cat和grep等进行读取。

关于统计信息,您可以使用相同的工具执行运行状况/性能日志记录,即。产生一个每分钟记录CPU使用率等的线程。

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

答案 5 :(得分:0)

您可以通过IIS日志运行LogParser来获取请求时间(以及其他任何已保存的)的指标。

答案 6 :(得分:0)

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

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

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

答案 7 :(得分:0)

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

我在博客中介绍了如何执行此操作HERE.

作为一个相关的步骤,我发现了一种在没有发生任何事情时通知自己的方法。该博客是HERE.