[toc]
第二十章 使用系统监视器 - 定义系统监视器组件
SYS.Monitor API
允许定义自己的传感器、订阅者和通知器类。
Sensor Classes
传感器类扩展 %SYS.Monitor.AbstractSensor
。 System Monitor
控制器最初调用每个传感器类的 Start()
方法;此后,在每个周期,它都会调用 GetSensors()
方法。 SetSensor()
方法在传感器类中用于设置 SensorReading
属性中的传感器名称/值对,该属性由 GetSensors()
返回并传递给所有订阅者类。
传感器类还可以评估传感器读数,并根据评估结果调用类的 %SYS.Monitor.Email
以根据通知或任何用户定义的警报方法生成电子邮件消息。
Subscriber Classes
订阅者类扩展 %SYS.Monitor.AbstractSubscriber
。 System Monitor
控制器最初调用每个订阅者类的 Start()
方法;此后,在每个循环中,它会为循环中调用的每个传感器类调用一次 Receive()
方法,并将从该传感器类接收到的传感器名称/值对传递给 SensorReading
属性。订户类可以评估一个或多个名称/值对,并使用 Notify()
方法设置通知,该方法填充 Notifications
属性。
作为其传感器评估的结果,订户类还可以类中调用 %SYS.Monitor.Email
以从通知或任何用户定义的警报方法生成电子邮件消息。
%SYS.Monitor.SampleSubscriber
作为示例订阅者类提供。
Notifier Classes
通知程序类扩展 %SYS.Monitor.AbstractNotification
。 System 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
订阅者类处理,而不是 SYS
。 Monitor.Health.Control
订阅者类。因此,即使未启用 Health Monitor
,只要 System Monitor
正在运行,也会生成这些传感器的通知。
如果想为某些传感器使用绝对值但对其他传感器使用乘数生成通知——例如,对某些数据库使用 DBLatency
传感器的绝对值但对其他数据库使用乘数——可以通过在传感器对象中设置乘数并手动创建图表来实现对于那些你想使用绝对值的人。
网友评论