大数据频道 频道

AIOps智能监控在阿里故障管理工作中的实践!

  【IT168 技术】在自动化运维还不普及的时候,运维人员更多的运用手动的方式完成运维工作,这种方式耗时长,效率低。由此,如何合理发挥人工智能技术辅助运维人员进行故障管理工作逐步成为了业界关注的焦点。阿里巴巴的GOC团队通过研究并使用AIOps系统到运维业务场景中的方式,积累了大量的智能运营的方法论和技术体系。

  演讲嘉宾简介:

  王肇刚,阿里巴巴高级技术专家

  本文内容根据演讲视频及PPT整理而成。

  运维行业的发展

  2009年,在自动化运维还不普及的时候,运维人员更多的运用手动方式完成运维工作,这种方式耗时长,效率较低。例如:运行业务的服务器有板卡故障时,运维人员往往需要将位于故障服务器上游及下游的服务器中对故障服务器的流量从配置文件中摘掉,再将出现故障的服务器中运行的应用全部停掉,最后将相关服务器的监控屏蔽才可完成整个故障的运维。做完这些工作往往会消耗掉运维人员一下午的时间。对于此种情况,阿里巴巴的开发人员最开始想到的解决方法是编写相对的响应脚本,并通过脚本的运行完成自动化运维。但在运维人员实际使用过程中脚本的方式不是很理想。于是开发人员尝试使用了第二种方式,WEB化(或称白屏化)的方式进行自动化的运维工作。相比脚本的编写WEB化的方式更加优雅易用。但是,WEB化方式仍存在着不够灵活的局限。运维人员希望将基础的运维能力做成接口,并以平台化的方式进行应用,以此支持更加复杂的运维场景,DEVOps便由此产生。DEVOps虽不等同于自动化运维,却是一个解决自动化运维非常好的方式,可以将其看作一个将研发及运维问题融合到一起的一个工作方法论。在DEVOps技术基础之上,开发人员将运维做到了基础架构领域,通过将更多的运维问题降为攻击来使原本的问题不存在。上述这些时期,无论是运维脚本的开发、运维WEB化的开发、或是通过基础架构进行运维,运维人员做的都是自动化运维,而非智能化运维。在2014年左右,业界提出了智能化运维的思路,运维人员可以利用人工智能的技术来辅助运维人员将工作做的更好,基于此思想智能化运维的开发便提上了日程。回顾手动运维,自动化运维及智能化运维这三个时代,可以发现以下一些特点。1.手动运维时代:在手动时代,运维人员需要人工进行运维的决策并亲自执行这些运维的决策。2.自动化运维时代(DEVOps):在自动化运维时代,运维人员仍需对运维问题进行人工的决策,但在制定决策后,运维人员便可通过自动化系统进行决策的执行。3.人工智能运维时代(AIOps):在更多的场景下,机器会辅助运维人员自动制定决策,并由机器本身自动完成所制定的决策,以此达到高效解决问题的目的。

  AIOps时代的智能运维

8384aa928fe685d06a86baa2920ee772045a6104

  上图为全球著名资讯公司Gartner对AIOps的发展趋势判断。根据Gartner的判断,在2017年全球有10%的运维系统具备了AIOps的能力,但到2020年时,具备这种能力的运维系统的数量将攀升至50%左右,由此可见,AIOps技术将在未来变得越来越成熟。Gartner的这种判断使得广大运维人员不禁会问:AIOps究竟能为运维工作提供什么帮助?借用游戏中的一种表现方式,阿里巴巴开发团队为AIOps绘制了一颗发展科技树。AIOps的发展是一种从工业界到学术界,再由二者相结合的过程,AIOps的产生最初是由设计工程师们在一些诸如智能化的异常检测,智能化的容量切换调度,智能化的问答这类问题上进行尝试后,逐步由具体的功能点汇聚成了AIOps这种体系结构。对于运维来说,无外乎解决三方面问题即:质量,成本,效率。AIOps分别关注了这三个领域中的质量监控,根因分析,故障自愈,容量,调度,无人值守,运维机器人等必不可少的运维应用场景,通过对这些场景的研究来更好的达到人工智能运维的目标。

  如何孵化具有AIOps能力的产品?

  1.搭建AIOps需要哪些部分?

57ff314b379137e3f958aeeaa308b47ded4409d9

  阿里巴巴负责智能运维化产品开发的GOC团队认为AIOps系统的架构应为场景,算法,数据三位一体的架构。上图罗列出了一些GOC团队构建AIOps系统所用的技术。对于AIOps来说,算法是必不可少的,而算法底层需要数据为其进行训练及复发,在有了算法及数据之后,GOC团队同样需要一些运维的场景进行算法效率的验证并发挥系统智能的价值。基于此,GOC团队选取了一些典型的运维场景,包括智能监控,智能调度,智能问答等等进行验证。所用到的算法组件包括但不限于:异常检测,最优化策略/规划&预测,VLP/意图识别等相关算法组件。而对于数据部分而言,人们常常会有一个误区:即拥有大量数据并不代表可以快速生成人们想要的算法,在利用数据生成算法方面,应该更多注重的是数据的质量,若数据集中无意义及不标准的数据过多,则很难为算法的生成做出贡献。

  2.AIOps系统搭建案例

  AIOps的搭建同样离不开好的团队,下图来自于《企业级AIOps实施建议》白皮书中AIOps团队的构建建议。在AIOps的搭建过程中,只有将算法与开发团队,运维团队形成良好的互动交流,才能更为高效的完成项目的搭建与开发。阿里巴巴GOC团队正是这样一个优秀的运维团队,并已积累了多个项目开发经验。下面将分享一些GOC团队利用AIOps解决实战问题的案例。

df752a97a3ce727c0e1e7a553ab9fca43cd1357f

  (1) 阿里巴巴集团全球运行指挥中心

e9519fd91dffd8a54b476b96a0b9a0c1f9b7b87c

  为了能更好管理运维业务中的故障,GOC团队希望搭建一个可以覆盖每一个故障全部生命周期(从开始的故障发现,故障通告,到解决故障中的处理决策,再到故障解决后的复盘及演练等一系列)的指挥中心,系统的开发参照GOC团队内部专业完备的流程化系统进行,并将由GOC团队成员及阿里巴巴的工程师们共同完成。但是在一些关键的技术环节上,GOC团队发现紧靠人力是无法做到的。鉴于此,团队在系统的若干个关键点上又做了智能化的探索与突破,这些探索也取得了很大的成效。

918e1256011bfe49343151e6430cfc868df80ab2

  上图给出了GOC团队已具备的技术及条件。基于对系统智能化的探索,GOC团队发现其在很多运维层面已经具备了优势条件。在运维场景层面,GOC团队拥有很多可以应用算法的场景,比如业务指标监控,故障定级/决策调度,故障相关信息流转等。在算法层面,GOC通过专业的算法团队研制出了智能基线,规则引擎及Chatbot等主要算法。而算法的背后,离不开海量数据的支持,GOC团队通过与阿里巴巴其他团队的业务合作得到海量的数据,将这些数据加以孵化来得到更多高质量的算法。在团队支持层面,GOC团队拥有专业的算法团队,监控中心运维团队,工程研发团队等多团队的支持。正是这些客观主观因素决定下,GOC团队做到了很多优秀的实现案例。

  (2)千锤百炼的“智能基线”

  阿里巴巴有很多业态,在GOC算法分析团队看来,这些业态的特征比较分散且特征的区别很大。GOC研究的智能基线算法可以精确的发现在线业务指标的异常,且此过程中不需要任何人工配置的成本。算法会自动通过历史趋势去学习数据曲线的客观规律,并可以很好的应对不同行业产生的数据。为了更加优化算法对数据的兼容性,智能基线算法通过在线预测的功能(即算法对往后一段时间的数据进行逐点预测),完成了对长期历史规律与近期历史规律较好的折衷。同时,GOC团队吸收了运维同学值班时标注的经验,让人对不同业务的容忍程度这一十分难以琢磨的因素也能优雅的在算法中体现出来。通过这些复杂的设计,算法可以很好的适配数据曲线中的波动毛刺及随业务产生的高低起伏。在阿里巴巴内部,智能基线算法已产生了很好的效果。以本算法为基础,GOC团队发现运维业务的故障发现准确率及故障召回率得到了成倍的提升,企业以此可以每周节省的流程操作时间达29个小时之多。概括来讲,智能基线算法有以下的特点。1精准性:算法拥有精准全面的异常发现及触发警报的能力2健壮性:算法长期经受各种外部攻击及爬虫的内部压测干扰的历练,目前已具备了对干扰攻击较好的抵抗能力。3高效性:算法可以很好的支持秒级与分钟级计算,无需任何人工监控配置。使用该算法的人员无需随业务变化对算法进行调参,算法可自己通过对规律的学习适应业务的变化。4普世性:算法支持各个行业的业务数据,并可一键接入各类监控系统数据。而对于运维人员较常见的系统级指控指标(如CPU,网络的流量等),GOC团队同样也演化出了一种适用于系统级(应用级)指标的轻量级算法异常检测算法。这种算法的效果如下图。

ac86efcd1e221af6de8a4896b11bd70a864e8ef3

  这种算法可智能化的将海量数据中一些离群异常的且对运维人员较重要的数据自动检测出来,而且此过程不需要任何的人工成本。同时由于体量较轻的缘由,算法可被用于普世海量级别的系统工程当中。这也使得此类算法拥有了精准,轻量,便捷的特点。

  (3)不断演进的根因分析能力

  在运维问题被算法发现后,往往要同时进行问题的恢复及分析工作。GOC团队通过不断的探究实验,演进出一套较为先进的根因分析算法。下面将对其中主要算法进行介绍。

  单指标多维下钻分析

  这种算法适用于单一指标的监控。当业务指标出现总量异常时,单指标多维下钻分析算法往往可以在秒级的时间内准确地定位到出现异常的分量或分量组合。

81df8d255edd6586e9d1c6e7938f15cffd882cfd

  多指标相关性分析

  相信运维同学都曾有过“业务中的各个指标都是有关联的”这种感受。当业务量庞大之后,仅靠人力无法维护大量这种数据之间的关系。多指标相关性算法可以动态的发现并识别业务中相关的关系,在确定数据之间的关系后,算法可以做如下图中两方面的分析。(1)当指标出现异常时,算法会动态发现有相似下跌形态的相关指标,以此为异常原因定位提供重要线索。(2)算法通过离线的分析,可发现业务报警之间的关联规则。当单业务异常时,算法将对其他关联业务进行提前预警,帮助运维人员做好准备工作。

f0d242265c4b25d94363f0c76719cb4460d9b027

  可疑应用/事件分析

  对于阿里巴巴这种拥有近百万的服务器规模,数十万应用程序分组的集团来说。出现问题时,则将会导致海量的事件。在阿里巴巴,每分钟发生的运维配置变更达4500到8000次,当一个故障持续5分钟时,则将产生上万级别的事件,这个时候会很难区别可疑事件及可疑程序。

bd99c7158fdd9ea56074ef11148d23c085e58cc2

  而GOC团队研究的可疑应用/事件分析算法很好的解决了这个问题。算法利用类似类推和奇异值分解等方法,可在秒级单位内给出相应的可疑分析,并将最可疑的应用排列推送给运维人员。运维人员通过这种高效的分析方式,可将故障问题的代价减少。

  AIOps智能监控产品体系

a482871fdad76356cc779f674606c32dce60b337

  GOC团队的目标是将上述智能化运维的种种能力最终孵化为云上产品,并同合作伙伴一起共建一个AIOps的生态。团队希望产品可以涵盖故障处理的全生命周期,包括:监控展示,异常发现,报警发现,根因分析,信息流转,故障恢复等。目前团队已研究出其中一些关键技术及能力,并将在未来持续对AIOps智能化运维系统进行不懈的研究。GOC团队同时希望通过开发AIOps技术,让企业及友合作伙伴共享AIOps的福利,在运维工作上减少成本的投入,提升工作的效率。

  本文由云栖志愿小组郭思乔整理

0
相关文章