时间序列--腾讯数学博士教你如何智能运维

Posted 高效运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间序列--腾讯数学博士教你如何智能运维相关的知识,希望对你有一定的参考价值。


时间序列--腾讯数学博士教你如何智能运维 

前言


正式接触到运维项目是 2017 年 8 月份,从跟业务运维同学的沟通情况来看,当时有几个业务的痛点和难点。例如:织云Monitor 时间序列的异常检测,织云哈勃的根因分析,ROOT 系统的根源分析,故障排查,成本优化等项目。


在 AIOPS 人员短缺,并且学术界并不研究这类技术方案的前提下,如何在运维中开展机器学习那就是一个巨大的难题。就像当年有神盾系统,无论怎么做都可以轻松的接入其余推荐业务,并且也有相对成熟的内部经验,学术界和工业界都有无数成功的案例。


但是智能运维这一块,在 2017 年才被推广出来,之前都是手工运维和 DevOps 的一些内容。于是,如何尽快搭建一套能够在部门内使用的智能运维体系就成了一个巨大的挑战。面临的难题基本上有以下几点:


  • 历史包袱沉重

  • AIOPS 人员短缺

  • 没有成熟的系统框架


百万曲线一人挑


在这种情况下,外部引进技术是不可能了,只能够靠自研,合作的同事主要是业务运维和运营开发。当时第一个接触的智能运维项目就是哈勃的多维下钻分析,其业务场景就是一旦发现了成功率等指标下跌之后,需要从多维的指标中精准的发现异常,例如从运营商,省份,手机等指标中发现导致成功率下跌的原因,这就是经典的根因分析。


这一块在调研之后发现,主要几篇文章可以参考,综合考虑了之后撰写了一份资料,那就是“根因分析的探索”。PS:除了哈勃多维下钻之外,个人感觉在 BI 智能商业分析中,其实也可以是这类方法来智能的发现“为什么DAU下跌?”“为什么收入没有达到预期”等问题。


除了哈勃多维下钻之外,Monitor 的时间序列异常检测算法则是更为棘手的项目。之前的 Monitor 异常检测算法,就是靠开发人员根据曲线的特点设定三个阈值(最大值,最小值,波动率)来进行异常检测。这样的结果就是准确率不准,覆盖率不够,人力成本巨大。


在上百万条曲线都需要进行异常检测的时候,每一条曲线都需要人工配置阈值是完全不合理的。于是,导致的结果就是每周都需要有人值班,有了问题还不一定能够及时发现。而对于时间序列算法,大家通常能够想到的就是 ARIMA 算法,深度学习的 RNN 与 LSTM 算法,或者是 Facebook 近期开源的 Prophet 工具。


其实以上的几种时间序列预测和异常检测算法,主要还是基于单条时间序列来做的,而且基本上是针对那些比较平稳,具有历史规律的时间序列来进行操作的。如果针对每一条曲线都单独搭建一个时间序列模型的话,那和阈值检测没有任何的区别,人力成本依旧巨大。


而且在 Monitor 的实际场景下,这些时间序列异常检测模型都有着自身的缺陷,无法做到“百万条KPI曲线一人挑”的效果。于是在经历了很多调研之后,我们创新性的提出了一个技术方案,成功的做到了“百万条曲线”的异常检测就用几个模型搞定。


那就是无监督学习的方案加上有监督学习的方案,第一层我们使用无监督算法过滤掉大部分的异常,第二层我们使用了有监督的算法来提升准确率和召回率。


在时间序列异常检测的各类算法中,通常的论文里面都是针对某一类时间序列,使用某一类模型,效果可以达到最优。但是在我们的应用场景下,见过的曲线千奇百怪,笔者都说不清楚有多少曲线的形状,因此只用某一类时间序列的模型是绝对不可取的。但是,在学习机器学习的过程中,有一种集成学习的办法,那就是把多个模型的结果作为特征,让这些特征来对所有的 Monitor 时间序列进行异常检测。这一类方法笔者总结过,那就是“时间序列简介(一)”,最终我们做到了“百万条曲线一人挑”,成功去掉了制定阈值的业务效果。


什么是时间序列

时间序列是将某种统计指标的数值,按时间先后顺序排序所形成的数列。时间序列的预测就是通过分析时间序列,根据时间序列所反映出来的发展过程、方向和趋势,进行类推或延伸,预测下一段时间或以后若干年内可能达到的水平。时间序列的异常检测就是通过历史的数据分析,查看当前的数据是否发生了明显偏离了正常的情况。


作者有撰写一份PPT ,里面介绍了时间序列的一些模型,例如移动平均法(Moving Average),指数的移动平均法(Exponential Weighted Moving Average),以及经典的控制图理论(Control Chart Theory)。除此之外,也将会介绍清华大学裴丹教授的 Opprentice 系统,是用有监督的学习方法(Random Forest)来进行时间序列的异常检测的。在 PPT 的最后,会简单介绍时间序列的特征提取工 tsfresh。



时间序列--腾讯数学博士教你如何智能运维


本次4月13-14日的GOPS全球运维大会深圳站《腾讯运维专场》邀请到作者张戎现场分享,他将会结合QQ的运维场景,介绍在日常的运维方面,如何使用机器学习的算法来实现智能运维。例如,如何使用机器学习算法来进行KPI曲线的异常检测,如何使用人工智能算法来进行故障的根因分析和根源分析。具体会包含以下几个方面:


  • 时间序列的异常检测算法

  • 多维下钻的根因分析

  • ROOT系统的根源分析


欢迎大家和张戎以及腾讯SNG运维团队的专家们进行当面交流。



报名通道

了解大会更多内容,报名参与【腾讯运维体系专场】与2018开年运维技术盛宴【GOPS全球运维大会】请长按二维码进入官网:


点击“阅读原文” 参与现场活动

以上是关于时间序列--腾讯数学博士教你如何智能运维的主要内容,如果未能解决你的问题,请参考以下文章

AutoML如何实现智能推荐系统的自动上线和运维?

腾讯云数据库智能化海量运维的建设与实践(附PPT)

织云 Metis 发布:时间序列异常检测诚邀您体验

01-智能运维简介

腾讯游戏:基于实际场景的 AIOps 运营实践

荐书丨智能运维:从0搭建大规模分布式AIOps系统