【问题标题】:Monitoring .NET ASP.NET Applications监控 .NET ASP.NET 应用程序
【发布时间】:2011-06-04 07:52:39
【问题描述】:

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

  • 异常:我们目前有一些自定义代码,当异常发生时会向我们发送电子邮件。如果应用程序严重失败,它将使我们的前景崩溃……我知道(并使用)elmah,它部分解决了问题,但它仍然只是一个带有漂亮(ish)UI 的大异常表。我想要对所有这些异常有意义的东西(例如,对异常进行分组、在出现新异常时发出警报、告诉我应该修复哪些常见异常等)

  • 记录:我们目前记录到文件,然后可以通过 dev 的 grep 和 tail 的共享文件夹访问这些文件。有谁知道更好的方式来呈现这些信息。在一个理想的世界里,我想把它与例外联系起来。

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

我猜这可能会通过一些工具来解决,有没有人有任何建议?

【问题讨论】:

  • 解决异常问题的最好方法是立即修复它们。为什么你有这么长时间没有修复的异常?
  • 我同意,但我继承了一个我正试图扭转的遗留应用程序。第一项任务是找出最大的痛点是什么,以便我们最了解如何解决问题。
  • 大声笑,我不得不检查你的名字两次以确保你没有在这里工作;)
  • 当你找到修复异常按钮时告诉我。我已经找了好几个星期了。
  • @All:修复异常按钮被调用,“选择一个,复制它,修复它,重复”。首先,您可能需要修复异常处理,以便将每个异常记录一次且仅一次。

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


【解决方案1】:

嗯,我们有完全相同的当前解决方案。电子邮件中的电子邮件乱丢了我的收件箱,而且大部分都被忽略了。在假期里,一个错误导致开发中的每个人都达到了他们的收件箱限制;)

那么我们的解决方案将走向何方?

  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 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

在我有时间记录这一切之前,你应该可以开始。

【讨论】:

    【解决方案2】:

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

    我写了一篇关于如何做到这一点的博客HERE.

    作为一个相关步骤,我找到了一种在未发生事情时通知自己的方法。那个博客是HERE.

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        你应该看看Gibraltar自己没用过但是看起来很不错!也可以与 nLog 和 log4net 一起使用,所以如果你使用它们,那你很幸运!!

        【讨论】:

        • 很多好的建议,但这个似乎最有希望。我将对此进行猛烈抨击。谢谢:)
        • 我们有一些好消息!直布罗陀现在是免费的。下面的单独答案中有更多详细信息。
        【解决方案5】:

        就处理的异常或典型的日志记录而言,l4ndash 值得一看。我总是将我们的 log4net 设置为不仅写出文本文件,而且追加到数据库中。这样 l4ndash 可以很容易地分析它。它将你的错误分组,让你看到坏事在哪里发生了很多。您将获得一份免费的开发许可证

        使用 Elmah,我们只需定期提取日志。它可以导出为 csv,然后我们使用 Excel 对数据进行过滤/分组。这并不理想,但它有效。编写一个脚本来自动化它会很好。 Elmah 的其他内容我还没有看到。

        【讨论】:

          【解决方案6】:

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

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

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

          【讨论】:

            【解决方案7】:

            您可以通过在 IIS 日志上运行 LogParser 来获取有关请求时间的一些指标(以及保存的任何其他内容)。

            【讨论】:

              【解决方案8】:

              One suggestion from Ryans Roberts 我真正喜欢的是exceptioneer,这似乎至少解决了我的异常问题。

              【讨论】:

              • 知道 Exceptioneer 发生了什么吗?
              猜你喜欢
              • 2010-12-26
              • 1970-01-01
              • 2014-02-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-02-28
              相关资源
              最近更新 更多