搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 子衿技术联盟 > #老白特辑# 基于机器学习的智能化运维

#老白特辑# 基于机器学习的智能化运维

子衿技术联盟 2018-03-01

#老白特辑# 基于机器学习的智能化运维


徐戟,网名“白鳝”。从事应用开发、Oracle数据库、性能优化工作超过20年,一直从事IT咨询服务和系统优化工作。曾供职于DEC、赛格集团、长天集团、联想集团等国内外知名企业,现任南京基石数据/南瑞集团信息系统集成分公司 技术总监。

1999年起致力于Oracle数据库性能优化等方面的研究,参与了大量性能优化项目,积累了大量的实际工作案例。著有《ORACLE 优化日记》、《ORACLE RAC日记》和《DBA的思想天空》三本数据库技术图书。

好久没写网文了,最近一直在研究如何才能让运维系统更好的为传统行业复杂的系统运维服务。可能有些网友会说互联网公司的IT系统才叫复杂,传统行业的系统不外乎应用服务器、数据库,总的来说还是相当简单的。确实,在架构上,互联网应用更为复杂,不过由于互联网应用的复杂的架构,已经将系统充分解耦,每个组件的复杂度反而下降了,其运维难度也下降了。互联网应用在运维上更加注重于组件个体与整个应用系统,一旦某个组件故障,影响了应用系统,只需要针对整个组件进行处置就可以了。而传统应用由于耦合度太高,一旦出现问题,往往无法很快定位问题在哪,因此分析问题更加困难。

上面讲了这么多,想说的无非就是传统行业系统运维的复杂性,简单的自动化平台是无法处置一些复杂的场景的,处置系统问题的最主要的依据还是经验。老白是根据经验很快就定位了问题,如果换一个对AIX系统不熟的DBA,哪怕数据库水平很高,也可能无法很快定位问题的。

因此,我们今天讨论的话题是《基于机器学习的智能化运维》,重点讨论的是传统行业运维中两个重要的内容:模型与运维知识。运维知识我们接触的很多,目前我们手头的预案、红宝书、METALINK网站等,都是运维知识,模型就接触的比较少了,因此老白今天首先和大家讨论运维中的模型,比如健康模型、性能模型等。模型就是通过一系列的指标和基线数据,为系统建立一个科学的评估体系,用直观的分数来描述模型,描述系统的状态。一旦模型中的分数发生变化,或者分数的某个维度发生变化,就说明系统的状态发生了变化,运维人员就可以从这些变化中得到警示,从而发现问题。

下面进入正式的内容:

#老白特辑# 基于机器学习的智能化运维

今天演讲的题目是基于机器学习的数据库智能化运维,这个题目包含两方面的含义,一个是数据库智能化运维,一个是基于机器学习的这个定语。数据库智能化运维不是个新概念,很多企业都在运用专家智能或者人工智能建立自己的智能化运维系统。基于机器学习的这个定语是把机器学习这种大数据处理的方法应用到智能化运维中去。

我们实现智能化运维的基础方法是通过智能模型和运维知识自动化来建立一种全新的运维自动化系统。

#老白特辑# 基于机器学习的智能化运维

首先对我自己和我所在的南京基石数据做一个简单的介绍。我搞了二十年Oracle数据库,目前担任基石数据和南瑞集成的技术总监,南京基石数据是一家由南大尚诚、南京南瑞集团和徐戟技术团队共同出资成立的混合所有制企业,是国家电网体系内信通板块中第一家混改的企业,主要从事数据平台与数据运营相关的软硬件产品研发、技术服务咨询的专业化公司。

#老白特辑# 基于机器学习的智能化运维

我们先来看看数据库运维目前面临的新的困境,由于系统越来越复杂,数据库指标数量过于庞大,因此针对指标进行分析的难度越来越大,有时候数据库出了问题,我们很难通过某些指标很快的进行定位。而很多指标的分析依靠资深的,经验丰富的DBA,而这些DBA往往很少能够在一线运维岗位上配备。另外一方面,不同的系统出现问题的现象各不相同,即使是同一个指标,在不同的系统中,也会有较大的差异,因此一些以往的经验直接搬到现场生产环境中也十分困难。

#老白特辑# 基于机器学习的智能化运维

这些年十分热的机器学习给了我们新的启发,它为我们打开了一扇大门,通过机器学习,我们能否建立一种新的专家系统,替代传统的专家系统。于是我们开始了这方面的尝试,通过采集生产系统的数据,进行特征提取,构建训练模型,最终建立分类与预测模型。

#老白特辑# 基于机器学习的智能化运维

在这里,我们给大家分享一个研究案例的成果,通过在50套生产系统中进行数据采样,我们收集了8个月的系统运行数据,通过特种抽取,最终采用了15维负载数据与26维性能数据作为训练模型的基础。

由于训练模型需要监督学习,而监督学习需要专家标引数据,工作量十分巨大,因此我们使用我们自己的D-SMART大师问诊系统对这些数据进行打分。D-SMART里有基于专家模型的性能与负载打分功能,通过专家模型直接打分来替代专家人工标注数据,可以节约大量的数据预处理的时间。我们的目标是输入采集的数据,以及D-SMART的打分数据,进行监督学习,用80%的采样数据作为训练集,最终训练出可以自动打分的AI模型。然后用这个模型对20%的的数据进行验证,对比AI模型的打分准确率,选择最好的分析算法。

#老白特辑# 基于机器学习的智能化运维

我们采样的数据f1-fn和D-SMART的打分结果y作为模型的输入,进行训练,最终输出模型。

#老白特辑# 基于机器学习的智能化运维

特征选取使用最大信息数MIC方法、Relief-F特征选择方法和lasso回归方法三种方法进行分析,最终综合考虑,选取特征,从而达到降低高维数据维度的目的。

#老白特辑# 基于机器学习的智能化运维

回归方法选取了线性回归、支持向量机和多层感知机三种模型进行分析。

#老白特辑# 基于机器学习的智能化运维

上面是实验的结果,方差最小的,拟合优度可决系数越接近1的,就是最好的方法,可以看出多层感知机在这三种算法中具有最好的效果。在预测得分时,通过20%的采样进行校验时,发现打分误差在正负4分之间。

#老白特辑# 基于机器学习的智能化运维

而针对数据库得分的A/B/C/D四类预测中,回看23个样本预测未来一小时的数据库运行状态,经过500轮训练后,模型预测的准确率达到87.2%。

#老白特辑# 基于机器学习的智能化运维

通过上述实验,我们得到以上几个结论。神经网络对于SCORE类的预测有较好的效果,AI打分的误差在正负4之间;使用支持向量机和随机森林对LEVEL类的预测有较好的效果。

另外通过机器学习对D-SMART中的专家模型进行验证的结果是收敛的,说明目前的指标体系确实能够比较好的反映出系统状态。从这个实验也可以看出,使用AI模型对数据库状态进行预测是可行的。

#老白特辑# 基于机器学习的智能化运维

通过前面的实验案例,让我们眼前一亮,通过训练模型,可以较为准确的给系统打分,通过打分,我们可以预测一个小时后,甚至多个小时后的系统状态,一旦这样的模型建立起来,可以大大提高我们的运维水平。

在数据库中,可以建立健康模型,性能模型,负载模型容量模型和故障模型这五大模型。

#老白特辑# 基于机器学习的智能化运维

这张图上的是D-SMART中的健康模型,健康模型由六维度的模型综合而成,这六个维度分别是操作系统、负载、并发、IO、集群。目前D-SMART使用的还是专家模型,是一些在Oracle数据库领域工作二十多年的专家总结出来的模型,随着机器学习模型的成熟度越来越高,下一个版本的D-SMART中将会出现双引擎分析,机器学习模型也会参与打分,两个打分可以同时提供给运维人员参考。

#老白特辑# 基于机器学习的智能化运维

一旦建立起上述的模型,那么数据库状态巡检也就成为了可能。以往我们做巡检都是按照计划进行的,每个月,每个季度做一次巡检,不管系统需要不需要做巡检,都必须按时做,否则一旦系统出了问题,责任就很大。但是这种巡检的效率极低,统计数据表明,虽然巡检报告洋洋洒洒,一个库的报告就有4-50页,但是90%以上的巡检工作没有发现有价值的系统隐患,另外90%以上的系统故障并没有在巡检中查到蛛丝马迹,对于国网一个网省,如果每个季度对所有数据库做一次巡检,巡检成本在200万左右,而这个钱花的汇报却很低。

状态巡检是基于模型的,一旦模型给系统打分发现了异常,就主动发起巡检任务,并通过自动化采集、智能化数据分析,对超过90%的巡检项进行自动分析,最终由DBA对巡检及分析结果进行人工核对确认,形成巡检报告。一方面使巡检工作从计划巡检变为按需巡检,对于不怎么出问题的系统降低巡检频率,对于有问题的系统,加大巡检频率。另外一方面通过自动化手段进行自动数据采集与分析,大幅度减少巡检的工作量。

#老白特辑# 基于机器学习的智能化运维

在状态巡检工作中,机器学习也可以发挥古达的作用,通过数据采集与模型训练形成的分析模型,可以用于建立5大系统模型,在状态巡检的各个工作环节发挥作用,同时人工标注与确认的数据可以再次返回后台,进一步训练更准确的智能模型。

#老白特辑# 基于机器学习的智能化运维

谈完了模型,我们下一个话题就来谈谈运维知识。老白一直认为运维知识是运维工作中的最为核心的价值。现在有很多运维自动化系统,框架,工具,指标都很强,但是很难再我们日常运维中使用,这是什么原因呢,因为里面缺少了运维知识。只有运维知识才是我们运维工作中能够直接发挥作用的东西。

最初我们的运维知识都在人的脑子里,水平高的高手知识就丰富,菜鸟就很少。最后我们通过运维标准化文档让高手写出了各种预案。而菜鸟也可以通过度娘去网上找一些攻略来应付日常工作-度娘的作用就是提供了一个基于全文检索的运维知识库。但是随着菜鸟通过度娘找攻略,做操作,问题也来了,度娘手里很多知识是错的,或者和我们运维中遇到的问题是不同的,简单的生搬硬套往往是把小问题处理大了。于是乎,对于知识精准搜索平台的需求就出来了,水平较高的DBA也就不相信度娘了,他们去METALINK搜索更为准确的知识,这就是基于知识图谱的知识精准搜索平台。知识精准搜索平台虽然比传统的度娘准确度高了,但是还是无法解决知识推理与知识关联的复杂问题,于是基于机器学习的智能知识网络就出现了。一旦智能知识网络建立起来,其中可自动化的部分就可以在智能模型的帮助下实现智能知识自动化系统了。

这就是知识在运维工作中应用的演进路线,可能大多数用户还在最初的预案阶段,一部分用户已经开始进入智能知识网络阶段了,未来一定是智能知识自动化的时代。

#老白特辑# 基于机器学习的智能化运维

运维知识自动化平台的演进是从最初级的预案,标准化开始的,其演进路线也是运维的需求推动的,随着AI技术的发展,必然会走到自动化的阶段。

#老白特辑# 基于机器学习的智能化运维

运维知识自动化的数据模型很简单,分为知识点、诊断与脚本三种基础元素,通过这三种基础元素的组合,就可以建立纷繁复杂的运维自动化应用。

#老白特辑# 基于机器学习的智能化运维

上面是一个运维知识自动化数据模型的例子,通过基础采集发现一个符合运维经验的条件,从而触发一个自动化处理的过程,这个过程可以由一个知识点起步,这个知识点的下级可以是一个知识点,也可以是一个诊断,也可以是一个脚本,一个诊断可以引出一个知识点,也可以通过一个脚本完成整个处理过程。当然一个智能化脚本也可以引出一个新的知识点,从而进入下一个递归。通过这三者的相互关联,可以将我们以往的点状的知识串联成一个知识网络。并通过其中的自动化脚本去实现自动处理。

#老白特辑# 基于机器学习的智能化运维

在知识自动化平台中,机器学习也有十分重要的作用,训练的模型可以用于更为精细的调整知识点的参数,调整诊断路径的权重和优先级,从而实现更为准确的诊断路径自动选择。在诊断中,对于采集的结果分析也可以通过智能模型来提高准确率。在自动处置方面,智能模型也可以让自动处置的成功率得到提高。

#老白特辑# 基于机器学习的智能化运维

D-SMART中目前已经提供了基于智能脚本的运维知识自动化功能,通过预置的专家经验可以辅助我们处置常见的系统问题。通过智能脚本定制,也可以记录运维人员自己的运维经验,并应用于实际工作中。

D-SMART的下一个版本中,将支持知识点与诊断的预先设计与积累,并可以通过可视化界面利用已有知识去创建运维经验。

#老白特辑# 基于机器学习的智能化运维

上面的例子是一个通过运维知识自动化实现自动诊断分析的例子,自动化脚本帮助运维人员排除了一系列可能的诊断路径,使诊断集中到有限的几个领域,从而提高问题分析的成功率。

#老白特辑# 基于机器学习的智能化运维

运维知识自动化系统可以积累与灵活运用已有的知识,像外骨骼机器人已有,知识自动化系统可以增强运维人员的能力,运维人员不需要很高的水平,就可以直接利用专家或者其他高手,甚至是自己总结出来的经验,用于辅助运维,提高问题解决的能力。

对于企业来说,通过长时间的知识积累,可以将人脑子里的最有价值的知识沉淀到企业的系统平台中,实现核心价值从人向组织的转移。

同时具有极其学习能力的平台会在每次运维处理中获得新的样本,从而训练更为优秀的人工智能算法,随着系统投产的时间推移,平台的能力越来越强,智能系统最终将会超越人类的专家。

#老白特辑# 基于机器学习的智能化运维

接下来我们对比一下传统自动化运维系统与D-SMART这样的基于机器学习的运维知识自动化系统之间的区别。传统的运维自动化系统是以指标、工具与场景为核心的系统,比较容易解决已知的,简单的问题,但是对于负载的,未知的问题,就很难胜任。而这些对于以运维知识、专家经验与智能模型为核心的知识自动化系统来说,这些都不是问题。

传统的运维自动化系统只能辅助运维人员进行运维,只有使用者的熟练度与能力提高了,才能提高运维的能力,一旦人员流失或者变化,这些能力将很快失去。知识自动化系统通过积累知识来提高运维能力,哪怕人员变化了,积累在系统中的知识还会很好的发挥作用。

普通的运维自动化系统智能提供鼓励的指标与基线,这些指标和基线与运维操作,分析之间的关系是不明确的,因此运维人员很难从中获得直接的运维能力,而以模型与知识为核心的运维知识自动化系统交给运维人员的是知识,知识中已经包含了如何使用这些基线去分析相关的问题。

我想,随着平台积累的数据越来越多,AI将会给大家带来更多的惊喜。

最后我们总结一下机器学习与智能模型会给我们的运维带来什么价值。首先可以让运维更有针对性,摆脱目前盲人摸象的运维模式,从而大幅度节约运维成本。其次,可以让企业减少对高水平DBA的依赖,依托外骨骼机器人的帮助,让菜鸟也能像高手一样处理问题,使数据库运维工作成为可持续高价值的工作。

通过智能模型,我们还可以提前发现问题,自动定位问题,真正的做到我们喊了20年的防患于未然。随着运维数据的积累,模型会越来越强大,智能运维也就离我们不远了。

今天的分享就到这里,谢谢大家。


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《#老白特辑# 基于机器学习的智能化运维》的版权归原作者「子衿技术联盟」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注子衿技术联盟微信公众号

子衿技术联盟微信公众号:Nari_ZJ

子衿技术联盟

手机扫描上方二维码即可关注子衿技术联盟微信公众号

子衿技术联盟最新文章

精品公众号随机推荐