如何基于如何基于Flink+TensorFlow打造实时智能异常检测平台打造实时智能异常检测平台
AI 前线导读:Flink 已经渐渐成为实时计算引擎的首选之一,从简单的实时 ETL 到复杂的 CEP 场景,Flink 都能够很好地驾
驭。本文整理自携程实时计算负责人潘国庆在 QCon 全球软件开发大会(北京站)2019 的演讲,他介绍了携程如何基于 Flink 与
TensorFlow 构建实时智能异常检测平台,以解决规则告警系统准确率低、时效性低、规则配置复杂与耗费人力等诸多问题,
实现了业务指标毫秒级延迟与智能化检测,同时依托 Flink 实现了强大的容错机制。
1、前言
随着互联网的迅速发展,各个公司都建立了自己的监控体系,用于提前发现问题降低损失,携程亦是如此。然而携程的监控体
系存在以下三个问题:
监控系统繁多
监控告警配置复杂
没有统一规范
首先携程目前光公司级别的监控系统就有三套,各个 BU 为了满足自己的业务监控需求也陆续开发了许多自己的监控系统。其
次这些监控系统都是基于规则来判断是否存在异常,比如当满足同环比连续几个点上升或下降到用户配置的阈值时触发告警。
最后是没有统一的规范,这里指的是两个规范,第一,没有统一的规则告警配置规范,不同的监控系统都带有不同的规则告警
配置方式;第二,没有统一的异常判断规范,研发人员或 QA 人员都是根据自己对业务的理解,通过主观判断指标达到一定阀
值时监控系统需要进行告警。
基于以上的三点问题给用户带来了诸多不便,首先是规则告警维护成本高,用户时常需要基于多个监控系统以不同的方式配置
规则告警,而且还需要根据告警的情况持续调整阈值,导致一个规则告警从配置到最终能够产生较好的效果需要一个很长的周
期。其次,基于规则告警往往表现不尽如人意,会导致准确率低、覆盖率低和时效性低的三低状况。用户很多情况下为了提高
异常的覆盖率降低漏报的情况,不得不将规则告警的阀值设置的非常敏感,虽然这样能够覆盖更多的异常场景,却导致了大量
的误报,规则告警的准确性也就大大折扣。
为了应对上述的诸多问题,携程打造了自己的实时智能异常检测平台 Prophet。简单概括,Prophet 是一个基于时序类型数
据、以平台为接入对象、去规则化为目标的异常检测系统,基于深度学习算法实现异常的智能检测,基于实时计算引擎实现异
常的实时检测,提供了统一的异常检测解决方案。
2. 智能化
2.1 深度学习算法选择
目前业界采用比较多的方式是引入统计分析的各种方法,框定一个滑动的样本集,对这个样本集进行一些数据处理和转化,经
过归一化,去周期,去趋势,再将最新采集到的数据点经过同样的转换,和样本集的残差序列的统计量进行比较,比如距离、
方差、移动平均、分位数等,超出一定的范围就判断为异常,或是综合各种离群点计算的方法来做个投票,多数算法认为异常
则报异常。起初我们也借鉴了这种做法,却发现虽然可以不用维护告警规则了,但报警的质量并没有提升。
我们需要设计一套新的算法,降低报警总量到可以人工逐个处理的程度,同时不能以增加漏报真正的生产订单故障为代价,并