写点什么

我们不一样!告诉你百度是如何做智能流量异常检测的

  • 2019-09-10
  • 本文字数:2494 字

    阅读完需:约 8 分钟

我们不一样!告诉你百度是如何做智能流量异常检测的

流量,是系统的黄金指标之一,它直观反映系统的运行状态。健康的系统流量通常平稳波动变化,当流量突然上涨或者下降时可能预示系统中存在故障。例如系统的外部网络链路出现故障时,外部用户的访问流量无法到达我们的系统,流量会出现突降异常。当系统模块出现问题无法响应用户的请求时,此时的流量同样会出现突降异常。除了导致流量突降类的故障,当系统被爬虫爬取或者攻击时,流量会出现突升异常。所以流量的突升、突降常常表示系统中发生了某种故障或者异常行为。因此,流量异常检测对发现系统故障、维护系统的稳定性十分重要,它也成为了 AIOps 智能运维中的一个典型场景问题。


今天我们将从流量异常检测难点入手,分析常见流量检测方法存在的问题,然后重点介绍百度云智能运维产品(Noah)所使用的一类智能异常检测算法,基于鲁棒回归与泊松分布的流量异常检测算法。文章最后也附上了百度云 Noah 智能异常检测算法试用申请地址,欢迎大家试用。


流量异常检测的难点

流量异常检测主要有以下三个难点:


1.流量的大小会随着用户行为发生变化。对于大部分百度云上的业务,白天的访问流量较高,深夜的访问流量较低。这使得流量水位值存在上下文相关性,白天水位高,夜晚水位低,不断波动变化。这就需要算法能够区分流量的正常波动变化与异常波动变化,准确的检测异常流量。


2.对于所有百度云上用户而言,运维工程师关心系统本身的故障,需要及时检测到流量的突降异常,而安全工程师关心攻击、抓取和爬虫,更多地关心流量是否存在突升异常。这就要求算法有能力区分当前流量的异常类型,精准地给出流量的预测值。


3.流量也会受到业务逻辑调整的影响,流量水位会出现上涨或者下跌后不恢复的现象。需要算法能够及时适应这种变化,否则就会导致持续的误报。

流量异常检测模型

我们从上述难点出发,将流量异常检测分为预测与检测两个阶段。预测阶段需要克服异常流量的影响,对流量进行精准预测,检测阶段需要计算真实值与预测值之间的差异,当差异显著大于通常情况时,即可判定当前实际流量出现了异常。


常见预测算法的问题

比较简单的预测算法是移动平均算法。




另外,在下降过程中,移动平均算法会认为数据一直存在下跌,下降过程中又容易造成误报。



移动平均算法简单地将窗口内数据的均值作为下一个点的预测值,没有考虑到窗口内的数据趋势,导致预测的趋势总是滞后于实际趋势,预测的结果不准确。




实验发现,线性回归方法容易受到异常点的影响。上图中蓝色曲线为某一个窗口内的数据,窗口内后半部分出现了突升异常。理想的拟合结果应该不受突增异常影响,如图中粉色直线所示。而线性回归的拟合结果受到了异常点的影响,预测水位偏高,如图中红色直线所示。当曲线中的异常值较多时,线性回归的预测结果会出现如下图棕色线所示的不符合预期的波动。由于线性回归的损失函数是二次函数,所以异常点带来的影响被放大,导致拟合的结果偏离理想结果。


鲁棒回归算法

由于线性回归的二次损失函数放大了异常点的影响,因此我们考虑了将二次函数缩小为一次函数,减弱异常点影响。将损失函数改成如下:



但不可导,没有确定的解析解,可以使用


Interatively reweighted least squares


(https:// en.wikipedia. org/wiki/Iteratively_reweighted_least_squares)


优化方法得到相对的最优解。这样在预测过程中就可以弱化突增、突降等异常点的影响,得到比较理想的预测结果。


如下图所示,图中蓝色曲线为原始流量曲线,红色曲线为鲁棒回归算法的预测结果,黑色曲线为移动平均算法的预测结果。可以看到原始流量存在较多的突增异常,移动平均算法受异常点的影响预测效果较差,异常流量位置的预测值偏离理想值。从箭头所指向的局部拟合效果图中可以看到,鲁棒回归算法没有受到这些异常点的影响,在流量的突升、突降位置都能够给出理想的预测值。


常见检测算法的问题

泊松分布检测算法

由于基于残差与相对残差的检测方法都不能够设置统一的检测阈值,所以我们考虑从概率的角度来设置恒定的检测阈值。系统大部分时间都处于正常状态,正常流量出现的概率远远大于异常流量,可以通过流量出现的概率大小来检测异常流量。



突降异常的检测结果如下图所示,第一幅图中蓝色曲线为原始流量数据,橘色曲线为鲁棒回归算法预测结果,红色点为检测出的突降异常,第二幅图中蓝色线是根据真实流量与预测流量计算出的 z 统计量值,红色直线为设置的检测阈值。从图中可以看到,在 z 统计量上设置恒定阈值即可检测异常流量。



目前,本文的算法已经在百度云 Noah 智能运维系列产品之霍莉(Horae)异常检测平台上开放试用,Horae 覆盖时序数据异常检测实验运行的整个生命周期,包含数据标注、算法实验、离线评估、后验评估等过程。

总结展望

本文介绍了 AIOps 智能运维领域中的一个典型场景——智能流量异常检测。在分析其背景和难点,并对比介绍了一些常见的流量预测、检测方法之后,我们为大家重点介绍了百度云智能运维产品(Noah)中的一种智能异常检测算法——基于鲁棒回归与泊松分布的时序流量异常检测算法。一方面,基于鲁棒回归的预测算法,可以不受异常点的影响,精准地预测流量水位值;另一方面,基于泊松分布的检测算法,可以从概率的角度对流量建模,能够使用简单的恒定阈值来精准地检测流量异常。


当然,每类智能异常检测算法都有其场景特征和局限性:


(1) 该算法对相对平缓的异常趋势变化不敏感,因为我们每次是对局部窗口的数据进行鲁棒回归来预测窗口最后一个点流量值,没有使用足够的历史数据来判断当前的平缓趋势变化是否正常。


(2) 如果异常持续时间超过鲁棒回归窗口长度,可能会出现误报。例如,检测突降异常时,当突增的持续时间超过拟合窗口时,鲁棒回归算法会跟随上这种突增变化,这样就容易在突增恢复正常时造成突降的误报。


当然,为了解决上述问题,我们在霍莉(Horae)异常检测平台中,还实现了智能同比检测等算法,在后续的文章中会详细介绍,敬请期待!


作者介绍:


牧之,百度云高级研发工程师,负责百度云 Noah 智能异常检测算法相关工作,在自动异常检测、智能故障诊断等方向有广泛的实践经验。


本文转载自公众号 AIOps 智能运维(ID:AI_Ops)。


原文链接:


https://mp.weixin.qq.com/s/vSblkaim9Fq_N7rO5TsIAA


2019-09-10 16:182954

评论

发布
暂无评论
发现更多内容

我以为自己够牛逼了,直到看到了Alibaba专家的面试笔记,我学习了三个月,却入职京东,税前36K

Java架构之路

Java 程序员 架构 面试 编程语言

研发管理101军规#003 实战规模化敏捷:从8人到百人的敏捷之路

爱吃小舅的鱼

程序人生 Scrum 敏捷开发

2020DevOps状态报告——变更管理

禅道项目管理

DevOps 运维 开发 趋势 自动化测试

工业传感器:工业互联网的第一道门

工业互联网

如何对AD和Exchange进行安全加固满足护网需要?

嘉为蓝鲸

安全 asm AD 邮件系统 权限

从美国《拜杜法案》到中国供应链体系形成的内在逻辑

JiangX

供应链 28天写作 制造

细节决定成败!致Android高级工程师的一封信,实战解析

欢喜学安卓

android 程序员 面试 移动开发

高频量化交易机器人系统开发|高频量化交易机器人APP软件开发

系统开发

Java 程序经验小结:用私有构造器或者枚举类型强化Singleton属性

后台技术汇

28天写作

备战2O2I新年资料

ios 面试

跨越全场景统一架构三大挑战,MindSpore亮出“四招”

华为云开发者联盟

深度学习 联邦学习 mindspore 算子 ai框架

顶级!13位专家力荐Spring5为企业级开发提供一站式方案

996小迁

Java spring 编程 架构 面试

阿里中间件团队技术官手撸笔记,全新演绎“Kafka部署实战”,已开源

Java架构之路

Java 程序员 架构 面试 编程语言

mysql字符串字段索引优化

瞌睡的李先生

MySQL 索引

快抛弃你错误的坚持

石君

生活随想 28天写作

新鲜出炉!阿里内部开源SpringCloud Alibaba全解(全彩版)全网首发

Java架构追梦

Java 学习 架构 面试 SpringCloud Alibaba

阿里P8内部架构核心学习知识笔记在各大互联网上流传,限时开放下载

Java架构之路

Java 程序员 架构 面试 编程语言

electron实战练习-三个文件实现一个命令行终端

OBKoro1

node.js Electron electron实战 命令行终端 electron学习

低代码开发平台的技术路线

Sam678678

架构师训练营第二周作业 - 命题作业

阿德儿

重学JS | 异步编程 Generator()

梁龙先森

面试 大前端 编程语言 28天写作

软件测试--selenium安装使用

测试人生路

软件测试

快速入门案例实战:电商网站商品管理(一)

escray

elasticsearch elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

盘点2020 | 人生是一场马拉松-OBKoro1的2020年年终总结

OBKoro1

2020 大前端 年终总结 OBKoro1

林昊获中国计算机学会杰出工程师奖,阿里中间件再获高度肯定,“三位一体”推动技术普惠

阿里巴巴云原生

阿里巴巴 阿里云 开发者 云原生 中间件

安卓开发在线!字节跳动Android研发岗这些知识点内部泄露出来了,已拿到offer

欢喜学安卓

android 程序员 面试 移动开发

GrowingIO Design 组件库搭建之开发工具

GrowingIO技术专栏

设计 大前端

WebRTC ICE 状态与提名处理

阿里云视频云

阿里云 WebRTC 通信 流媒体开发 流媒体传输

新思科技静态应用安全测试解决方案获得Forrester Wave认可

InfoQ_434670063458

新思科技 Forrester Wave 静态应用安全测试

普通人必须掌握的五个必学理财知识

v16629866266

最近线上发生的两个坑爹锅

艾小仙

后端

我们不一样!告诉你百度是如何做智能流量异常检测的_文化 & 方法_牧之_InfoQ精选文章