文章
· 十二月 21, 2022 阅读大约需 5 分钟

第二十章 使用系统监视器 - 定义系统监视器组件

第二十章 使用系统监视器 - 定义系统监视器组件

SYS.Monitor API 允许定义自己的传感器、订阅者和通知器类。

Sensor Classes

传感器类扩展 %SYS.Monitor.AbstractSensorSystem Monitor 控制器最初调用每个传感器类的 Start() 方法;此后,在每个周期,它都会调用 GetSensors() 方法。 SetSensor() 方法在传感器类中用于设置 SensorReading 属性中的传感器名称/值对,该属性由 GetSensors() 返回并传递给所有订阅者类。

传感器类还可以评估传感器读数,并根据评估结果调用类的 %SYS.Monitor.Email 以根据通知或任何用户定义的警报方法生成电子邮件消息。

Subscriber Classes

订阅者类扩展 %SYS.Monitor.AbstractSubscriberSystem Monitor 控制器最初调用每个订阅者类的 Start() 方法;此后,在每个循环中,它会为循环中调用的每个传感器类调用一次 Receive() 方法,并将从该传感器类接收到的传感器名称/值对传递给 SensorReading 属性。订户类可以评估一个或多个名称/值对,并使用 Notify() 方法设置通知,该方法填充 Notifications 属性。

作为其传感器评估的结果,订户类还可以类中调用 %SYS.Monitor.Email 以从通知或任何用户定义的警报方法生成电子邮件消息。

%SYS.Monitor.SampleSubscriber 作为示例订阅者类提供。

Notifier Classes

通知程序类扩展 %SYS.Monitor.AbstractNotificationSystem Monitor 控制器最初调用每个通知程序类的 Start() 方法;此后,在每个循环中,它为循环中调用的每个订阅者类调用一次 Post() 方法,将通知属性与从该订阅者收到的通知一起传递。通知程序类调用然后将通知传递给它的警报方法,该方法可能包括中的 %SYS.Monitor.Email,用于从通知或任何用户定义的警报方法生成电子邮件消息。

健康监测

Health Monitor 通过在特定时期对一组广泛的关键指标的值进行采样,并将它们与指标的配置参数和为这些时期建立的正常值进行比较,来监控正在运行的实例;如果采样值太高,Health Monitor 会生成警报(严重性 2 的通知)或警告(严重性 1)。例如,如果 Health Monitor 在周一上午 10:15 采样的 CPU 使用率值根据为 CPU 使用率配置的最大值或在周一上午 9:00 到上午 11:30 期间采集的正常 CPU 使用率样本过高, Health Monitor 生成一个通知。

运行状况监视器概述

Health Monitor 使用一组固定的规则来评估采样值并识别异常高的值。该设计基于 NIST/SEMATECH 统计方法电子手册的“过程或产品监测和控制”部分中描述的监测制造过程的方法,与使用基于以下规则确定的正常值的偏差WECO 统计概率规则(Western Electric Rules),均专门针对 IRIS 监控目的进行了调整。

Health Monitor 警报(严重性 2)和警告(严重性 1)被写入消息日志 (install-dir\mgr\messages.log)

健康监视器状态消息(严重性 0)被写入系统监视器日志 (install-dir\mgr\SystemMonitor.log)。

注意:与系统监视器和应用程序监视器不同,健康监视器仅在 %SYS 命名空间中运行。

以下小节描述了 Health Monitor 的工作原理,并包含有关以各种方式配置和扩展它的信息:

健康监控进程说明

默认情况下,Health Monitor 不会在实例启动时自动启动;为此,必须使用 ^%SYSMONMGR 实用程序在系统监视器中启用运行状况监视器。 (可以指定在启用 IRIS 后启动 Health Monitor 之前等待的时间间隔,允许实例在采样开始之前达到正常操作条件。)始终可以使用该实用程序查看 Health Monitor 的当前状态。

Health Monitor 流程的基本元素描述如下:

  • Health Monitor 监视许多系统传感器,这些传感器表示为传感器对象。每个传感器对象都有一个传感器样本的基本(最小)值,并且可以选择包括两个通知阈值(一个用于警报,另一个用于警告),可以将其设置为绝对值或乘数。这些值确定 Health Monitor 何时发送通知。

下面的传感器和传感器对象部分包含 Health Monitor 使用的所有传感器对象的列表、每个传感器的简要说明及其默认值。

  • 在预定义的时间段内,每个传感器每 30 秒采样一次;低于基准值的样本被丢弃。默认情况下有 63 个每周周期(每天九个),但您可以配置自己的每周、每月、每季度或每年的周期。下面的期间部分列出了默认期间。
  • 对于给定的传感器,除非通知阈值设置为绝对值,否则 Health Monitor 会根据图表评估传感器读数。如果当前周期所需的图表不存在,Health Monitor 会将传感器置于分析模式以生成图表。
  • 如果传感器未处于分析模式,则它处于监测模式。在监控模式下,传感器读数由适当的用户类别评估。为确保通知不会由瞬态异常样本触发,每 6 个样本值一起平均以每 3 分钟生成一个读数,并评估这些读数。
  • 当一系列读数满足通知标准(如以下通知规则部分所述)时,订阅者类通过将包含文本和严重性代码的通知传递给系统通知程序 SYS.Monitor 来生成警报或警告。

注意:由于不需要图表来评估其传感器对象具有指定最大值和警告值的传感器的读数,因此这些传感器读数的评估和任何结果通知的发布由 SYS.Monitor.SystemSubscriber 订阅者类处理,而不是 SYSMonitor.Health.Control 订阅者类。因此,即使未启用 Health Monitor,只要 System Monitor 正在运行,也会生成这些传感器的通知。

如果想为某些传感器使用绝对值但对其他传感器使用乘数生成通知——例如,对某些数据库使用 DBLatency 传感器的绝对值但对其他数据库使用乘数——可以通过在传感器对象中设置乘数并手动创建图表来实现对于那些你想使用绝对值的人。

讨论 (0)1
登录或注册以继续