教程:设置告警延时触发


在某些情况下,应用并不需要在设备产生异常时立刻触发告警。而需要在异常持续一段时间后,再触发告警。


例如,在一个通过应用监控某设备的负载率(实际负载÷额定负载)的场景中,告警的触发规则为:当负载率大于 120% 且持续时间超过 120 分钟时,再触发“严重超负载”告警。在该场景中,可以使用告警触发延时来配置“严重超负载”告警。

相关概念

  • 异常:当设备上送的测点数据满足告警规则设置的条件时,设备异常产生。
  • 告警触发延时时间:从异常产生到告警触发的时间。

延时告警触发与解除的过程

下图以延时时间设置为3分钟为例,描述延时告警的过程。你可以最多延迟24小时出发告警:

  • 计时开始:延时计时器的开始时间为告警条件首次被满足的时间。如下图中1所示,第1分钟设备上报的测点数据满足告警规则条件,计时开始,计时器置0。在第2分钟仍然满足告警条件,计时器+1。
  • 计时中断:如果异常在到达设定的延时时间之前消除,则告警触发延时的计时中断。如下图,设备第3分钟上报的测点数据没有满足告警规则条件,告警触发延时计时中断。
  • 计时重新开始: 第4分钟,异常再次产生时,计时器重新置0。
  • 告警触发:第7分钟,异常持续满3分钟,告警触发。
  • 告警解除:当设备上报的新的测点数据不再满足告警条件,告警即解除。如下图,在第8分钟,测点数据低于阈值,告警解除。


../_images/alert_triggering_delay_timer.png

任务描述

本文以一个智能楼宇场景,介绍如何为告警规则设置告警触发延时。该场景的具体描述,参见 教程:为同一模型的设备设置不同阈值的告警。为方便起见,本文只使用该教程中模拟的测量电冰箱实时电流的电表来触发告警。

开始前准备

步骤

  1. 选择 告警规则,创建如下的新告警规则。设置 延后告警 字段的值为 60 秒,点击 确认 完成编辑。创建告警规则的操作,参见 创建告警规则


    ../_images/alert_triggering_delay_adv_rule.png


    此时告警被设定为当电流表的 实时电流 大于 最大允许通过电流 ,并且持续60秒,才会触发。


  2. 复制教程:为同一模型的设备设置不同阈值的告警的示例代码 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次上报的实时电流都大于其设备属性中设置的 最大允许通过电流一分钟电流告警 告警就会被触发。


  3. 运行 fridgeMQTT

结果

进入 告警服务 > 告警记录。一旦模拟电流表连续3次上报的数据都超过阈值,即异常状态已持续了 60 秒,你就能在这里看到已触发的告警。


../_images/alert_triggering_delay_result2.png


你也可以调用API查询告警,响应中包含的测点值是告警触发延时计时开始时刻之测点的值。