摘要:在自动化运维还不普及的时候,运维人员更多的运用手动的方式完成运维工作,这种方式耗时长,效率低。由此,如何合理发挥人工智能技术辅助运维人员进行故障管理工作逐步成为了业界关注的焦点。阿里巴巴的GOC团队通过研究并使用AIOps系统到运维业务场景中的方式,积累了大量的智能运营的方法论和技术体系。
本场视频精彩回顾,戳这里!
本场视频PPT下载,戳这里!
演讲嘉宾简介:
王肇刚,阿里巴巴高级技术专家
本文内容根据演讲视频及PPT整理而成。
运维行业的发展
2009年,在自动化运维还不普及的时候,运维人员更多的运用手动方式完成运维工作,这种方式耗时长,效率较低。例如:运行业务的服务器有板卡故障时,运维人员往往需要将位于故障服务器上游及下游的服务器中对故障服务器的流量从配置文件中摘掉,再将出现故障的服务器中运行的应用全部停掉,最后将相关服务器的监控屏蔽才可完成整个故障的运维。做完这些工作往往会消耗掉运维人员一下午的时间。
对于此种情况,阿里巴巴的开发人员最开始想到的解决方法是编写相对的响应脚本,并通过脚本的运行完成自动化运维。但在运维人员实际使用过程中脚本的方式不是很理想。于是开发人员尝试使用了第二种方式,WEB化(或称白屏化)的方式进行自动化的运维工作。相比脚本的编写WEB化的方式更加优雅易用。但是,WEB化方式仍存在着不够灵活的局限。运维人员希望将基础的运维能力做成接口,并以平台化的方式进行应用,以此支持更加复杂的运维场景,DEVOps便由此产生。DEVOps虽不等同于自动化运维,却是一个解决自动化运维非常好的方式,可以将其看作一个将研发及运维问题融合到一起的一个工作方法论。在DEVOps技术基础之上,开发人员将运维做到了基础架构领域,通过将更多的运维问题降为攻击来使原本的问题不存在。上述这些时期,无论是运维脚本的开发、运维WEB化的开发、或是通过基础架构进行运维,运维人员做的都是自动化运维,而非智能化运维。在2014年左右,业界提出了智能化运维的思路,运维人员可以利用人工智能的技术来辅助运维人员将工作做的更好,基于此思想智能化运维的开发便提上了日程。回顾手动运维,自动化运维及智能化运维这三个时代,可以发现以下一些特点。
1.手动运维时代:在手动时代,运维人员需要人工进行运维的决策并亲自执行这些运维的决策。
2.自动化运维时代(DEVOps):在自动化运维时代,运维人员仍需对运维问题进行人工的决策,但在制定决策后,运维人员便可通过自动化系统进行决策的执行。
3.人工智能运维时代(AIOps):在更多的场景下,机器会辅助运维人员自动制定决策,并由机器本身自动完成所制定的决策,以此达到高效解决问题的目的。
对于此种情况,阿里巴巴的开发人员最开始想到的解决方法是编写相对的响应脚本,并通过脚本的运行完成自动化运维。但在运维人员实际使用过程中脚本的方式不是很理想。于是开发人员尝试使用了第二种方式,WEB化(或称白屏化)的方式进行自动化的运维工作。相比脚本的编写WEB化的方式更加优雅易用。但是,WEB化方式仍存在着不够灵活的局限。运维人员希望将基础的运维能力做成接口,并以平台化的方式进行应用,以此支持更加复杂的运维场景,DEVOps便由此产生。DEVOps虽不等同于自动化运维,却是一个解决自动化运维非常好的方式,可以将其看作一个将研发及运维问题融合到一起的一个工作方法论。在DEVOps技术基础之上,开发人员将运维做到了基础架构领域,通过将更多的运维问题降为攻击来使原本的问题不存在。上述这些时期,无论是运维脚本的开发、运维WEB化的开发、或是通过基础架构进行运维,运维人员做的都是自动化运维,而非智能化运维。在2014年左右,业界提出了智能化运维的思路,运维人员可以利用人工智能的技术来辅助运维人员将工作做的更好,基于此思想智能化运维的开发便提上了日程。回顾手动运维,自动化运维及智能化运维这三个时代,可以发现以下一些特点。
1.手动运维时代:在手动时代,运维人员需要人工进行运维的决策并亲自执行这些运维的决策。
2.自动化运维时代(DEVOps):在自动化运维时代,运维人员仍需对运维问题进行人工的决策,但在制定决策后,运维人员便可通过自动化系统进行决策的执行。
3.人工智能运维时代(AIOps):在更多的场景下,机器会辅助运维人员自动制定决策,并由机器本身自动完成所制定的决策,以此达到高效解决问题的目的。
AIOps时代的智能运维
上图为全球著名资讯公司Gartner对AIOps的发展趋势判断。根据Gartner的判断,在2017年全球有10%的运维系统具备了AIOps的能力,但到2020年时,具备这种能力的运维系统的数量将攀升至50%左右,由此可见,AIOps技术将在未来变得越来越成熟。Gartner的这种判断使得广大运维人员不禁会问:AIOps究竟能为运维工作提供什么帮助?借用游戏中的一种表现方式,阿里巴巴开发团队为AIOps绘制了一颗发展科技树。
AIOps的发展是一种从工业界到学术界,再由二者相结合的过程,AIOps的产生最初是由设计工程师们在一些诸如智能化的异常检测,智能化的容量切换调度,智能化的问答这类问题上进行尝试后,逐步由具体的功能点汇聚成了AIOps这种体系结构。对于运维来说,无外乎解决三方面问题即:质量,成本,效率。AIOps分别关注了这三个领域中的质量监控,根因分析,故障自愈,容量,调度,无人值守,运维机器人等必不可少的运维应用场景,通过对这些场景的研究来更好的达到人工智能运维的目标。
AIOps的发展是一种从工业界到学术界,再由二者相结合的过程,AIOps的产生最初是由设计工程师们在一些诸如智能化的异常检测,智能化的容量切换调度,智能化的问答这类问题上进行尝试后,逐步由具体的功能点汇聚成了AIOps这种体系结构。对于运维来说,无外乎解决三方面问题即:质量,成本,效率。AIOps分别关注了这三个领域中的质量监控,根因分析,故障自愈,容量,调度,无人值守,运维机器人等必不可少的运维应用场景,通过对这些场景的研究来更好的达到人工智能运维的目标。
如何孵化具有AIOps能力的产品?
1.搭建AIOps需要哪些部分?
2.AIOps系统搭建案例
AIOps的搭建同样离不开好的团队,下图来自于《企业级AIOps实施建议》白皮书中AIOps团队的构建建议。在AIOps的搭建过程中,只有将算法与开发团队,运维团队形成良好的互动交流,才能更为高效的完成项目的搭建与开发。阿里巴巴GOC团队正是这样一个优秀的运维团队,并已积累了多个项目开发经验。下面将分享一些GOC团队利用AIOps解决实战问题的案例。(1) 阿里巴巴集团全球运行指挥中心
上图给出了GOC团队已具备的技术及条件。基于对系统智能化的探索,GOC团队发现其在很多运维层面已经具备了优势条件。在运维场景层面,GOC团队拥有很多可以应用算法的场景,比如业务指标监控,故障定级/决策调度,故障相关信息流转等。在算法层面,GOC通过专业的算法团队研制出了智能基线,规则引擎及Chatbot等主要算法。而算法的背后,离不开海量数据的支持,GOC团队通过与阿里巴巴其他团队的业务合作得到海量的数据,将这些数据加以孵化来得到更多高质量的算法。在团队支持层面,GOC团队拥有专业的算法团队,监控中心运维团队,工程研发团队等多团队的支持。正是这些客观主观因素决定下,GOC团队做到了很多优秀的实现案例。
1精准性:算法拥有精准全面的异常发现及触发警报的能力
2健壮性:算法长期经受各种外部攻击及爬虫的内部压测干扰的历练,目前已具备了对干扰攻击较好的抵抗能力。
3高效性:算法可以很好的支持秒级与分钟级计算,无需任何人工监控配置。使用该算法的人员无需随业务变化对算法进行调参,算法可自己通过对规律的学习适应业务的变化。
4普世性:算法支持各个行业的业务数据,并可一键接入各类监控系统数据。
而对于运维人员较常见的系统级指控指标(如CPU,网络的流量等),GOC团队同样也演化出了一种适用于系统级(应用级)指标的轻量级算法异常检测算法。这种算法的效果如下图。
(2)千锤百炼的“智能基线”
阿里巴巴有很多业态,在GOC算法分析团队看来,这些业态的特征比较分散且特征的区别很大。GOC研究的智能基线算法可以精确的发现在线业务指标的异常,且此过程中不需要任何人工配置的成本。算法会自动通过历史趋势去学习数据曲线的客观规律,并可以很好的应对不同行业产生的数据。为了更加优化算法对数据的兼容性,智能基线算法通过在线预测的功能(即算法对往后一段时间的数据进行逐点预测),完成了对长期历史规律与近期历史规律较好的折衷。同时,GOC团队吸收了运维同学值班时标注的经验,让人对不同业务的容忍程度这一十分难以琢磨的因素也能优雅的在算法中体现出来。通过这些复杂的设计,算法可以很好的适配数据曲线中的波动毛刺及随业务产生的高低起伏。在阿里巴巴内部,智能基线算法已产生了很好的效果。以本算法为基础,GOC团队发现运维业务的故障发现准确率及故障召回率得到了成倍的提升,企业以此可以每周节省的流程操作时间达29个小时之多。概括来讲,智能基线算法有以下的特点。1精准性:算法拥有精准全面的异常发现及触发警报的能力
2健壮性:算法长期经受各种外部攻击及爬虫的内部压测干扰的历练,目前已具备了对干扰攻击较好的抵抗能力。
3高效性:算法可以很好的支持秒级与分钟级计算,无需任何人工监控配置。使用该算法的人员无需随业务变化对算法进行调参,算法可自己通过对规律的学习适应业务的变化。
4普世性:算法支持各个行业的业务数据,并可一键接入各类监控系统数据。
而对于运维人员较常见的系统级指控指标(如CPU,网络的流量等),GOC团队同样也演化出了一种适用于系统级(应用级)指标的轻量级算法异常检测算法。这种算法的效果如下图。
这种算法可智能化的将海量数据中一些离群异常的且对运维人员较重要的数据自动检测出来,而且此过程不需要任何的人工成本。同时由于体量较轻的缘由,算法可被用于普世海量级别的系统工程当中。这也使得此类算法拥有了精准,轻量,便捷的特点。
(3)不断演进的根因分析能力
在运维问题被算法发现后,往往要同时进行问题的恢复及分析工作。GOC团队通过不断的探究实验,演进出一套较为先进的根因分析算法。下面将对其中主要算法进行介绍。单指标多维下钻分析
这种算法适用于单一指标的监控。当业务指标出现总量异常时,单指标多维下钻分析算法往往可以在秒级的时间内准确地定位到出现异常的分量或分量组合。多指标相关性分析
相信运维同学都曾有过“业务中的各个指标都是有关联的”这种感受。当业务量庞大之后,仅靠人力无法维护大量这种数据之间的关系。多指标相关性算法可以动态的发现并识别业务中相关的关系,在确定数据之间的关系后,算法可以做如下图中两方面的分析。(1)当指标出现异常时,算法会动态发现有相似下跌形态的相关指标,以此为异常原因定位提供重要线索。
(2)算法通过离线的分析,可发现业务报警之间的关联规则。当单业务异常时,算法将对其他关联业务进行提前预警,帮助运维人员做好准备工作。
可疑应用/事件分析
对于阿里巴巴这种拥有近百万的服务器规模,数十万应用程序分组的集团来说。出现问题时,则将会导致海量的事件。在阿里巴巴,每分钟发生的运维配置变更达4500到8000次,当一个故障持续5分钟时,则将产生上万级别的事件,这个时候会很难区别可疑事件及可疑程序。
而GOC团队研究的可疑应用/事件分析算法很好的解决了这个问题。算法利用类似类推和奇异值分解等方法,可在秒级单位内给出相应的可疑分析,并将最可疑的应用排列推送给运维人员。运维人员通过这种高效的分析方式,可将故障问题的代价减少。
AIOps智能监控产品体系
本文由云栖志愿小组郭思乔整理