Windows服务的心跳活动

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

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

更新(完全忘记包括):当前每个服务都会向数据库写入此操作,但SCOM不擅长监视数据库记录并区分哪些服务正在执行哪些操作等。

如何简单地写入数据库或事件日志?

您可以向服务添加SNMP或WMI检测 – 这可以让您不仅仅提供心跳消息 – 例如,当遇到需要重试操作的瞬态故障时,您也可以引发事件。

有很多SNMP库,并且.NET框架内置了WMI支持。