为什么阈值报警规则触发延迟?

本文为您介绍监控数据满足报警条件并触发报警,但触发时间晚于预期时间的原因。

首先您需要明确以下两个概念:

  • 监控指标的Period

    表示监控指标数据点的间隔时间及聚合时间,例如:大多数监控指标的Period为60秒,表示每60秒产生一个监控指标数据点,这个监控数据是过去60秒所有监控值的聚合值,或最后一个监控值。

  • 报警的检测周期

    报警的检测周期由监控指标的Period决定。对于多指标表达式且Period不同的情况,以最短的Period为准,例如:检测周期为60秒,报警服务每60秒会查询最近一次的监控数据。

说明
  • 每个监控指标的聚合方式不同,具体请参见附录1 云产品监控指标中的目标云产品指标列表页面中的Statistics列。

  • 每个监控指标的周期(period)不同,具体请参见附录1 云产品监控指标中的目标云产品指标列表页面中的Min Periods列。

当报警规则中监控指标的Period较长(例如:300秒或900秒)时,由于监控数据可能延迟落盘或监控数据点略早于报警检测时间点,触发报警可能会延迟近一个检测周期。监控指标的Period较短时,一般不会有明显延迟。

应用分组的可用性监控报警和组进程监控报警、云产品监控指标报警、站点监控报警、企业云监控的promQL报警,不论单指标、多指标、复杂的表达式和同比环比等都是有固定阈值的表达式。以下两种情况均以单指标的简单表达式进行介绍。

问题1:周期的监控数据正常上报,数据连续N次满足报警条件,但延迟接近一个周期才触发报警

原因

报警检测的时间点略早于监控数据点,导致报警延迟近一个周期。

示例

假设某监控指标的Period为300秒,那么报警的一个检测周期也是300秒,报警条件是监控指标平均值连续3个周期大于阈值,即报警,监控数据点如下:

时间

数值

10:01:30

5

10:06:30

15

10:11:30

14

10:16:30

13

10:21:30

20

10:26:30

18

10:31:30

16

假设10:06:00发生第一次报警检测,该时间略早于监控数据时间点10:06:30,此时查询的监控数据为上个周期的数值5,因此没有达到阈值的监控数据。

  • 第二次检测时间点为10:11:00,查询到监控数据为15,达到阈值,此时数据第一次满足阈值。

  • 第三次检测时间点为10:16:00,查询到监控数据为14,达到阈值,此时数据第二次满足阈值。

  • 第四次检测时间点为10:21:00,查询到监控数据为13,达到阈值,此时数据第三次满足阈值,发送报警通知。

从上述数据来看,用户认为第三次满足阈值的数据应该出现在10:16:30,报警延迟了4分半,接近一个周期。

问题2:监控数据非周期的稀疏上报,报警延迟一个周期

原因

非周期或稀疏上报的监控数据,数据的落盘时间会有延迟。

示例

  • 示例1:假设某个监控指标的周期为300秒或900秒,如果数据较稀疏或非周期上报,则监控数据点最高可能有5分钟的延迟,例如:10:01:00查询10:00:00的数据,结果为空;10:05:00再查询10:00:00的数据,查询有结果。因此报警检测时间点可能拿不到当前数据,导致报警延迟一个周期。

  • 示例2:报警条件是有一次阈值大于10,就会报警,具体报警检测过程如下:

时间

报警检测过程

数据说明

10:45:00

查询数据正常返回结果,数值为5,未触发报警。

-

11:00:00

由于数据稀疏,延迟落盘,导致在该时间未查询到数据,因此认为数据仍然是上个周期的5,未触发报警。

假设11:05:00再查询,数据就是10,此时再查看监控数据,认为应该触发报警。

11:15:00

查询数据正常返回结果,数据为12,触发报警。

由于报警检测周期为15分钟,从监控数据看,报警延迟发送15分钟。