【问题标题】:Application heartbeat monitoring, possibly via SQL server应用程序心跳监控,可能通过 SQL 服务器
【发布时间】:2013-02-18 14:12:01
【问题描述】:

我有一个用 ASP.NET C# 编写的应用程序,它应该运行大约 2 天,然后停止,直到它再次启动。 应用程序有时会遇到一些麻烦,目前需要人工干预才能使其继续运行。 (到目前为止,SQL Server 本身从来都不是问题)

在工作时,应用程序至少每 20 分钟向日志数据库表写入一行。 如果这些行不存在,则意味着应用程序要么完成了任务,要么需要帮助才能继续。在这些情况下,我希望收到一封电子邮件或其他通知。

当应用程序停止将这些行写入日志数据库表时,检测并通知我的最佳方法是什么?

如果它使事情变得更容易,我可以让应用程序执行一些其他常规任务,例如写入文件或在某处发送 TCP/UDP 数据包。

【问题讨论】:

  • 您有一个运行大约2天网络应用程序??当然有更好的设计。您是否考虑过 Workflow Foundation 或 SSIS?它们不仅更适合长时间运行的任务,而且还具有用于报告故障的内置工具。

标签: c# asp.net sql-server monitoring health-monitoring


【解决方案1】:

除了这个应用程序的设计存在明显的问题。鉴于您当前的设计,您可能会编写一个 Windows 服务来监视日志文件。如果超过 N 分钟,请触发 System.Net.Mail.MailMessage

【讨论】:

  • 我按照这些思路做了一些事情,这也是我最初认为我会做的事情。我曾希望有一些已经可用的工具可以自动执行此操作,但我编写了自己的监控应用程序,在另一台计算机上运行,​​该应用程序自动检查整台计算机是否仍然在线。此外,原始应用程序的设计从 ASP.NET 更改为 C# .NET 命令行应用程序。
【解决方案2】:

如果您能够让应用程序执行诸如发送数据包之类的操作,那么您有什么理由不能让应用程序发送自己的警报?当应用程序完成或需要“帮助”(我假设某种手动输入或确认)时,需要发送警报。可以合理地假设应用程序可以知道这些事情何时发生,所以......为什么应用程序不能发送警报? ASP.NET 应用程序可以使用System.Net.Mail.SmtpClient 非常轻松地访问 SMTP 和发送电子邮件。让一个单独的程序代表一个可以访问一个非常好的电子邮件客户端类的程序发送电子邮件对我来说真的很奇怪。

【讨论】:

    【解决方案3】:

    您可以从全局应用程序错误处理程序(Global.asax 中的 Application_Error)发送电子邮件。 Windows 服务监视数据库是另一种解决方案,但最好编写一个简短的脚本/命令行应用程序并使用 Windows 调度程序运行它。它占用空间更小,更易于编写和安装。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      相关资源
      最近更新 更多