AIOps场景下,指标预测算法基础知识全面总结

语言: CN / TW / HK

云智慧 AIOps 社区是由云智慧发起,针对运维业务场景,提供算法、算力、数据集整体的服务体系及智能运维业务场景的解决方案交流社区。该社区致力于传播 AIOps 技术,旨在与各行业客户、用户、研究者和开发者们共同解决智能运维行业技术难题,推动 AIOps 技术在企业中落地,建设健康共赢的AIOps 开发者生态。

一、前言

随着企业积极实践数智化转型升级,运维行业高速发展推动着自动化成为数字时代不可或缺的要素,深受各行各业的瞩目。今天我们就来与大家聊聊智能运维中的“自动化”算法。

在日常运维中,运维人员需要通过对基础设施,系统服务等的监测来进行日常维护和维修保障工作。运维监控目标一般包括硬件监控,系统监控,应用监控,网络监控,流量分析,日志监控,安全监控,API 监控,性能监控,业务监控等设备,其中大多数监控数据均以时间序列指标的形式采集。因此指标数据在这些海量运维数据中占据着不容忽视的地位。

传统上,运维人员通过监测重要时间序列指标的当前状态,结合历史数据的变化规律的方法来判断与监测指标相关(任务)的运行情况。如果只简单依赖人工进行预测和判断的话,不仅需要付出极大的人工成本,也难以覆盖全部监控指标,得到相对精准的判断。这样的背景之下,针对指标的预测服务逐渐变成运维服务使用者的刚需,预测场景也随着各行业数字化的发展变得越来越清晰与多样。同时,在传统统计类、时序分解类、机器学习类、深度学习类等算法百花齐放的当下,为了令算法跟随产品落地并产生相应的商业价值,既需要有对相关算法的深入理解以及对行业业务知识的深刻认知,更需要能够将两者深度结合。因此运维的智能化道路任重道远。

二、运维领域的预测场景

指标预测在运维领域里有丰富的应用场景,最常见的预测场景有基础监控资源(比如磁盘使用量、CPU、内存使用)的预测,业务量(比如银行交易量、银行跑批时间、证券成交量等)的预测。前述预测场景在行业内已经成功落地,除此之外,预测算法在容量规划场景的应用中也将具有广阔的应用空间

场景一:基础监控指标预测

磁盘占用率预测

磁盘是常见的基础监控资源,当磁盘占用率过高时可能导致系统运行缓慢甚至造成事故,因此需要运维人员监控磁盘占用率。一般情况下,当磁盘占用率超过警戒线时(如 90%)运维人员会收到邮件通知,及时排查问题并快速解决,以保证系统的正常运行。但是对事故的发生传统方法只能被动应对,如何变被动为主动呢?

算法可以学习磁盘使用率历史数据的增长情况,对未来一段时间的磁盘使用率进行预测,一旦发现在临近的某个时间点(比如四天后)磁盘使用率将超过警报线时,就能提前一周通过预警告诉运维人员四天后磁盘将满,这将给运维人员足够的时间进行动态扩容,以避免出现资源匮乏而引发损失的问题,最终避免运维故障的发生。

CPU 使用率预测

CPU 的使用率因相关业务的不同会产生形态各异的使用曲线,在某些时候会表现出较为明显的周期性(例如执行定时的跑批任务),这要求我们在 CPU 使用率的预测中也能展现出这种周期性,为特定任务预留足够的 CPU 资源以使任务稳定运行。

场景二:业务场景

在智能运维应用场景中,业务预测是企业根据时间序列数据的预测结果,来制定业务未来发展(收入、销售、对资源的需求、产品可交付成果)的工具。准确的预测能为企业的战略决策提供数据支撑,使企业能够有效的进行资金预算及资源分配,因此准确的预测对企业规划及其重要。企业往往密切关注收入的期望值,会每月/季度进行预测,然后将预测与实际结果进行比较,以尽早修改某些关键过程。

场景三:容量规划

在传统的容量规划中,为了降低容量决策的风险通常会提供一定的冗余容量,而这会降低资源使用效率,增加企业的经营成本。另一方面,人工手动方式进行容量规划效率低,且强烈依赖于人工的经验,难以做到定量标准化。通过对业务机器资源使用情况的分析,结合预测算法对资源利用率的预测结果,能够在保证不影响业务稳定运行的情况下,弹性对分配的机器资源进行扩/缩容,以最大化机器资源使用率,降低运营成本。

三、指标预测算法

运维领域的预测主要针对的是时间序列数据,时间序列是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。时间序列数据一般具有趋势性、季节性、周期性和随机性等特点。现有的时序预测方法大致分为四类,传统的统计类方法如线性回归、ARIMA;现代的机器学习类/深度学习类方法如 SVM、LSTM;时间序列分解类方法如 Prophet;深度学习类算法如 CNN、RNN。

  1. 统计类方法

统计类方法主要研究数据点之间的线性关系,捕捉其线性规律。大部分统计类算法要求时序数据不含缺失值,并且在统计视角是平稳的,或者通过一些平稳化操作后是平稳的,所以只适用于有明显线性关系的数据。

  1. 时序分解类方法

时序分解类方法常见的有 HoltWinters、 Propeht 等,这类算法通过将数据分解为趋势性分量,周期性分量,平稳分量等三个正交的部分后,对各分量进行预测。由于其具有较高的可解释性并在周期类数据中具有良好的表现,而在实际生产中得到广泛应用。

  1. 机器学习类方法

机器学习可以接受尽可能多的输入,包括数据、数据特征及对其的影响因素(如运营活动、天气、地理位置等)),选取合适的特征有助于提高预测准确性。常用的机器学习类预测方法有决策树、朴素贝叶斯、K 近邻、支持向量回归等。但是在使用机器学习类方法时需要人工构造数据的特征属性,因此对运维领域形态多样的指标数据,如何自动化的针对不同数据进行特征筛选是一个亟待解决挑战。

  1. 深度学习类方法

随着企业数字化转型的持续开展,可用于学习的指标数据迎来了爆发式增长,尤其是转型后随着时间的增长,各行业的运维数据得到了稳步积累,深度学习类方法在海量数据上获得了施展能力的机会。深度学习的方法往往能够捕捉数据间复杂的非线性规律,常用的深度学习预测类方法有 CNN、RNN、LSTM 等,这些方法在预测领域均有不错的表现,而且预测的准确性会随着数据量的增多而提高。不过这类方也存在一定的局限性,例如模型的可解释性、较多的模型参数,调参难度都有很大的提升空间。

四、节假日预测

在众多企业业务场景中,获得准确的预测结果对企业营销、发展等策略的确定具有重要的意义。众多商业行为中存在两种破坏上述"规律性"的事件:节假日和促销活动。节假日通常会影响企业的营业量。

譬如银行在周末、传统节假日时的存/取款笔数相较于工作日会有较大差别。其中工作日及非工作日这种周期性行为能够被算法学习,节假日的特点则需要放大到年周期的历史数据进行学习,很多企业一般难以提供较长历史时期的数据。其次,企业作出促销等活动的决定,造成营业额在短时间内较历史具有较大增幅。由于这种活动往往根据具体环境临时决定,或不具备周期性,或在历史数据中从未发生,因此预测算法难以通过对历史数据的学习来对未来数据做出相对准确的预测。

为了解决以上问题,算法需要能够对历史数据及其外的其他信息进行学习,例如节假日日期、促销活动的日期及持续时间等,算法不仅可以学习到历史数据中“不变”的规律,也需要能学习到外部信息中的“突变”为业务带来的影响。

五、总结

运维领域的时间序列预测场景丰富,除了常见的基础监控指标和业务关联指标外,也有特定行业的新需求如容量规划。可以预见的是,未来将会有更多“自动化”算法出现在更多的智能运维预测场景里。

目前用于时间序列预测的算法种类繁多,从传统的统计类算法、时间序列分解类算法,到新时代的机器学习类、深度学习类算法。各种算法在不同的预测需求下各施拳脚,百花齐放,为真实生产场景中的预测任务提供了充足的弹药。

即便不同场景与不同业务所产生的运维数据参差多样,如平稳型的、周期型的、突变点型的等,可惜的是,现在暂无法找到一种算法或一套参数适用于所有数据,那么未来面对运维领域种类繁多的海量数据,通过不断创新与实践,我们相信在众人的努力下终将找到一个高效的、自动化的解决方案,来完成多种数据的高准确性的预测,真正将运维人员从算法选择和调参中解放出来。

开源福利

云智慧已开源数据可视化编排平台 FlyFish 。通过配置数据模型为用户提供上百种可视化图形组件,零编码即可实现符合自己业务需求的炫酷可视化大屏。 同时,飞鱼也提供了灵活的拓展能力,支持组件开发、自定义函数与全局事件等配置, 面向复杂需求场景能够保证高效开发与交付。

点击下方地址链接,欢迎大家给 FlyFish 点赞送 Star。参与组件开发,更有万元现金等你来拿。

GitHub 地址: https://github.com/CloudWise-OpenSource/FlyFish

Gitee 地址:https://gitee.com/CloudWise/fly-fish

万元现金福利: http://bbs.aiops.cloudwise.com/t/Activity

微信扫描识别下方二维码,备注【飞鱼】加入AIOps社区飞鱼开发者交流群,与 FlyFish 项目 PMC 面对面交流~