1 背景在蚂蚁集团智能监控领域,时序异常检测是极重要一环,异常检测落地中,业务方参考业界标准输出 Metrics 指标数据,监控不同业务、应用、接口、集群的各项指标,包含 Metrics 指标(总量、失败量、耗时等)和系统服务指标(CPU、MEM、DISK、JVM、IO 等)。早期的时序异常检测是由 SRE 结合长期运维经验通过配置专家规则来完成,随着 AI 技术的普及,异常检测逐步 AI 化,在现实场景中,AI 算法常常面临如下挑战:
- 每日不同时段,业务时序曲线呈现不同的局部均值/方差特性;
- 特殊日期如大型节假日、大促日,时序数据与日常差异巨大,甚至与往年同期也存在不小差异;
- 每日或间隔几日固定时间段中随机时刻发生的偏定时事件;
- 海量监控业务,很难针对单独指标一一建模;
- 当日数据:前 n 分钟到当前预测时间点时序数据;
- 同比数据(前1天):1天前当前时刻为参考点,前 n 分钟到后 m 分钟内时序数据;
- 同比数据(前2天):2天前当前时刻为参考点,前 n 分钟到后 m 分钟内时序数据;
- 同比数据(前7天):7天前当前时刻为参考点,前 n 分钟到后 m 分钟内时序数据;
- 同比数据(前14天):14天前当前时刻为参考点,前 n 分钟到后 m 分钟内时序数据;
- 消除了不同日期时序数据水位差异带来的影响;
- 消除了不同日期时序数据抖动幅度差异带来的影响;
- 消除了不同指标的值域范围差异带来的影响;
- 交换往期参考日输入通道的数据,如下例中就交换了 y7 和 y14 通道的输入;
- 修改异常样本当前时刻值,随机设置到指定阈值之下,把一个异常样本变成一个正常样本;
- 修改异常样本中当日输入通道的向量,向量整体做大尺度负向平移,把一个异常样本变成一个正常样本;
- 模拟周期事件,随机抽取几个往期通道,在输入时序中生成与今日异常波形相似的数据;
- 每个输入通道共享相同卷积层,因为每个通道需提取的波形特征是一致的,共享卷积层可以节约计算性能;
- MaxPool 层实质对每个通道做的是一个取向量最大元素操作,所以不管 Input 层输入向量长度如何变化,MaxPool 层输出数据结构都是固定的,所以在模型做预测时,输入通道是可灵活输入不同的长度时序数据;
- 部分业务人员判定持续时间较短的毛刺为误报,但训练样本集中是存在这种毛刺异常标注,可以添加一条简单的后置规则对异常持续时长进行过滤;
- 在当日原始输入为1小时左右的时长跨度中,异常波形较明显,但拉长时轴,在更长的时间跨度下看涨跌幅度正常;可以通过给原始输入更久时序数据减少此类误报,或者基于历史数据离线统计出一些合适的最小涨跌阈值进行过滤;
- 小数据/稀疏数据模型表现较差;
- 周期性差,当日走势和历史差异极大;
监控指标自带业务属性,异常标准定义很难达到统一,业务人员 A 认可的异常在业务人员 B 眼中是正常现象,这意味着使用有监督方案需要维护多份训练集,这在实际操作中是不现实的;
算法性能问题,面临海量监控业务,训练和实时检测计算资源是否吃得消,本文的方案在实时检测会产生大量时序数据查询请求,需要平台强力支持;
在实际探索中,我们发现单一的算法解决不了所有问题,不同算法都有其优势及不足,都有其契合及尴尬的场景,合适的方法才是最好的方法;
欢迎来到「蚂蚁智能运维」的世界。本公众号由蚂蚁集团技术风险中台团队出品,面向关注智能运维、技术风险等技术的同学,将不定期与大家分享云原生时代下蚂蚁集团在智能运维的架构设计与创新方面的思考与实践。
蚂蚁技术风险中台团队,负责蚂蚁集团的技术风险底座平台建设,包括智能监控、资金核对、性能容量、全链路压测以及风险数据基础设施等平台和业务能力建设,解决世界级的分布式处理难题,识别和解决潜在的技术风险,参与蚂蚁双十一等大型活动,通过平台能力保障整体蚂蚁系统在极限请求量下的高可用和资金安全。
关于「智能运维」有任何想要交流、讨论的话题,欢迎留言告诉我们。
PS:技术风险中台正在招聘技术专家,欢迎加入我们,有兴趣联系 techrisk-platform-hire@list.alibaba-inc.com
? 欢迎支持关注「智能运维」的你~* 点下右下角“在看”* 到公众号对话框发送“智能监控”,试试手气~* 本期互动奖品“蚂蚁毛绒公仔”