教程:设置告警延时触发

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

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

相关概念

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

  • 告警触发延时时间:从异常产生到告警触发的时间。

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

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

  • 计时开始:延时计时器的开始时间为告警条件首次被满足的时间。如下图中1所示,第1分钟设备上报的测点数据满足告警规则条件,计时开始,计时器置0。在第2分钟仍然满足告警条件,计时器+1。

  • 计时中断:如果异常在到达设定的延时时间之前消除,则告警触发延时的计时中断。如下图,设备第3分钟上报的测点数据没有满足告警规则条件,告警触发延时计时中断。

  • 计时重新开始: 第4分钟,异常再次产生时,计时器重新置0。

  • 告警触发:第7分钟,异常持续满3分钟,告警触发。

  • 告警解除:当设备上报的新的测点数据不再满足告警条件,告警即解除。如下图,在第8分钟,测点数据低于阈值,告警解除。

media/alert_triggering_delay_timer.png

任务描述

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

开始前准备

步骤

  1. 选择 告警管理 > 告警内容 。创建一条名为“一分钟电流告警”的新告警内容。创建告警内容的操作,参见创建告警内容

    media/alert_triggering_delay_new_content.png
  2. 选择告警规则,创建如下的新告警规则。创建告警规则的操作,参见创建告警规则

    media/alert_triggering_delay_new_rule.png

    设置 延后告警 字段的值为 60 秒,点击 确认 完成编辑。

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

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

  4. 运行 fridgeMQTT

结果

选择 告警管理 > 告警记录 ,将 模型 设置为 电流表 ,点击 搜索

一旦模拟电流表连续3次上报的数据都超过阈值,即异常状态已持续了60秒,你就能在这里看到已触发的告警,如下图所示:

media/alert_triggering_delay_result.png

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