如何获得这个重要的情报呢?除了腥风血雨的谍战外,也可以通过统计估计获得。盟军通过研究缴获和被摧毁的坦克,发现轮胎编号为 1 、 2 、 3 等数字,这些数字是车轮模具的上的编号,通过估计模具的数量,推算这些模具可以产生多少轮胎,从而估算出纳粹德国的坦克数量。分析估算 1944 年 2 月可生产 270 辆坦克,大大超过此前预期,该估计与德国战后发布记录 276 辆相近。二战中德国,苏联,盟军都使用过,朝鲜战争也曾被使用过。
图1: 豹式坦克,速度快的重型坦克,1944年左右,驻法德军坦克数量的一半为该型号
我们享受这先烈们的披荆斩棘带来的幸福,战争的硝烟已经不再,但股市中红红绿绿的竞争依旧。量化分析人员使用各种统计方法去分析金融产品的价格。 Clive Granger 和 Robert Fry Engle III 使用时间序列分析经济指标而获得 2003 年诺贝尔经济学奖 , Engle 提出的 ARCH 时间序列模型是成果之一。时间序列是经典问题,被广泛研究和广泛应用,特别是金融资产价格预测。
本次我们介绍智能运维中时间序列分析,它可用于进行系统容量预测,容器编排,例如预测今年“双十一”哪些系统需要增加扩容,购买新的服务器,或者激活服务器中闲置的处理器?数据中心有上千个系统,如何快速发现哪些系统出现异常?可用的统计方法很多,包括概率分布(例如正态分布,泊松分布等),贝叶斯估计、回归等,我们这次讨论最广泛使用的时间序列方法。
按时间的先后顺序排列的数据被称为时间序列数据( Time Series Data ),简称时序数据。下图是一个 Docker 容器的空闲内存占比时序数据,其中横轴为时间,纵轴是空闲内存百分比。 **
时序数据通常是以时间来排列数据,但按空间位置排列的数据也称为时间序列数据,使用时间序列分析方法来做分析。和时间序列相对应的是 截面数据 (Cross Sectional Data), 以及将两者结合起来的面板数据 (Panel Data) ,与本次内容无关,有兴趣请查阅任何统计类书籍。
时间序列分析可用在如下的多个场景: **
1) 根据过去的历史数据预测未来数据。 例如使用历史运维数据,预测未来 CPU 和内存的利用率、磁盘容量、数据库事务数、页面访问量等。例如下面对过去一周 (5 月 10 日到 5 月 17 日 ) 的空闲内存建立模型(如图中绿色阴影部分),预测将来一天 (5 月 18 日 ) 的空闲内存占比情况(如下图红色阴影部分),从图中可以看到系统空闲内存在过去一周以来,呈现持续减少的趋势。
2)容量规划。 掌握系统对资源利用率的趋势,预测将来的资源需求。例如 6 个月后哪些系统需要扩容?今年“双十一”需要为哪些系统购买新机器 ?
通过对时间序列折线图进行分解,可得到变化趋势,周期趋势。下面是分解之后得到的结果,其中包含以下三部分内容:
我们也可以通过变化趋势图,找出数据中心中哪些系统的空闲资源在持续下降,从而进行容量规划。我们也利用星期周期和天周期,发现每周或每天系统的繁忙或空闲情况,通过精心选择将一些系统部署在一台服务器,达到 “填谷削峰”的效果。
如果需要也可以分析节假日对时序数据的影响,下面分析结果了 2015 到 2016 年一年多时间中,节假日对 CPU 利用率的影响因素。
3) 异常检测。 发现哪些系统的运行数据偏离正常范围 ( 大幅突然偏离或持续逐渐偏离 ) 。使用时间序列分析方法,可预测未来数据的走向,然后通过比较当前系统运行指标和预测指标之间的差异,分析二者的偏离情况,发现系统突变异常和持续偏离异常。
下面系统运行指标突然偏离预测值,系统发生了突变:
时间序列分析可使用模型非常多,难度稍大,部分模型如下:
另外, Facebook 在 2017 年发布了 prophet 组件,算法创新不大,但支持 Python 和 R 语言,使用方便,本文使用 Prophet 来做时序预测。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞2
添加新评论0 条评论