设置告警延时触发¶
在某些情况下,应用并不需要在设备产生异常时立刻触发告警。而需要在异常持续一段时间后,再触发告警。
例如,在一个通过应用监控某设备的负载率(实际负载÷额定负载)的场景中,告警的触发规则为:当负载率大于 120% 且持续时间超过 120 分钟时,再触发“严重超负载”告警。在该场景中,可以使用告警触发延时来配置“严重超负载”告警。
相关概念¶
异常:当设备上送的测点数据满足告警规则设置的条件时,设备异常产生。
告警触发延时时间:从异常产生到告警触发的时间。
延时告警触发与解除的过程¶
下图以延时时间 3 分钟为例,描述延时告警的过程。最多可延迟 24 小时出发告警:
计时开始:延时计时器的开始时间为告警条件首次被满足的时间。如下图所示,第 1 分钟设备上报的测点数据满足告警规则条件,计时开始,计时器置 0。在第 2 分钟仍然满足告警条件,计时器 +1。
计时中断:如果异常在到达设定的延时时间之前消除,则告警触发延时的计时中断。如下图,设备第 3 分钟上报的测点数据没有满足告警规则条件,告警触发延时计时中断。
计时重新开始: 第 4 分钟,异常再次产生时,计时器重新置 0。
告警触发:第 7 分钟,异常持续 3分钟,告警触发。
告警解除:当设备上报的新的测点数据不再满足告警条件,告警即解除。如下图,在第 8 分钟,测点数据低于阈值,告警解除。
任务描述¶
本文以一个智能楼宇场景,介绍如何为告警规则设置告警触发延时。该场景的具体描述,参见 教程:为同一模型的设备设置不同阈值的告警。为方便起见,本文只使用该教程中模拟的测量电冰箱实时电流的电表来触发告警。
前提条件¶
你需要有告警引擎相关操作权限,如果没有请联系组织管理员添加,参见 策略,角色,与权限。
你已经完成了 为同一模型的设备设置不同阈值的告警 这一教程。
步骤¶
选择 告警规则,创建如下的新告警规则。设置 延后告警 字段的值为
60
秒,点击 确认 完成编辑。创建告警规则的操作,参见 创建告警规则。此时告警被设定为当电流表的
实时电流
大于最大允许通过电流
,且持续 60 秒时,触发告警。复制 为同一模型的设备设置不同阈值的告警 教程中的示例代码
fridgeMQTT
到你的 IDE 中,并作如下改动:MeasurepointPostRequest request = MeasurepointPostRequest.builder().addMeasurePoint("rt_current", random.nextDouble() * 1500).build()
改为MeasurepointPostRequest request = MeasurepointPostRequest.builder().addMeasurePoint("rt_current", random.nextDouble() + 1500 ).build()
这一步是为了使模拟的电流表发送的测点数据实时电流
全部高于最大允许通过电流
,以便触发告警。将代码段最后的
Thread.sleep(10000L)
改为Thread.sleep(30000L)
。这一步的目的是让电冰箱和节能灯的模拟电流表,每 30 秒钟上报一次实时电流数据。只要任意一个模拟电流表连续 3 次上报的实时电流都大于其设备属性中设置的最大允许通过电流
,就会触发温度告警
。
运行
fridgeMQTT
。
结果¶
进入 告警引擎 > 告警记录。一旦模拟电流表连续3次上报的数据都超过阈值,即异常状态已持续了 60 秒,你就能在这里看到已触发的告警。
你也可以调用 API 查询告警,响应中包含的测点值是告警触发延时计时开始时刻之测点的值。