前言
线上业务的快速发展对系统稳定性提出了更高的要求。每次在系统出现异常波动时,如何及时、准确的发现并提醒业务方,显得尤其重要。
这里有很关键的两个要求:
- 及时:告警对实时性要求较高,必须尽可能尽早发现问题,才能最大程度上减小损失。
- 准确:准确的告警能提高业务方对于告警的敏感性,如果存在大量的误报,则为导致业务方对告警已经麻木,不能及时处理异常。
实时异常检测
异常识别基于历史数据,获取当前时间点的可能数值范围,当实际值在该范围以外时,即认为数据异常。
1. 同比 & 环比
最最简单的方式当然是当同比或环比变化超出某一阈值时,即认为数据异常。但是这两种方式存在一些问题:
- 环比:仅使用当前值的上一个值,当数据出现周期性变化时,可能会出现周期性告警(如每天的4点05分有某一活动,数据周期性陡增)。
- 同比:仅使用当前值上一周期的一个值,当某一周期数据整体性上涨时,则会持续告警(如淘宝双十一的数据比前一天同比增长很大比例)
如果将这两种方式的优势结合起来,同时考虑数据的整体变化和周期性变化,甚至考虑到历史所有的数据对于当前值的影响,预测结果的误差将会更小。
2. 预测器 & 比较器
异常检测模型分为两个部分,预测器和比较器。历史数据作为预测器的输入,输出当前时间点的预测值,并将当前时间点的