阿里巴巴DevOps实践指南(二十四)| 智能运维

简介: 智能运维( AIOps )是依托于阿里巴巴 DevOps 经验沉淀而来的智能化运维平台,通过运维大数据的积累,以及算法团队多种算法的校对,我们将运维提升到新的高度,通过 AI 来帮我们查看数据、判断异常、决策运维操作,形成监、管、控一体化的运维平台。

image.png

编者按:本文源自阿里云云效团队出品的《阿里巴巴DevOps实践指南》,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电子书,了解阿里十年DevOps实践经验。

阿里巴巴的运维团队致力于打造无人值守的运维平台,用智能化推动高效率、低成本的应用运维。智能运维是运维平台实现信息化和数字化之后的自然发展,利用扎实的技术基础,把机器学习、优化算法和各个专业领域方面的知识完美结合起来,针对具体运维场景提供令人满意的解决方案。

智能运维( AIOps )是依托于阿里巴巴 DevOps 经验沉淀而来的智能化运维平台,通过运维大数据的积累,以及算法团队多种算法的校对,我们将运维提升到新的高度,通过 AI 来帮我们查看数据、判断异常、决策运维操作,形成监、管、控一体化的运维平台。

运维体系面临的挑战

DevOps 运维时代,阿里巴巴运维体系面临如下挑战:

第一,规模化。阿里巴巴的基础设施规模呈指数级增长,在服务器数量是千级别、万级别的时候还勉强可以通过人为操作来运维,但发展到百万级别的时候,任何一个步骤依赖纯人为操作都是不现实的。服务器规模百万级的时候,如何保证整体运维安全、高效的进行是第一个挑战。

第二,高复杂。阿里巴巴业务的多样性及高速发展也对系统稳定性提出了更高的要求,对运维体系带来更大的挑战。曾经我们考核系统可用率 7 个 9,存储方面达到 6 个 9 就很好,但是盒马鲜生这样的业务是要求 100%可用。作为线下业务,在盒马店有半小时不能支付是无法接受。我们要从全链路视角出发,关注每个环节的稳定性建设。

第三,成本优化。成本是门槛,做不到一定的门槛,进入这个市场的机会都没有。除了固定资产投入,运营成本也是很重要的一部分。利用技术进行流程优化,降低各个部分的成本,是提高业务的核心竞争力的关键。

第四,安全。云计算最关心的是安全。系统越来越大,变化越来越快,所面临的内部和外部的风险也越来越大。每天无数变更升级同时进行,如何在系统变更时保持稳定,是需要面对的另一个巨大挑战。

阿里巴巴基础设施的体量和复杂性,显然都超过了人脑的处理能力,需要从新的视角,应用机器智能来解决这些复杂的问题。

image.png

智能运维实践

基于上面的挑战,我们在阿里巴巴集团各个业务场景落地了无人值守发布、无人介入运维的解决方案。

无人值守发布 (Unmanned Deploy)

全新一代发布平台支持滚动、蓝绿、金丝雀等多种发布模式。通过算法,机器学习方法对应用发布过程进行异常检测,从而避免由于代码变更导致的故障。基于大量监控数据、日志数据的积累,并有算法的加持,我们推出了无人值守发布系统。

无人值守发布 riskfree 系统上线以来,从探索到实现再到优化经历了将近三年的时间。目前业务范围定义在应用发布时故障预防。接入无人值守发布的应用在提交发布单后,系统会对整个发布过程中的监控数据进行分析,如果有异常会自动暂停发布,并提示异常指标和拦截原因,开发确认有问题则可以选择关闭或回滚,没有问题则继续发布。

线上发布之痛

以往线上发布的时候,工程师们一般做了如下“精心”工作:

  • 发布前

测试人员对代码进行全方位的单元测试、集成测试,如果发现 Bug,会让开发人员返工。这里有两个问题:第一,有些业务团队由于人员问题,根本就没有测试人员,自己既是开发也是测试;第二,不是所有的 Bug 都能通过测试发现,难免有漏网之鱼。

  • 发布中

进行预发、灰度、分批发布、金丝雀发布。在每一个环境缓慢发布过程中,要到监控平台,查看各个监控,甚至登录到机器上“刷”日志,通过自己的“火眼金睛”,期望能在众多的日志中,找到某个特殊模式的异常日志;另外,如果是多方依赖的应用,还要查看上下游的应用监控有没有问题。

  • 发布后

检查一下应用的机器是否都正常启动,将失败的机器下线或者置换掉,看看故障系统有没有报警,看看上下游团队有没有“叫”起来,如果有,得马上回滚。总之,这个过程是既耗时又耗力,而且还不能保证没有漏掉一处细节,并且不同发布人员的经验不一样,熟手和新手对一个发布的稳定性保障程度有巨大差别。

我们的解法

我们设计了一套无人值守发布系统

image.png

系统分为两大部分:

  1. 在线分析,无人值守发布系统会对系统监控、业务监控、日志监控、调用链路等维度进行异常检测,检测到异常后,会对发布单进行拦截或回滚。当用户认为无异常时,会进行反馈,继续发布。
  2. 离线分析,在第一步中用户反馈后,这个反馈数据对我们的算法非常有用,可以对我们的算法进行自动的调整。当反馈数据积累一段时间之后,异常检测的准确率就非常高。

算法平台

在发布的过程中,系统会采集各个监控源的数据,对数据的采集、清洗、存储要求很高,我们设计了算法平台来承接各个平台的数据源、算法检测、算法验证、算法上线等流程,系统架构如下图所示。

image.png

主要包含三大部分:

  1. 数据采集存储:对各个监控数据源的数据进行采集,包含系统监控、业务监控、中间件监控、日志监控、数据库监控、云监控等。数据采集后,根据不同数据的特性,存在时序数据库或者关系数据库中。
  2. 算法结果存储:对于每次检测的结果都会进行存储,以方便结果排查和效果评估。
  3. 数据打标:对每次异常检测结果,都可以打标,利用打标数据来重新训练算法,形成正向循环,检测的结果也可以通过邮件、钉钉实时通知给发布者,且可以自动对接前面介绍的运维编排自愈流程,比如,将异常的机器直接自动置换掉。

智能算法

在上面的算法平台中,我们设计了众多异常检测算法。异常检测在无人值守发布系统中有着举足轻重的地位,主要分为三个部分:

  1. 数据采集:我们综合了各个维度的监控数据、调用链路分析等,在观测的广度上是人工盯屏所不能相比的。
  2. 异常检测:我们精心调校的异常检测算法,完全不依赖于传统的基于阈值、3Sigma 等检测算法,全部自动判定,泛化能力好,支持单指标检测、多指标检测、前后对比检测、已发布未发布对比检测等多种模式,检测算法包含 ArimaKSigma、BoxplotDetect 方法(Tukey 方法)、GrubbsTest 方法、Donat 等。
  3. 排除正常波动:通过历史数据、用户反馈数据,精准过滤正常的波动,让用户得到精准的异常检测结果,示意图如下:

image.png

实践效果

无人值守发布自上线以来,覆盖了阿里巴巴集团所有的应用发布过程,为发布的安全稳定保驾护航,异常检测结果如下图所示:

image.png

至此,接入无人值守发布后,开发可以在点击发布后专注别的事情,不需要时时关注发布过程。如果发布过程出现异常,系统会通过钉钉消息、邮件通知到开发,再介入即可,如果过程是机器异常则自动替换异常机器,开发无需人工介入,发布将继续。

简单总结一下,无人值守发布是一个智能化变更故障检测和异常推荐系统。通过对变更执行过程中的多维度监控数据进行分析,判断当前变更是否会造成故障,在发布出现异常的情况下进行拦截和智能推荐。

无人介入运维-ChatOps (Unmanned Operations)

日常运维有很多类别,目前我们专注于其中两类运维工作的“无人介入”:1. 用户接到告警或事件而发起的运维操作;2. 日常运维答疑或咨询。

针对第一种情况,通过“运维诊断”,给应用来一次 360 度全方位“体检”,找到异常点并一键修复;针对第二种情况我们发布了 ChatOps 机器人来加强 DevOps 之间沟通与合作,帮助研发完成一些“脏活”、“累活”、“机械式”任务,目标是达到“0”人工介入的咨询和答疑。

ChatOps 简介

运维小蜜(简称“维蜜”),是 chatbot 在运维领域的实践,也是 ChatOps 的具体实现,是 DevOps 的重要工具。维蜜的定位是面向应用的智能 DevOps 服务助理,那么摊开来讲:

  • 面向应用:将应用的开发、测试、运维的同学集合起来,加强沟通与合作,缩短产品上线时间,降低人力成本,在产品出现问题时能够快速检测并修复,减少甚至消灭产品服务中断可能性,保证开发和运维的同学时刻处于同一个上下文中,时刻了解应用所处的状态。
  • DevOps:强调快速迭代,持续交付,力求信息共享、技术学习与合作、加快信息反馈周期。
  • 智能:理解用户输入的指令,根据命令槽位的元信息和用户自身的信息确定命令各个参数的值,通过自然语言处理和理解用户指令。

维蜜就是希望通过一触即达,秒级响应的体验,把服务做到极致,让研发、测试、运维同学幸福地工作,是我们的终极目标。

ChatOps 优势

我们再来看运维小蜜有哪些价值:

第一,从员工个人的角度来看,能够提升员工的工作效率。运维小蜜可以帮助用户处理简单、重复、枯燥的工作,例如日志查看、命令执行、开关报警、查看机器状态、查看监控、运维事件推送等。

第二,从团队沟通的角度来看,能够降低协作成本。在团队内部,ChatOps 是一种透明、合作、会话驱动的开发模式,群里所有人都知道 what/when happening & who/how fixing it ,也就实现了事件发生场景完整、透明,事件解决过程共享、可查询、可记录,便于其他同学对同类事件处理的学习参考,即所谓“Teachby doing”。

ChatOps 也是一种会话驱动的运维模式,通过聊天机器人对接各种系统后台,将软件开发、交付过程中涉及的开发、测试、运维人员、工具、环境、自动化进程等串联起来,使得聊天室里的所有人能够围绕某个特定话题进行信息共享、技术学习与合作,加快应用的测试、发布、监控、诊断,整个工作的展开全员可见。

运维机器人带来的好处包括:

  1. 方便,把很多系统的常用操作聚合到机器,就不用登陆多个系统找信息。
  2. 协作,事件发生的全部信息推送至聊天室,所有成员均能够了解你这儿发生了什么。
  3. 快速,定位问题时,能够让大家都看到所有的信息,不必让每个人重复的搜索资料。

image.png

ChatOps 实现

我们再来看运维小蜜的实现架构图:

image.png

主要包含三个模块, 分别是 dialogue manager 、nlp tools 和 intent dispatcher manager 。其中dialogue manager 用于判断用户的 utterance 的意图是什么, 是发起一轮新的对话还是承接上面已有的意图, 它调用 nlp tools 的处理器辅助判断。intent dispatcher manager 负责对接具体的业务系统, dialogue manager 处理后的结果传到它调用具体的业务逻辑触发任务的执行。

ChatOps 实践

我们再来看运维小蜜在阿里巴巴集团的几个落地场景:
1、 智能问答

image.png

2、 查询应用的监控信息

image.png

3、 机器置换

image.png

总之,ChatOps 可以帮助我们提升开发效率,提升开发幸福感。

总结

随着智能化算法的成熟和大量运维数据的积累,智能化在运维场景的落地也会越来越多,阿里巴巴运维从阿里集团大量研发场景出发,打磨出一系列智能化运维产品,并赋能中小企业。我们的理念是把复杂留给自己,把简单留给用户。智能化是运维的终极状态,未来我们将在自动化、无人化和智能化上做更大的投入,打造世界级的智能运维平台。

免费下载《阿里巴巴DevOps实践指南》

阿里巴巴合伙人和业界多位大佬力荐、何勉、陈鑫等17位阿里资深技术专家联袂出品、阿里十年DevOps经验沉淀总结、阿里巴巴DevOps落地实践一本通。

前往:https://developer.aliyun.com/topic/devops,下载完整版电子书。

image.png

相关文章
|
8天前
|
运维 Devops 持续交付
自动化运维的魔法:打造高效DevOps流水线
【10月更文挑战第34天】在数字化时代的浪潮中,DevOps成为企业追求敏捷、高效和稳定的关键。本文将通过一个真实案例,展示如何构建一个高效的DevOps流水线,实现从代码提交到部署的全自动化流程。我们将探讨流水线设计的哲学、工具选择以及面临的挑战,并分享实际的代码示例和操作步骤,帮助读者理解自动化运维的精髓。
23 2
|
14天前
|
运维 Devops 测试技术
自动化运维的魔法——打造高效的DevOps流程
【10月更文挑战第28天】在数字化浪潮不断推进的今天,企业对运维效率的追求如同古人探索魔法一般充满好奇与渴望。本文将带你走进自动化运维的世界,揭秘如何通过DevOps实践,实现从代码到部署的无缝连接,提升企业的IT运营效能。我们将一起探索自动化工具的选择与配置,以及如何构建一个既能快速响应业务需求,又能保障系统稳定性的高效流程。
|
17天前
|
运维 Prometheus 监控
自动化运维之路:从脚本到DevOps
【10月更文挑战第25天】在数字化时代的浪潮中,运维不再是简单的服务器管理,而是成为了企业竞争力的核心。本文将带你走进自动化运维的世界,探索如何通过技术手段提升效率和稳定性,以及实现快速响应市场的能力。我们将一起学习如何从基础的脚本编写进化到全面的DevOps实践,包括工具的选择、流程的优化以及文化的建设。无论你是运维新手还是资深专家,这篇文章都将为你提供有价值的见解和实用的技巧。
17 3
|
1月前
|
人工智能 运维 Devops
自动化运维之路:从脚本到DevOps的转变
【10月更文挑战第7天】在这篇文章中,我们将一起探索自动化运维的演变历程,从最初的简单脚本到现代的DevOps实践。我们将深入理解自动化如何改变了运维工作的本质,并讨论实现这一转变的关键技术和策略。文章将不包含代码示例,而是聚焦于理念、工具和方法论的介绍,旨在为读者提供一个全面的自动化运维框架视图。
|
1月前
|
运维 监控 Devops
自动化运维的魔法:打造高效DevOps流水线
【10月更文挑战第6天】 在现代软件开发的快节奏中,自动化运维成为提高效率、保障质量的重要手段。本文将带你了解如何构建高效的DevOps流水线,从持续集成到部署,再到监控和反馈,我们将一步步揭开自动化运维的神秘面纱。你将学习到如何通过代码和工具的结合,实现软件交付过程的自动化,以及如何通过这一流程提升团队的协作和响应速度。让我们开始探索自动化运维的奇妙之旅吧!
|
1月前
|
运维 Devops jenkins
自动化运维之路:从脚本到DevOps
【9月更文挑战第31天】在数字化时代的浪潮中,运维不再是单纯的系统维护,而是企业竞争力的加速器。本文将带你领略自动化运维的演变历程,从最初的脚本编写到现代DevOps实践的转变,揭示如何通过持续集成和持续交付(CI/CD)实现运维的高效与创新。我们将一起探索工具的选择、流程的优化以及文化的培养,让运维工作变得既简单又强大。
|
2月前
|
运维 Prometheus 监控
运维中的自动化工具与实践指南
本文深入探讨了自动化工具在IT运维中的重要性,提供了多种实用工具的推荐与应用实例。通过分析自动化工具如何提升运维效率、减少错误率,我们将揭示其在现代信息技术管理中的核心价值。无论你是IT新手还是经验丰富的专家,都能从中汲取到有益的知识,进而提升你的工作效果。
|
2月前
|
运维 Devops 大数据
自动化运维之路:从脚本到DevOps的转变
【9月更文挑战第24天】在数字化时代的浪潮中,企业对运维的要求越来越高。本文将探讨如何通过自动化工具和DevOps文化,提升运维效率,确保系统的稳定性和安全性。我们将一起走进自动化运维的世界,了解其背后的理念和技术实现,以及它如何改变我们的工作方式。
49 2
|
2月前
|
存储 运维 监控
构建高效运维体系:从监控到自动化的全方位实践指南
在当今数字化时代,企业对运维(Operations)的需求日益增长。运维不仅仅是保持系统运行那么简单,它涉及到监控、日志管理、故障排除、性能优化和自动化等多个层面。本文将从实际操作的角度出发,详细探讨如何构建一个高效的运维体系。通过具体案例,我们将了解不同运维工具和方法的应用,以及它们是如何帮助企业提高生产效率和降低运营风险的。无论你是刚接触运维的新手,还是经验丰富的专家,这篇文章都将为你提供宝贵的参考和启示。
|
2月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
194 3