教程:设置告警延时触发¶
在某些情况下,应用并不需要在设备产生异常时立刻触发告警。而需要在异常持续一段时间后,再触发告警。
例如,在一个通过应用监控某设备的负载率(实际负载÷额定负载)的场景中,告警的触发规则为:当负载率大于 120% 且持续时间超过 120 分钟时,再触发“严重超负载”告警。在该场景中,可以使用告警触发延时来配置“严重超负载”告警。
相关概念¶
异常:当设备上送的测点数据满足告警规则设置的条件时,设备异常产生。
告警触发延时时间:从异常产生到告警触发的时间。
延时告警触发与解除的过程¶
下图以延时时间设置为3分钟为例,描述延时告警的过程。你可以最多延迟24小时出发告警:
计时开始:延时计时器的开始时间为告警条件首次被满足的时间。如下图中1所示,第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查询告警,响应中包含的测点值是告警触发延时计时开始时刻之测点的值。