基于智能异常检测算法落地夜莺智能告警

秦叶宁@快猫星云 2022年10月8日

时序数据异常检测简介

对于所有的在线业务,都会随着时间产生一些数据,这些数据我们称为时序数据,在服务正常的时候,这些时序数据的变化会符合一定的模式,我们可以根据这些时序数据的变化,来判断我们服务是否出现了异常。业内目前主要有三个方式来判断时序数据是否异常:

  • 第一种是有值班人员实时盯着重要的时序数据,根据经验来判断时序数据是否出现了异常
  • 第二种是使用监控产品,给关注的时序数据配置一个静态的阈值,如果超过阈值就表示时序数据出现异常
  • 第三种是近几年出现的新的方式,使用机器学习的能力,动态学习时序数据的规律,实时计算动态的阈值,识别是否异常。

目前业界主流的方式是使用配置静态阈值来判断,但随着业务发展,这个方式也开始出现一些问题,下面介绍下传统静态阈值告警遇到的问题。

静态阈值可能遇到的问题

01.静态阈值覆盖场景有限,业务类监控数据不适用

业务类监控数据,使用静态阈值很多情况下不能很好的标识是否异常,比如下图的曲线,常见的业务数据都有这些特点,峰值和谷值差距很大,如果上限阈值配置是600,下降阈值配置10,那图中红圈标记的异常就会出现漏报。

02.阈值会由于特殊日或业务发展产生变化

业务监控指标经常会由于 “特殊日”(节假日、营销活动日)或者业务发展影响而产生变化,传统的静态阈值或同环比策略在这种场景下,会产生多次误报,给负责稳定性的同学造成不必要的打扰,像下图的情况,紫色曲线是当天的监控数据同比1天和7天都低很多,但属于正常情况,这个在静态阈值的同环比策略下则会发出误报。

03.传统静态阈值的设置,依赖专家经验,人力维护成本高

下图是静态阈值告警配置常见的流程,经过几轮调整之后,才可正常使用,而随着业务增长,仍然需要不定期调整阈值,人力维护成本高。

智能异常检测的优势

智能异常检测基于机器学习算法模型实时生成动态基线,可以有效避免传统阈值方式造成的误报问题,也摆脱了对专家经验的依赖,提升了告警准确率,也提升了值班同学的幸福感:)

下图是智能异常算法实时计算出来的动态基线,会随着业务增长动态变化

下图总结了静态阈值和智能算法的区别:

哪些场景适合智能异常检测?

智能异常检测相比静态阈值的规则,有很多优势,对于有周期性的时序数据尤其合适,以下列举了一些常见的场景:

  • 网页浏览量
  • 活跃用户数
  • 应用下载量
  • 购物下单量
  • 证券交易量
  • 打车呼叫量
  • ……

前面介绍了智能异常检测的优势和适用场景,那如何落地呢?下面介绍下夜莺的落地方案。

夜莺的智能告警落地方案

如果之前使用了夜莺,再部署一个智能异常检测模块即可,可以和开源的夜莺监控无缝集成,整体架构如下图

智能异常检测模块完成安装之后,在夜莺告警规则配置页面,会多出一个智能告警的选项,如下图所示:

选择智能告警之后,只需填写要监控的指标,不需要填写阈值,点击保存即可,之后在告警规则列表页,智能告警的规则右侧会有一个“训练结果”的按钮

点击“训练结果”,可以进入训练结果详情页,点击曲线详情,可以看到曲线学习出来的动态基线。如果曲线偏离到基线之外,夜莺的告警引擎会发出告警通知。

自建还是购买?

从成本角度来看

如果你们团队已经有了算法团队+研发团队,可以让两个团队根据业界已有方案来落地实施。如果没有算法或者研发团队,招一个能把智能异常检测落地的工程师的成本至少是20W,夜莺的智能告警企业版,一年只有1W+,在这个情况下购买智能告警服务,显然是更划算的。

从工作幸福感来看

如果你在运维的一线,且经常被静态阈值的误报打扰,建议推动团队尽快开启智能异常检测功能,如果团队没有这方面积累,可以购买夜莺的智能告警服务,减少日常生活中误报对自己的打扰。

如果对夜莺的智能异常检测服务感兴趣,欢迎点击 链接 购买试用,购买之后,将您的订单号和联系方式发送邮件到 n9e@flashcat.cloud, 我们后面会联系您,团队版首月试用费用只需 29 元, 感兴趣的可以买起来:)

开源版
Flashcat
Flashduty