繁体   English   中英

监视.NET ASP.NET应用程序

[英]Monitoring .NET ASP.NET Applications

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

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

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

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

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

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

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

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

异常生成器(在上面的修改之前)位于:

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

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

- 更新 -

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

  1. 从以下网址下载源代码或二进制文件: http//code.google.com/p/csharptest-net/
  2. 看一下CmdTool.exe Visual Studio集成的帮助
  3. 然后查看有关ResX和MC文件的Generators的帮助,有几种方法可以从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

这应该让你开始,直到我有时间记录它。

你应该看看直布罗陀没有自己使用它,但看起来非常好! 也适用于nLog和log4net,所以如果你使用那些你运气好!!

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

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

一个建议Ryans罗伯茨我真正喜欢的是exceptioneer这似乎至少要解决我的例外困境。

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

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

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

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

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

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

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

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

我在这里写博客关于如何做到这一点

作为一个相关的步骤,我发现了一种在没有发生事情时通知自己的方法。 那个博客在这里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM