告警的实现原理基于告警的查询时间范围,根据检查频率定时执行配置的查询语句,并将查询结果作为告警条件的参数进行计算,如果计算结果为true,则触发告警。本文介绍告警监控的时效性说明。

关于监控时效性,说明如下:
  • 创建告警监控规则时,不建议将查询范围设置成和检查频率一样的相对时间。

    例如查询范围为相对1分钟,检查频率为固定间隔1分钟。

    检查频率为固定间隔1分钟为例。在数据写入日志服务和数据被查询之间存在延时,即便延时很低,也存在数据漏查的风险。例如告警执行时间为12:03:30,查询范围为相对一分钟时,则查询时间范围为[12:02:30,12:03:30),对于12:03:29秒写入的日志,无法保证在12:03:30这次时间点查询到。
    • 如果对告警的准确性要求高(不重复报警,不漏报),建议查询范围起止时间可以往前推移,如70秒前~10秒前。如告警执行时间为12:03:30,则查询范围为[12:02:20,12:03:20),通过设置10秒的缓冲时间来避免因为索引速度过低导致漏查。
    • 如果对告警的实时性要求高(第一时间收到告警,能够容忍重复报警),建议查询范围开始时间可以往前推移,如70秒~现在。如告警执行时间为12:03:30,查询范围设置为相对70秒,即[12:02:20,12:03:30)。
  • 写入包含同一分钟不同时间的日志时,由于日志服务的索引构建方式,可能会存在较晚的日志的索引写入较早日志的时间点。
    例如告警执行时间为12:03:30,查询范围为相对一分钟则为[12:02:30,12:03:30),如果在12:02:50秒写入多条日志,这些日志的时间有12:02:20,12:02:50等,那么这一批日志的索引可能会落入12:02:20这个时间点,导致使用时间范围[12:02:30,12:03:30)查询不到日志。
    • 如果对告警的准确性要求高(不重复报警,不漏报),建议查询范围使用整点分钟,如整点1分钟、整点5分钟和整点1小时等,并且将检查频率设置成一样的时间,如1分钟、5分钟和1小时等。
    • 如果对实时性要求高(第一时间收到告警,能够容忍重复报警),建议查询时间范围至少需要包含前一分钟。例如告警执行时间为12:03:30, 查询范围可以设置为相对90秒,那么实际的查询范围为[12:02:00,12:03:30),同时设置检查频率为1分钟。