清华裴丹分享AIOps落地路线图,看智能运维如何落地生根

大家上午好,非常荣幸,能有这个机会,跟这么多的运维人一起交流智能运维。最近这两年运维里面有一个很火的一个词叫做AIOps(智能运维),并且有一小部分人一往无前的投入到AIOps中去了, 但是更多的人都还在持观望态度,因为大家内心中还存在一个无法回避的问题:AIOps到底在自己的场景下怎么落地?所以今天我要跟大家分享我认为的AIOps落地应该遵循的路线图。既有技术路线图,也有战略路线图。这虽然不是唯一的一个路线图,但这是我今后十年会不断努力、专注和迭代的一个方向,希望为那些对AIOps感兴趣的朋友们提供一些借鉴意义。

运维现状与痛点


运维的重要性


运维在人类未来的生产生活中的作用会越来越重要。预计到2020年全球将有500亿到1000亿的设备,这些设备会承载无数的服务,涵盖互联网、金融、物联网、智能制造、电信、电力网络、政府等等的生产生活的方方面面。这些硬件和软件都是人造出来的,都是不完美的。

运维要做的是保障业务能够可靠高速高效安全的运转,因为它会直接影响到业务的收益和成本。


运维的现状与痛点


目前已有运维方法的主要难点是突发故障的发现、止损、修复和规避,也是我们要解决的关键问题。这些难点导致我们运维人有很多痛点。

我相信在座的各位都看到过这幅图,我们运维人是全年365天7×24小时的救火,我们压力山大。在过去的三个月里,我走访了大概几十家跟运维相关的单位,我经常听到的描述是我们的压力很大、我们在不停的背锅、我们的日子是如履薄冰、幸福指数低、不知道下一秒会发生什么、睡不了安稳觉,还有人略带夸张的说我们做运维就是把脑袋别在裤腰带上。但是从这些描述我们能体会到我们运维人目前的工具还不足,因此如果人工智能能帮助我们的话,运维的生产力将得到极大的提高。

最早先运维处于手工阶段时,可能每天需要“祈祷”不要发生故障。在实现自动化运维后,我们实现了不少自动化脚本,把很多已知任务像流水线一样串起来,就像特斯拉电动机车流水线一样。但是,很多故障都是突发的。在故障突发时,我们会把所有相关的人纠集到一个作战室,然后大家在一起拼命的想搞清楚问题的原因。我们的目标是两分钟就能搞定,实际上有可能需要一个半小时。在解决问题的过程中,每一分每一秒都在给业务带来持续损失。


系统、软件、架构的演进给运维带来的挑战


在处理突发故障时,我们主要关心三个问题(也是领导最关心的问题):发生了什么,怎么解决,多长时间能解决。由人力来回答这些问题效率低、不准确、不及时。因为我们要对付的这个系统实在是太复杂了。AIOps提高运维生产力的一种方式就是把处理突发故障时的人力分析尽可能的都替换成机器来做。

我们现在来看看复杂度的来源。下图展示的是对一个互联网公司来说最不可控的部分——越来越复杂接入网络。这是当时AT&T的一个网络拓扑图,左上角的iPhone连接到互联网的话,经历的这个网络设备的种类有十几种,数量几十个。

数据中心的系统也在不断的演进,其规模复杂度、变更频率非常大,技术更新也非常的快。网络中心的拓扑越来越庞大,像上图所示,微软Azure数据中心大概半年就会更新一次拓扑结构,然后底层会逐渐融入SDN、NFV这样的技术。

与此同时,软件的规模、调用关系、变更频率也在逐渐增大。上图是前两天腾讯视频的朋友提供的软件模块之间的调用,非常复杂。同时,由于持续集成、敏捷开发、DevOps,每一个模块随时都可能发生变化,随时都可能给我们带来故障,也就是说整个云计算也在不断地发生变化。容器、持续交付、软件架构、工程方法也在不断的演进,会不断的给我运维工作带来挑战。

所以说,这么庞大、复杂、多变的软硬件系统,它的软硬件故障的放生是不可能避免的,但是我们运维需要保障上层的业务可靠高速高效安全的运转。那遇到突发故障的时候我们怎么能准确快速的决策呢?如果要靠人力去维护一些规则,那是显然不可行的。

必然趋势:基于ML的AIOps

那怎么办呢?运维大数据。我们现在有非常多的监控工具,采集存储了海量的、价值极高的各种监控数据。我们希望当遇到突发事件的时候,能够基于这些数据快速准确做出决策。

而处理海量、高速、多样的数据并产生高价值,正是机器学习的专长。也就是说,采用机器学习技术是运维的一个必然的走向。

我们希望在将来会有一个自动决策的CPU,大大的提升我们运维的效率,要真正能做到不光是双11的时候我们能够喝茶来保证的运维,而是在日常365天7×24小时都能够喝着茶,把运维工作做好。那么将来的愿景是什么样子呢?现有监控提供数据采集,AIOps的引擎做出决策建议,少数运维专家最终决策,执行自动化脚本进行故障止损、修复、规避等操作。

具体而言,

1、AIOps引擎 中的“异常检测”模块在检测到异常之后可以将报警第一时间报给运维人员,达到“故障发现”的效果;

2、“异常定位”模块达到“故障止损”的效果,它会给出一些止损的建议,运维专家看到这个定位之后也许他不知道根因,但是他知道怎么去根据已有的预案来进行止损,然后再执行自动化的脚本。如果是软件上线导致的问题我们回卷,如果业务不允许回卷就赶紧发布更新版本;如果是容量不够了,那我们动态扩容;如果部分软硬件出问题了,我们切换一下流量等等。

3、AIOps引擎中的“根因分析”模块会找出故障的根因,从而对其进行修复。 如果根因是硬件出了问题,像慢性病一样的问题,那我们可以让我们的运维人员去修复。

4、同时,AIOps 引擎中的“异常预测模块”能够提前预测性能瓶颈、容量不足、故障等,从而实现“故障规避”。比如,如果我们预测出来了设备故障的话,那么可以更新设备;如果说我们发现性能上的瓶颈是代码导致的,那就交给研发人员去修改。

核心的AIOps的引擎会积累一个知识库,从里边不断的学习。也就是说监控数据会给AIOps提供训练数据的基础,然后专家会反馈一部分专家知识,上图是我展望的AIOps大概的体系结构,这里面关键的一点是,我们还是离不开运维专家的。最终的止损、规避的决策、软件的代码修复以及设备的更换还是要靠人来做的,但是机器把绝大部分工作都做了,包括异常检测、异常定位、根因分析、异常预测。

AIOps前景听起来很美好,那为什么还是有不少人持观望态度呢?

这是因为人们在实践AIOps的时候,往往容易踩到一个陷阱里面,也就是说想用直接应用标准的机器学习算法,通过黑盒的方法直接解决我们运维问题,这种做法通常是行不通的。


我举一个异常检测的例子。通过这个例子来说明在实践中AIOps真正被应用起来会面临什么样的挑战。

关于“故障发现”问题,运维界的现状是漏报误报多、故障发现不及时。这是因为我们的监控指标非常多,异常的种类也非常多,因此设置静态阈值是不能满足需求的。

我们有很多时序数据分析的算法,理论上可以做异常检测,但是他们往往适用场景不明确,比如上图的KPI三条曲线,人们往往并不清楚应该采用哪个算法、使用什么参数。此外,数据中可能还有缺失,处理不当就会导致异常检测准确率很低。因此,现实中的异常检测实践中经常出现的情形是,上周出现了漏报误报,那我本周就调整一下阈值,但是根据这一个个case来决定静态阈值的话,容易丢西瓜捡芝麻,导致出现新的、可能是更严重的误报漏报。

还有,以往有算法解决了算法上述普适性问题,但是是基于监督学习的。可是,在实践中,异常标注难以批量获得,只有一些零星的case。如果让业务人员去进行标注的话,会非常麻烦,因为他们只有一些历史的case。而标注一条KPI曲线,往往需要反反复复调整矫正,耗时耗力。

另外一个挑战是,你可能需要同时开始监控几百万、几千万的KPI,怎么快速给他们选择算法呢?另外,可能一条曲线的模式经过一次软件变更之后发生巨变,算法参数就失效了,导致出现大量的误报。

最后的结论是,任何一个算法都无法同时解决上面的挑战,那AIOps到底怎么解决这个问题呢,怎在“故障发现”这个痛点上真正落地呢?我们首先要明确目前的AI擅长什么,不擅长什么。

以上是清华大学张钹院士的观点。张钹院士80多岁了,经历了人工智能的起起伏伏。他的演讲中经常提到,AI可以解决不少问题,但是它目前的能力是有一定的范围的。人工智能在解决很多类型问题时不管多么复杂都能做到,甚至超过人类的水平。这些问题的特点是什么呢?有充足的数据和知识,问题定义很清楚,已经明确了输入输出是什么,以及单领域。

我们回过头来看上面我们的“异常检测”问题,我们基本可以体会到要想一步到位解决异常检测的所有挑战,是不现实的,因为这个整体问题已经复杂到AI不擅长解决的程度。

那么AIOps中“异常检测”到底如何落地呢?很简单,我们的方法论就是庖丁解牛。

当你刚开始接触异常检测这一问题时,你看到的就是一头全牛。但是,当你深入了解了异常检测之后,你就会目无全牛。你看到的是它的经脉。然后,你就不用困扰于具体的技术细节,而是要根据它的经脉,闭着眼睛就可以根据脑海中的图把这个牛给解剖了。每一刀都能够切中要害,游刃有余。

其实我们做异常检测这个事情也是一样的,我们只需要把前面的挑战都逐一的分解开,个个击破。刚才我们那些问题混杂在一起,这东西听起来就搞不定,但是如果我们能够把它们分解开,每一个变成了AI善于解决的问题,让它封闭住让它well-defined,那异常检测就变得可解了。

上图中左上子图所示, 我们先做一个无监督的异常检测,为什么呢?因为刚才说了,标注数据很难大批量获得,那我们先用一个无监督的异常检测作为初筛,一旦有了这个无监督异常检测,那我们再提供一个非常友好的界面,然后在上面我们的运维人员可以零星的把他们碰到的case在上面标注一下,然后我们提供基于算法的工具自动搜索跟它标注出来的异常区间类似的,达到举一反百、甚至举一反千的效果,让它的标注工作能够被充分利用,让它的标注开销非常非常低,如右中子图所示。

之后就可以采用已有的有监督的异常检测,解决算法和参数的普适性问题(左中子图)。同时,如果遇到右下子图的那个KPI曲线的模式的突变的话,我们首先判断新模式是否跟老模式属于同一类型,然后自动通过迁移学习自动调整算法参数。

最后,如左下子图所示,为了对大量的KPI自动地分配检测算法, 我们先把海量的KPI进行分类。即使有几百万条曲线,其类别也不会太多。我们在每一类里面找到典型的算法,然后对同一类里的每根曲线进行微调。

那我们把这个稍微梳理一下

最底下的是机器学习算法,最上面的是我们要做的这样一个自适应的异常检测系统,中间我们有一些技术层就是前面那页具体要解决的问题,下面还有一个智能运维的算法层,所以我通过这个小的实例来说明一下我的idea,就是说我们要把这个技术进行分解,把我们要解决的复杂问题庖丁解牛分解成实际上是AI善于解决的问题。

通过上面这个例子,我们可以看到,一个在实践中看起来非常难的异常检测问题,通过刨丁解牛的方法,可以分解成一系列问题的时候,它每一个都变成用AI方法可解了。

AIOps落地技术路线图

我们面对的不再是运维应用场景与标准机器学习算法之间巨大的鸿沟,而是在中间加入了AIOps基础算法层,和AIOps关键技术层。其中关键技术层解决的是前一幅图中的挑战,而基础算法层为关键技术层和最终的运维场景提供基础的算法支撑。

如上图所示。比如说刚才提到的我们需要对海量KPI进行异常检测的话,就需要对它进行聚类。KPI聚类的问题就是一个单独的问题。如果把这一问题拎出来,你会发现这个问题其实很抽象,输入是若干条曲线,输出是按照曲线形状的分类。这个问题对于做算法的人来说非常可解,非常well-defined,只要给了数据,人工智能肯定能搞定这个KPI聚类算法,并且AI算法专家并不需深入理解运维场景就能研究这个问题。图中的每个问题都是一个AI比较擅长解决的问题,但是他们之间还有一些先后依赖关系。也就是说,我们提供了一个落地AIOps中的“自适应异常检测”的一个技术路线图。

上图是AIOps的整体路线图。包含了异常检测、异常定位、根因分析和异常预测。原来实践AIOps遇到困难的原因是试图通过底层的标准机器学习算法解决最上层的运维应用,这种方法论解决不了实际问题很正常,因为这种方法是吧问题当做一整头牛来处理。后面我们对故障止损、故障修复、故障预测再简单做一下庖丁解牛。

在故障报出来之后,我们希望它能够有一些定位功能。那定位到什么粒度呢?

定位的粒度足以实施运维专家提前准备好的修复预案,从而可以执行自动化的脚本进行回卷、动态扩缩、切流量等等。

1、如右上子图所示,如果是变更导致了业务的异常,那运维人员把这个变更回卷一下就好了,如果业务不允许回卷(如涉及到用户交易)那么就需要快速部署更新过的新版本。把这个问题定义分解出来,那我们的预期是很清楚的——智能运维的算法需要告诉运维人员哪个变更导致了这个业务的巨变。我们之前也和百度在这方面合作过一个案例。

2、再以左上子图的单指标多维度监控为例。例如,运维人员需要监控流量的异常,并需要在数据中心、运营商、用户类型、浏览器等各个维度进行监控。一旦总流量出现了异常,它可能在各个维度都会出现报警。我们需要快速定位到具体哪些维度的组合导致了总流量的异常。比如,如果我们定位到根因是某个数据中心的某个集群的流量出现了异常,那我们就可以把该数据中心的流量切换掉就可以解决问题。

3、同理,在右中子图中,当业务指标发生剧烈波动时,我们找到该业务的哪些模块的哪些指标也同时发生了波动,并根据关联程度进行排序,给出最可能的根因位置,供运维人员进行定位。在左中子图中,一个不完善组粒度的故障树也能起到故障定位的效果。另外,还可以对故障进行最粗粒度的故障定界,确定是网络、服务器、存储、还是用户的问题,快速明确责任单位,便于止损,如右下子图所示。最后,还可以判断故障是否为容量不足导致,以便迅速做出动态扩容决策。

以上都是来源于实际的各种故障止损需求。由于问题定义得相对清晰, 都可以通过AI来解决。

根因分析的前提是报警(要求异常检测部分要报准),下一步就是构建故障树。由于软件模块之间的依赖关系太复杂,因此故障树的构建非常难。对所有的报警信息进行两两关联的计算量过大。一种思路是构建一个故障树的超集,通过模块调用链获得模块之间的逻辑调用关系,通过配置信息获得物理模块之间的物理关联,比如共享机器资源、网络资源等。这两部分一起构成一个可能的故障树,这棵树是真正故障树的一个超集。之后我们对这个超集中的每个边进行联动分析、联动分析,对这棵树进行剪枝,构成最终的故障传播关系。这种方法的覆盖面广,计算开销大大降低,并且是AI擅长解决的问题。当我们拥有了故障传播关系,并它比较全而且准的话,根因分析就变得可行了。当发生故障时,依据准确的报警, 顺着故障传播树就能找到根因,从而进行故障修复。

性能瓶颈预测、容量预测、故障预测等异常预测是故障规避的经典场景,如上图所示。 性能瓶颈被预测出来后,比如发现哪个模块是整个系统性能的瓶颈,就可以对这部分进行代码优化,如果代码优化来不及的话,也可以选择定向扩容。容量预测之后,可以进行动态的扩缩容、资源预算等,比如当业务需要达到每秒三十万笔交易时,也许不用统一的全面的扩容,只需要把瓶颈部分的容量扩展。故障预测可以帮助进行动态的切流量、替换硬件等等。时间关系,不展开详述。

以上就是我认为的AIOps落地的技术路线图,是根据我十几年的运维科研经验的基础上总结归纳出来的。我们清华大学NetMan实验室二十左右个同学对前面提到的每个题目都正在进行研究。

AIOps这么大的一件事还需要汇聚社区的力量。因此我提出的AIOps的战略路线图是,通过社区集合整个工业界的力量(因为他们熟悉运维场景、也有丰富的数据)同时集合算法界的力量(因为他们熟悉算法)。以往工业界和学术界的交流就是工业界和科学家的一对一进行交流合作。可能整个项目的一半时间都花在问题的定义和迭代上面,而且没有公认的benchmark数据和缺乏比较性。

大家看到了我们前面的技术路线图,我们现在已经把问题定义好了,而且受到ImageNet的启发,我们也创建了运维领域的智能挑战赛。而这个智能运维的挑战赛实际上它也是一种社区合作的思路。我称之为工业界和算法界的合作2.0。普林斯顿大学毕业的华裔女科学家李飞飞在不被看好的情况下创建了ImageNet的数据集和人工智能挑战赛,重新定义了研究人工智能的方式,培养了很多人才和专家,推动了如今如火如荼的人工智能浪潮,最终带动了整个人工智能领域的高速发展。

我们的思路也是类似的,在智能运维领域,我们收集了运维的场景和面临的主要挑战,把这些问题分解成前面的技术路线图,放在了一个公共的竞赛网站上面。除了网站以外,我们还有来自工业界的真实数据集。下图是我们的竞赛网站。经过我们的网站建设支持方——腾讯游戏的艰苦奋战,昨天晚上网站终于上线了。右上角是网站的二维码,直接输入这个url也同样可以访问。

在这个网站上既有运维场景,比如异常检测、聚类;又有数据集、比赛和科研问题。针对科研问题,我们会讲它的背景、面临的挑战,给出它的数据的示例、格式以及评估的方法,值得注意的是,统一的评估方法也是很重要,因此我们也提供了评估方法。在这里我也非常希望能和大家一起,汇聚社区力量,进一步探讨智能运维的算法,共同推进AIOps的发展。

原文发布时间为:2017-11-24

本文作者:裴丹

时间: 2025-01-31 06:02:10

清华裴丹分享AIOps落地路线图,看智能运维如何落地生根的相关文章

裴丹教授采访|如何实现智能运维及对运维行业的未来展望

编者按 裴丹教授,清华大学计算机系长聘副教授,主要研究领域是基于机器学习的互联网智能运维,深耕此领域15年,发表了80余篇学术论文和20余项美国专利.裴教授同时还是国家青年千人计划,美国UCLA博士,曾任美国AT&T研究院主任研究员,也是ACM 和 IEEE的Senior Member. 裴教授也是本次中生代&飞马网年度技术大会(北京)的运维专场出品人.小编有幸先行对裴丹教授进行了采访,如果你也非常期待见到裴教授并跟他进行深度交流,一定不能错过即将举行的年度技术大会. 访谈实录 裴教授,很

MySQL智能运维与实践,看关系型数据库如何优雅应对云时代

随着互联网场景的导入,非结构化的海量数据给传统数据库的处理能力带来了极大的挑战,作为最受欢迎的开源关系型数据库,MySQL一步步地占领了原有商业数据库市场.如今Google.Facebook.网易.淘宝等大公司都在使用MySQL数据库.而MySQL的发展也从1.0到如今的8.0版本,其功能的完善和稳定性也得到了很好的保证. 本文包含以下三部分: MySQL8.0 的新特性 云时代MySQL的运维实践 金融行业最佳应用场景 今年8.0版本将会带来哪些惊喜呢? MySQL 8.0 新特性一览 1.I

从QQ运维的历史遗留问题看公司运维的进化过程

主要讨论人员 ◆提问: 智锦 ◆回答: 梁定安(大梁) 嘉宾介绍 梁定安 10年运营开发.海量运维和架构规划经验,任腾讯社交平台运维团队.综合运维团队leader,主要负责Qzone.相册.音乐等社交平台类业务的运营开发和运维规划工作,精通海量服务的架构设计和自动化运维建设,目前专注于devops.APM.大数据的运维实践探索.infoq高级运维讲师,腾讯云布道师. 引言 「坐而论道」是高效运维社区独创的一种技术交流形式,由技术高手之间互相提问并进行解答,每周讨论一个话题,由其中一位发起提问并指

分享:地方装饰网站推广运维思路

中介交易 SEO诊断 淘宝客 云主机 技术大厅 说到网站推广模式其实是个老话题了,作为业余型网站运维的我来说,需要考虑的问题就比较多了,地方型装饰网站作为企业面向市场的重要窗口,承担着桥梁型的作用,推广的必要性自然是不需要说的,作为一个地方企业站点做网络优化和推广的最主要目的是盈利,然而完成盈利的主要途径是网上接单,达成一定概率的成交,在保证推广运维成本的基础上达到盈利的目的,那么下面来分享下地方装饰站如何从优化和推广中获取盈利的: (一)网站本身做调整 什么意思呢?很多地方企业单纯认为做个网站

从阿里工程师谈业务安全通用方案 看安全运维的角色转换

没有绝对安全的系统,同时为系统提高安全性也并非零成本. 所以客户需要的"安全"是安全成本和安全资损的平衡. 安全运维者需要转变自己的角色,从业务阻碍者变成业务促进者. "你们安全不要阻碍业务发展"."这个安全策略降低用户体验,影响转化率"--这是甲方企业安全部门经常听到合作团队抱怨.但安全从业者加入公司的初衷绝对不是"阻碍业务发展",那么安全解决方案能否成为"业务促进者",而非"业务阻碍者&quo

BoCloud博云完成近亿元融资,加速PaaS与云运维落地

5月10日,企业级云平台解决方案提供商BoCloud博云,宣布完成近亿元人民币的B轮融资,该笔融资成为国内迄今为止容器技术.PaaS及自动化运维领域创业公司中规模最大的一笔融资,也是容器领域国内迄今最大的一笔融资.本轮融资由元禾控股.东方富海联合领投,江苏华泰证券互联网基金与邦盛资本参与联合投资.本轮融资证明BoCloud博云的技术.产品.服务.运营能力受到投资人的高度认可,希望通过注资帮助BoCloud博云进一步加强其在市场中的竞争力,加速公司发展,打造公司领导力,扩大公司服务能力,为BoCl

从IBM SCE+落地中国看IDC的转型

本文讲的是从IBM SCE+落地中国看IDC的转型,运营成本高.系统利用率低下.可用性不一致以及灵活性不佳都是云计算的关键推动因素.随着云计算的出现,IT部门有了新的选择,不仅可以降低成本,还能提高弹性和灵活性.虽然企业对按用量付费和合理精简这一观念产生了浓厚兴趣,但合规性和服务的重要性使他们只能将商品化程度最高的服务转移到公有云上.亚马逊在IaaS领域所获得的成功,也带动了国内传统IDC向云计算转型的第一波热潮,包括电信运营商在内的IDC厂商推出了大量的云主机.云存储等标准化云服务,来迎合ID

架构设计分享之权限系统(看图说话)

架构设计分享之权限系统(看图说话) 前面一篇文章<最近架构随想>,我提到架构设计的一些构想,其实也是对之前项目经验的一些归纳及总结.今天我们就以权限系统作为切入点,谈一谈怎么设计权限系统以及怎么做到系统具有以下特性: Organized:如果系统组织比较好,可以起到事半功倍的效果. Encapsulated:对功能,结构,数据进行有效的封装,会使系统维护变得更加容易. Reusable:对常用功能以及组件进行有效的封装,可以使系统变得结构清晰且方便维护. Extensible:在设计系统的时候

DockOne微信分享(一一七):沪江容器化运维实践

本文讲的是DockOne微信分享(一一七):沪江容器化运维实践[编者的话]沪江目前容器技术主要应用场景:OCS课件业务无状态应用:基于Apache Mesos+Marathon实现沪江容器系统调度管理:Consul + Consul Template + Nginx实现服务自动发现和注册:Prometheus + Grafana + Alertmanager报警实现容器监控报警.本次分享将从以下几方面来讲解: 选择容器技术缘由 容器技术选型 容器存储 容器网络 监控报警 镜像管理 调度管理 服务