【问题标题】:Logic / Algorithm for Server Monitoring and Notification服务器监控和通知的逻辑/算法
【发布时间】: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


    【解决方案1】:

    我不是 C# 编码器,但我会为每项服务执行以下操作。
    我假设您会将每个服务的通知信息存储在某处。
    我将使用 -> 标志映射为每个服务维护一个通知数组。标志是
    0 - 未通知
    1 - error_occurred_notified
    2 - error_recovered_notified
    3 - 两者

    1. 每当用户收到事件通知时,根据标志标记它
    2. 每当发生刷新事件时,将标志设置为 0。

    【讨论】:

      猜你喜欢
      • 2017-08-08
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      相关资源
      最近更新 更多