Windows服务的检测信号活动

本文关键字:信号 活动 检测 服务 Windows | 更新日期: 2023-09-27 18:21:22

我有许多Windows服务(用C#4.0编写),它们以不同的间隔连接到数据库并执行各种复杂的任务。其中一些任务每天仅每隔X小时执行一次。但是,服务器支持团队想知道Windows服务是否真的在运行,因为任务之间可能会有很大的间隔。他们希望每个Windows服务都有一个心跳信号。每隔5分钟,Windows服务就会执行一些可以由Microsoft System Center操作管理器(SCOM)监控的操作。任何解决方案都必须由SCOM轻松监控,因为服务器支持团队依赖它

实现这种功能性的最佳方式是什么?我想过使用性能计数器,并让SCOM侦听这些计数器,但不确定这是否是性能计数器的最佳用途。

UPDATE(完全忘记包含):目前每个服务都会向数据库写入此操作,但SCOM不太擅长监控数据库记录和区分哪个服务在做什么等。

Windows服务的检测信号活动

如果您的案例仅限于服务健康检查,我相信这可以通过windows性能监视器等windows工具来完成。收集他们的数据应该比在通常断开连接的环境中创建心跳更容易
有大量的服务器和服务监控工具。它们中很少有开源的,你可以选择它作为第一步。

简单地写入数据库或事件日志怎么样?

您可以将SNMP或WMI检测添加到您的服务中-顺便说一句,这将允许您引发不仅仅是心跳消息-例如,当您遇到需要重试操作的瞬态故障时,您也可以引发事件。

有很多SNMP库,WMI支持内置在.NET框架中。

仅供参考,我正在研究这个问题,因为我是如何做到这一点的,即服务应用程序在轮询Db以获取新作业时,每隔X秒就会记录一条hearbeat消息。午夜时分,所有超过一周的心跳消息都会从日志中删除。我确实有一个计划在早上7点的应用程序,它会检查最后一条心跳消息是何时发送的,但看起来我必须不断运行它来定期检查。。。如果出现问题,通知太阳风发送警报。