当任务管理器或系统中的.EXE停止使用.NET技术时获取通知



我有一些在域服务器上运行的windows应用程序.exe,我有一个问题,如果.exe被关闭,我如何获得.exe已停止的通知。

有什么解决方案吗?我可以用操作系统操作我的代码,并通过邮件或任何其他资源获得通知

我们有关键的windows服务,这些服务必须始终在工作中运行,我们处理这一问题的方法是编写一个监控程序,该程序可以监听关键服务的通信,并在其中任何服务停止"呼叫"时发送电子邮件。以下是一些细节(尽管有点简化):

1) 我们使用MSMQ消息让运行服务的计算机与监视器对话。每个服务都写入一个特定的队列,并且监视器被设置为从这些队列中读取。请注意MSMQ有优点也有缺点——如果您选择使用此方法,请务必仔细阅读。

2) 关键程序向队列写入消息,详细说明它们正在做什么以及是否有任何错误。

3) 如果已经超过20秒(根据您的情况进行相应调整),而服务没有任何事情可做,他们只需向队列写一条消息,说他们在过去的20秒内没有任何事情做。

4) 监视器读取这些消息,跟踪从每个队列收到消息以来的时间,如果其中任何一个在30秒内没有发送至少一条"我空闲了20秒"的消息(注意,这应该比其他时间段长),它会向我们的电子邮件发送警报,说明哪个服务空闲太久。同样,如果任何服务出现任何严重错误,监控器也可以立即报告这些错误。

交替

您可以购买现成的程序来为您完成部分或全部功能,但此解决方案对我们非常有效。如果您对第三方工具感兴趣,您可以考虑查看Splunk、Big Brother和Tripwire。我对这些工具没有太多/任何经验,所以我不确定它们是否能满足你的需求。

您可以使用ServiceBase中的OnStop()事件,如下所示。相关讨论帖子在这里

最新更新