【发布时间】:2011-06-07 13:17:00
【问题描述】:
我目前正在开发一个小型服务器监控应用程序,它使用 WMI 收集硬件信息,例如 CPU 和 RAM 使用情况,以及一些其他查询服务的方法(FTP、HTTP、IMAP、SMTP、Raw TCP Socket 等) .
我已经为上述每个项目创建了数据收集器,并且能够从中获取数据。每次刷新服务监视器时,服务数据提供者都会提供服务的响应时间和服务器响应。
但是我碰壁了,然后尝试构建通知用户错误和恢复的逻辑。我的 Services 类,它是所有服务子类的基类,包含几个事件 - OnRefreshed、OnErrorOccured、OnErrorRecovered、OnResponseTimeThresholdReached、OnResponseTimeThresholdRecovered。
我正在尝试实现以下场景:
当服务正常响应时,每个刷新间隔都会触发 OnRefreshed 事件。
当发生错误(例如 HTTP 上的 404)时,将触发 OnErrorOccured 事件,如果用户希望发送通知,则继续发送通知,但只发送一次,直到服务恢复.
当服务从错误中恢复时,将触发 OnErrorRecovered 事件,如果用户需要通知,则只发送一次,直到再次出现错误。
同样的事情也发生在 ResponseTime 事件中,它应该在相应的情况发生时被触发。
如果服务在每个刷新间隔上在 OK 和 Error / ThresholdReached 之间交替,则通知之间应该有一个冷却时间,以防止通知狂欢。
我目前正在使用 C# 构建此应用程序。非常感谢对此问题的任何启发,或任何其他更好的解决方案来实现这一点。
谢谢。
【问题讨论】:
标签: algorithm wmi logic monitoring