SDS存储智能运维之云预

浏览02018-12-01 12:08:31 3

( 作者:王思萌@TaoCloud )


TaoCloud智能运维产品最终目标是通过AI技术实现对未来系统运行状态的预测、现阶段系统运行状况的智能监控、对过去运行历史数据的智能分析。分别对应云预、云控、云析三大模块,本文重点解剖云预。云预是一套以机器学习理论为基础,以大数据分析为技术路线,整合了行业领域知识和运维场景领域知识,专业针对未来事件的智能运维系统。


1 云预简介

当今时代,数据已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。而伴随着数据爆炸式增长的还有数以百亿级别的设备、和上层软件及服务。

为了在不完美的软硬件之上,安全、可靠、高效的使用数据。那么确保软硬件完美运行的运维部门和人员则成了继软件研发以后的另一个重要支柱。在面对突发故障时,当今的解决方案仍是大量依赖于人力分析决策,其特点是效率低、不准确、不及时。

TaoCloud以清华大学NetMan团队总结的智能运维科研结果为框架基础,结合了多篇来自数据挖掘顶会论文的核心算法、使用当下最为热门的机器学习技术,专门为TaoCloud 的XDFS和SSAN存储系统定制了智能运维【图1】解决方案—云预(PreCloud)。其中包含了容量预测、趋势预测、热点预测和故障预测服务。

图1-智能运维.png

图1智能运维

云预作为整个智能运维【图2】系统中的一部分,与云析(针对过去事件)和云控(针对未来事件)一起结合人工智能技术从过去、现在和未来三个维度分别为XDFS以及SSAN存储系统提供精准、快速和智能化的运维服务。

图2-智能运维中的科研问题.png

图2 智能运维科研问题


2 行业背景

随着技术的进步和系统不断完善,软件行业逐步趋近于系统化、规模化、复杂化。由于变更频率的增大,运维系统以及运维方式也需要不断地进步。从最早的手工运维,到脚本化的自动运维,再到运维开发一体化阶段,由系统的不断庞大所带来的运维问题正呈指数级增长。为了改变现状,基于机器学习的智能运维则是运维的最终走向。而智能运维的挑战是如何将行业领域内的知识、运维场景领域知识和机器学习技术完美的结合,从而实现(1)庞大、复杂、多变的软硬件系统中避免故障的发生,2)可靠、高速、高效、安全的方法进行决策,3)抽象出人力无法达到的运维规则

通过由机器学习学习而得到的模型或预测结果,再由运维专家根据预测结果进行决策可大幅度的提升运维效率。将运维技术提升到一个新的高度。在Gartner 公司的预测中,AIOps在2020年的全球部署率会达到50%这一惊人的数字。

由《中国计算机协会通讯》收录的清华大学裴丹副教授发表的AIOps科普文章《基于机器学习的智能运维》【1】一文中,详细的介绍了智能运维的现状,以及关键场景和技术。

TaoCloud则是以智能运维学术界抽象出来的场景为基石,分别研发了针对历史(云析)、当前(云控)以及未来(云预)三个时间维度的一整套智能运维系统。用以辅助TaoCloud :XDFS和SSAN存储系统,增加存储系统容错率,提供高效且不间断的运维服务。


3 学术界贡需献

人工智能(AI)为什么能解决运维问题?面对这个问题,我们不妨可以看一下AI最擅长解决的是什么。以下是一些相关特性,而这些特性对于AI来说,无论问题有多复杂都可能做到超越人类的水平:(1)有充足的数据或知识,(2)信息完全,(3)信息确定4)单领域(而在最新的迁移学习研究中可能打破这一定律)特性。

所以只要有明确的输入与输出,结合已知的机器学习算法,学术界就可以抽象出high-level的技术框架以及解决方案,最终可以超越人类的水平。

例如针对未来事件故障预测,典型应用场景有:(1)磁盘故障预测,(2)服务器故障预测,(3)交换机故障预测。所用到的一些常见算法有(1)HSMM,(2)随机森林3)SVM等。典型应用挑战:(1)故障案例少也就是正返例不平衡,(2)日志量大。为解决以上问题学术界就有多篇专门针对存储系统为磁盘提供精准故障预测的论文供工业界使用【2】【3】【4】。分别是由IBM和百度的多个团队用不同的方法实现了精准的磁盘故障预测功能。由于学术界和工业界还没有磨合出比较通用的人工智能实现方法。在当下阶段,即使在相同的场景下也可以有多种解决方案。所以只能从结果出发,按照方案的准确率选择出更精确的方案进行落地。

在IBM的论文中选择了突变点检测加RGF算法,而百度使用了SVM、BP神经网络和逻辑回归的方式。由于考虑到准确率以及新颖程度,TaoCloud采用了IBM出自KDD’16数据挖掘顶会的方案,并与TaoCloud统一存储平台完美结合,极大地增加了平台的容错率。

4 工业界成果

由于智能运维尚处在探索阶段,在工业领域中还缺少比较标杆式的领军企业,非常多的企业也同时在智能运维领域投入了大量人力和物力,现阶段处于业界领先地位的是先智据(DiskProphet)。先智数据采用了神经网络的方式实现了磁盘的故障预测,但核心的要素其实并不是神经网络的建立,而是是否有足够的数据去训练神经网络,而先智数据则占据了比较好的资源,他们把将近十万个磁盘在连续四年的运行状态数据训练出了神经网络,可以相对比较准确地预测磁盘寿命。

TaoCloud则使用了Backblaze公司【5】的开源磁盘SMART数据进行模型的训练。Backblaze是一家美国的存储公司,该公司为旗下的所有磁盘包含了WDC、TOSHIBA、HITACHI、ST和HGST等多家硬盘厂商的多型号磁盘建立了庞大的磁盘信息数据库并开源出来,其中包含了日期、磁盘序列号、型号、容量、故障状态和基本SMART数据。在此非常感谢该公司公布出了可支持训练的原始数据,该公司提供的开源数据则足以支撑大多数公司的训练任务。

5 系统架构设计

云预主要由7部分组成:(1)训练数据,(2)即时监控数据,(3)训练模型,(4)智能数据模型,(5)预测模型,(6)管理模型,(7)UI界面。如【图3】所示。

1)    训练数据:主要包括监控数据、系统日志和SMART数据,分别由Telegraf(监控软件)与Smartmontools(SMART数据采集软件)产生的系统监控数据并存储于InfluxDB(时间序列数据库);

2)    即时监控数据:由Telegraf与Smartmontools产生;

3)    训练模型:由机器学习训练算法构建而成也可以被称作模型的抽象,输入是训练数据,输出是智能数据模型;

4)    智能数据模型:由机器学习训练而产生的模型也可以比称作模型的实例;

5)    预测模型:由机器学习预测算法构成,输入是即时监控数据和智能数据模型,输出是预测数据;

6)    管理模型:用于模型的管理,以及预测数据的封装;

7)    UI界面:将封装以后的预测数据在UI界面进行展示。

图3-云预设计架构.png

图3云预系统架构

云预的流程分为5步有【图4】所示。

1)自动化脚本控制监控系统产生监控数据,历史监控数据会根据时间窗口的调整按天数进行更新,数据长度可按年计,而即时数据多为当天或近期数据。 

2)自动化脚本控制训练模型,迭代式的对监控数进行训练,由于训练模型采用机器学习里面的增量学习模式,在不只更新部分模型的情况下不停地进行学习,提升模型准确度,并不断地更新智能模型。

3)自动化脚本控制预测模型迭代调用智能模型以及即时监控数据产生预测数据。

4)自动化脚本控制管理模型迭代调用预测数据生成接口数据。

5)可视化平台迭代调用接口数据产生可视化界面。

整个系统会周期性的进行采集、训练、预测、归纳最后可视化。这样可以不断地学习数据、总结经验、自我提升。

图4-云预流程图.png

图4 云预流程图

6 相关算法介绍

6.1 容量预测

在容量预测中主要应用了随机梯度下降回归(SGDRegression)。虽然,使用随机梯度下降估计参数的方法(SGDRegression)在准确度表现上不及使用解析解方法的线性回归(LinerRegression);但是如果面对训练数据规模十分庞大的任务,随机梯度法不论是在分类还是回归问题上都表现突出,可以在不损失过多性能的前提下,节省大量计算时间。而且SGDRegression还支持增量学习,可以不断地学习新的样本从而提升模型准确率。

算法1-训练模型算法.jpg

云预训练模型算法【算法1】将通过监控软件Telegraf采集而来的历史监控数据,通过SGDRegression模型训练数据生成回归模型。

预测模型算法【算法2】将Telegraf采集而来的即时监控数据导入回归模型生成监控数据,后将回归数据计算封装产生预测结果供前端调用。

容量预测着重在于预测系统中磁盘的容量使用状况。根据各磁盘预测容量与系统总容量,综合计算出系统未来的使用容量以及扩容时间。

算法2-预测模型算法.jpg

6.2 趋势预测

趋势预测使用的算法【算法1】【算法2】与故障预测相同,但趋势预测着重在于运行状态趋势的预测。趋势预测包含5个功能:1)CPU, 2)磁盘IO,3)网络IO,4)系统负载,5)内存,分别对相应的硬软件进行趋势的预测。

1)CPU CPU使用率、空闲率、I/O等待率等。

2)磁盘IO 读取时间、读取速率、写入时间、写入速率等。

3)内存 已使用内存、空闲内存、总内存。

4)网络IO 接收字节、发送字节、接收丢包率、发送丢包率等。

5)系统负载 1分钟负载、5分钟负载、15分钟负载。


6.3 热点预测

热点预测使用的算法【算法1】【算法2】与容量预测相同。热点预测通过回归CPU以及磁盘IO数据产生的预测数据,分别通过计算产生系统内部集群的热点CPU以及热点磁盘。


6.4 故障预测

云预的故障预测【算法3】使用了自动、精准的磁盘故障预测方法,判断磁盘在接下来的一段时间内是否出现故障。

算法3-故障预测算法.jpg

主要通过正则化贪婪森林(RGF)、K-means聚类方法、突变点检测、指数平滑和迁移学习解决了以下问题:1)不是所有SMART属性都与磁盘故障有关,2)磁盘故障数据高度不平衡,3)不同类型的磁盘SMART存在差异。

故障预测设计思路:
1. 选择SMART属性:使用突变点(ChangePoint)检测的方法对SMART属性进行分类,选择与磁盘故障相关的SMART属性;

2. 生成时间序列:使用指数平滑来生成简化但是信息丰富的时间序列;

3. 解决数据不平衡性:通过欠抽样(DownSampling)选择具有代表性的健康磁盘的数据,然后用这些数据来代表全部的健康磁盘,从而使健康磁盘与替换磁盘的比例达到平衡;

4. 对磁盘状态分类:RGF是一个机器学习分类算法,可以将磁盘的状态分成0/1正常或故障的状态,如果当前时间序列被预测成1故障状态,则认为磁盘即将出现故障,需要更换的磁盘;

5. 迁移学习 考虑到同一厂商生产的不同磁盘模型之间也存在一定差异,云预使用了迁移学习的方法,从而利用某种磁盘上训练的模型来预测同一厂商的其他磁盘的故障替换情况;


突变点检测原理 由于SMART属性包含了非常多的特征项。在每天记录的SMART属性中,正常磁盘运行的SMART属性几乎没有任何数据变动。而将要发生故障的磁盘,会在某一天发生了SMART属性变动,而这个变动将会是一种不可逆的变动,并在不断的改变,最后导致故障的发生。而往往在实际生产环境中会存在多项SMART属性在产生突变点以后会导致磁盘故障的发生。所以对于模型的产生,不存在突变点的SMART属性不仅增大了模型的复杂度,而且影响模型的准确率。所以需要使用突变点检测的方式,用以极大地屏蔽到对模型训练无意义的冗余数据。

紧凑时间序列表示原理 在生产环境的观测中发现(1)SMART每天的数据都是不稳定的,还可能存在某天的SMART数据缺失,(2)由于磁盘的保护机制,单一一天的SMART数据很难以被应用于预测出磁盘故障,所以需要考虑长时间跨度的SMART数据,(3)只考虑故障前一天的SMART属性也不足以过早的预测到磁盘故障的产生。

因此,需要用到时间窗将原始数据切分成不同单元。通过使用特定时间窗口上的指数平滑机制将每个相关时间序列聚合为单个值。 这样,为距离故障比较近的点赋予高权重,并随着时间的推移降低权重。

欠抽样形式解决数据不平衡问题 故障预测的原始数据集是高度不平衡,其中,故障磁盘占比过低,而正常磁盘占比过高。 由于分类算法通常经过优化以最大化整体精度,因此在使用不平衡数据集进行训练时,会表现出较差的预测性能。

解决此类问题有两种方式(1)过抽样:增加一些分类正例。在本问题为模拟增加一些故障磁盘的训练数据。(2)欠抽样:直接对训练集里的数据进行抽样,生成训练子集。在本问题为在正常磁盘的训练样本中抽取训练样本子集。

由于过抽样相比于欠抽样会需求更多的训练样本,而采用欠抽样的方式可以更好的降低模型复杂度。

磁盘故障分类 故障预测使用了【算法1】【算法2】【算法3】等故障预测算法,对Blackblaze公司的SMART原始数据【表1】进行预处理产生训练数据,并通过【算法4】RGF算法将训练数据进行分类并产生预测模型,最后根据Smartmontools产生的即时数据导入至预测模型产生预测结果。

表1-SMART数据.jpg

表1 SMART数据

算法4-RGF算法.jpg


迁移学习 在生产环境中观察到这样一个事实,即单个磁盘制造商的不同模型具有类似的SMART报告,但报告的SMART属性的值的分布不同。 因此,利用在特定磁盘模型的训练数据上创建的现有预测模型,直接应用于从同一制造商的不同磁盘模型收集的数据时,将无法提供最佳预测性能。在数据挖掘中,该问题被称为样本选择偏移,协变量偏移或数据集偏移。 因此,通过迁移学习【算法5】的方法,以便能够将针对特定磁盘模型训练的预测模型用于同一制造商的新磁盘模型。算法5-迁移学习.jpg


7 应用场景

为XDFS以及SSAN存储系统提供智能化多维度的运维服务。其主要作为辅助产品,辅助存储系统,提高存储系统容错率。

场景1)磁盘发生故障

提前预测磁盘的故障,提出更替计划,可以从容的应对故障的产生提升系统容错率。

场景2)磁盘需要扩容
提前预测磁盘的使用容量,提出扩容计划,可以从容的应对磁盘需要扩容的问题。

场景3)预测系统趋势
通过对系统运行趋势的预测判断系统各部分的运行状况。

场景4)预测热点磁盘、CPU
通过预测系统产生的热点,分别对热点事件跟踪、反馈而考虑系统的设计负载等问题。


8 云预价值

1)数据可视化 与TaoCloud统一存储平台完美结合,可以清晰直观的观测到磁盘、CPU、内存等预测数据,结合预测数据就可以提前做出精准的判断;

2)简洁直观 操作简便,结果直观。通过简单的筛选以及时间轴的拖拽,就可以直观的观测到未来某一时刻的预测数据;

3)精准预测 采用先进的机器学习算法,精准并且提前预测故障的发生,为运维人员打好提前量,从而可以从容的应对故障的发生;

4)良好的兼容性 云预属于上层软件,对底层平台依赖性极低,几乎适用于任何平台,并且易于更新;

5)良好的操控性和合理的资源分配 可以按需求选择预测区间和预测时间,系统开销小,与存储系统隔离,不影响存储性能,并可以设置在资源闲置时进行预测;


9 小结

云预的基石就是人工智能和机器学习,相比于人工智能在其他领域的应用,智能运维几乎完美地拥有人工智能垂直应用领域必备的要素: 实际应用场景、大量数据、大量标注。

作为辅助XDFS以及SSAN存储系统的智能运维服务,会将存储系统的稳定性以及容错率提升一个档次。

在云预未来的发展方向上,既可以扩充至多维度的时间轴上,又可以投入于迁移学习,或者从SSD的故障自检测入手,需要工业界和学术界的紧密结合,工业界提供场景,学术界提供算法,相互学习,相互探索,将运维事业提升至新的台阶。

虽然云预占时还处在初期探索阶段,还需要不断地进行探索与实践。还可能会有非常大规模的改动,但作为人工智能的一个方向,智能运维云预将会取得长足的进步,前景一片光明。


参考文献

【1】裴丹,张圣林,裴昶华. 基于机器学习的只能运维[C]// 中国计算机协会通信, 2017.
【2】Botezatu M M, Giurgiu I, Bogojeska J, et al. Predicting Disk Replacement towards Reliable Data Centers[C]// ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2016:39-48.
【3】Zhu B, Wang G, Liu X, et al. Proactive drive failure prediction for large scale storage systems[C]// MASS Storage Systems and Technologies. IEEE, 2013:1-5.
【4】Yang W, Hu D, Liu Y, et al. Hard Drive Failure Prediction Using Big Data[C]// IEEE, Symposium on Reliable Distributed Systems Workshop. IEEE Computer Society, 2015:13-18.
【5】https://www.backblaze.com/b2/hard-drive-test-data.html


发表评论

全部评论(0)