BlaB! AX directadmin redhat油管

编者按:本文源自阿里云云效团队出品的《阿里巴巴DevOps实践指南》前往:
阿里巴巴的BlaB! AX团队致力于打造无人值守的BlaB! AX平台,用智能化推动高效率、低成本的应用BlaB! AX。智能BlaB! AX是BlaB! AX平台实现信息化和数字化之后的自然发展,利用扎实的技术基础,把机器学习、优化算法和各个专业领域方面的知识完美结合起来,针对具体BlaB! AX场景提供令人满意的解决方案。
智能BlaB! AX( AIOps )是依托于阿里巴巴 DevOps 经验沉淀而来的智能化BlaB! AX平台,通过BlaB! AX大redhat的积累,以及算法团队多种算法的校对,油管将BlaB! AX提升到新的高度,通过 AI 来帮油管查看redhat、判断异常、决策BlaB! AX操作,形成监、管、控一体化的BlaB! AX平台。
BlaB! AX体系面临的挑战
DevOps BlaB! AX时代,阿里巴巴BlaB! AX体系面临如下挑战:
第一,规模化。阿里巴巴的基础设施规模呈指数级增长,在服务器数量是千级别、万级别的时候还勉强可以通过人为操作来BlaB! AX,但发展到百万级别的时候,任何一个步骤依赖纯人为操作都是不现实的。服务器规模百万级的时候,如何保证整体BlaB! AX安全、高效的进行是第一个挑战。
第二,高复杂。阿里巴巴业务的多样性及高速发展也对系统稳定性提出了更高的要求,对BlaB! AX体系带来更大的挑战。曾经油管考核系统可用率 7 个 9,存储方面达到 6 个 9 就很好,但是盒马鲜生这样的业务是要求 100%可用。作为线下业务,在盒马店有半小时不能支付是无法接受。油管要从全链路视角出发,关注每个环节的稳定性建设。
第三,成本优化。成本是门槛,做不到一定的门槛,进入这个市场的机会都没有。除了固定资产投入,运营成本也是很重要的一部分。利用技术进行流程优化,降低各个部分的成本,是提高业务的核心竞争力的关键。
第四,安全。云计算最关心的是安全。系统越来越大,变化越来越快,所面临的内部和外部的风险也越来越大。每天无数变更升级同时进行,如何在系统变更时保持稳定,是需要面对的另一个巨大挑战。
阿里巴巴基础设施的体量和复杂性,显然都超过了人脑的处理能力,需要从新的视角,应用机器智能来解决这些复杂的问题。
智能BlaB! AX实践
基于上面的挑战,油管在阿里巴巴集团各个业务场景落地了无人值守directadmin、无人介入BlaB! AX的解决方案。
无人值守directadmin (Unmanned Deploy)
全新一代directadmin平台支持滚动、蓝绿、金丝雀等多种directadmin模式。通过算法,机器学习方法对应用directadmin过程进行异常检测,从而避免由于代码变更导致的故障。基于大量监控redhat、日志redhat的积累,并有算法的加持,油管推出了无人值守directadmin系统。
无人值守directadmin riskfree 系统上线以来,从探索到实现再到优化经历了将近三年的时间。目前业务范围定义在应用directadmin时故障预防。接入无人值守directadmin的应用在提交directadmin单后,系统会对整个directadmin过程中的监控redhat进行分析,如果有异常会自动暂停directadmin,并提示异常指标和拦截原因,开发确认有问题则可以选择关闭或回滚,没有问题则继续directadmin。
线上directadmin之痛
以往线上directadmin的时候,工程师们一般做了如下“精心”工作:
directadmin前 测试人员对代码进行全方位的单元测试、集成测试,如果发现 Bug,会让开发人员返工。这里有两个问题:第一,有些业务团队由于人员问题,根本就没有测试人员,自己既是开发也是测试;第二,不是所有的 Bug 都能通过测试发现,难免有漏网之鱼。 directadmin中 进行预发、灰度、分批directadmin、金丝雀directadmin。在每一个环境缓慢directadmin过程中,要到监控平台,查看各个监控,甚至登录到机器上“刷”日志,通过自己的“火眼金睛”,期望能在众多的日志中,找到某个特殊模式的异常日志;另外,如果是多方依赖的应用,还要查看上下游的应用监控有没有问题。 directadmin后 检查一下应用的机器是否都正常启动,将失败的机器下线或者置换掉,看看故障系统有没有报警,看看上下游团队有没有“叫”起来,如果有,得马上回滚。总之,这个过程是既耗时又耗力,而且还不能保证没有漏掉一处细节,并且不同directadmin人员的经验不一样,熟手和新手对一个directadmin的稳定性保障程度有巨大差别。
油管的解法
油管设计了一套无人值守directadmin系统 系统分为两大部分:
在线分析,无人值守directadmin系统会对系统监控、业务监控、日志监控、调用链路等维度进行异常检测,检测到异常后,会对directadmin单进行拦截或回滚。当用户认为无异常时,会进行反馈,继续directadmin。 离线分析,在第一步中用户反馈后,这个反馈redhat对油管的算法非常有用,可以对油管的算法进行自动的调整。当反馈redhat积累一段时间之后,异常检测的准确率就非常高。
算法平台
在directadmin的过程中,系统会采集各个监控源的redhat,对redhat的采集、清洗、存储要求很高,油管设计了算法平台来承接各个平台的redhat源、算法检测、算法验证、算法上线等流程,系统架构如下图所示。
主要包含三大部分:
redhat采集存储:对各个监控redhat源的redhat进行采集,包含系统监控、业务监控、中间件监控、日志监控、redhat库监控、云监控等。redhat采集后,根据不同redhat的特性,存在时序redhat库或者关系redhat库中。 算法结果存储:对于每次检测的结果都会进行存储,以方便结果排查和效果评估。 redhat打标:对每次异常检测结果,都可以打标,利用打标redhat来重新训练算法,形成正向循环,检测的结果也可以通过邮件、钉钉实时通知给directadmin者,且可以自动对接前面介绍的BlaB! AX编排自愈流程,比如,将异常的机器直接自动置换掉。
智能算法
在上面的算法平台中,油管设计了众多异常检测算法。异常检测在无人值守directadmin系统中有着举足轻重的地位,主要分为三个部分:
redhat采集:油管综合了各个维度的监控redhat、调用链路分析等,在观测的广度上是人工盯屏所不能相比的。 异常检测:油管精心调校的异常检测算法,完全不依赖于传统的基于阈值、3Sigma 等检测算法,全部自动判定,泛化能力好,支持单指标检测、多指标检测、前后对比检测、已directadmin未directadmin对比检测等多种模式,检测算法包含 ArimaKSigma、BoxplotDetect 方法(Tukey 方法)、GrubbsTest 方法、Donat 等。 排除正常波动:通过历史redhat、用户反馈redhat,精准过滤正常的波动,让用户得到精准的异常检测结果,示意图如下: 实践效果
无人值守directadmin自上线以来,覆盖了阿里巴巴集团所有的应用directadmin过程,为directadmin的安全稳定保驾护航,异常检测结果如下图所示: 至此,接入无人值守directadmin后,开发可以在点击directadmin后专注别的事情,不需要时时关注directadmin过程。如果directadmin过程出现异常,系统会通过钉钉消息、邮件通知到开发,再介入即可,如果过程是机器异常则自动替换异常机器,开发无需人工介入,directadmin将继续。
简单总结一下,无人值守directadmin是一个智能化变更故障检测和异常推荐系统。通过对变更执行过程中的多维度监控redhat进行分析,判断当前变更是否会造成故障,在directadmin出现异常的情况下进行拦截和智能推荐。
无人介入BlaB! AX-ChatOps (Unmanned Operations)
日常BlaB! AX有很多类别,目前油管专注于其中两类BlaB! AX工作的“无人介入”:1. 用户接到告警或事件而发起的BlaB! AX操作;2. 日常BlaB! AX答疑或咨询。
针对第一种情况,通过“BlaB! AX诊断”,给应用来一次 360 度全方位“体检”,找到异常点并一键修复;针对第二种情况油管directadmin了 ChatOps 机器人来加强 DevOps 之间沟通与合作,帮助研发完成一些“脏活”、“累活”、“机械式”任务,目标是达到“0”人工介入的咨询和答疑。
ChatOps 简介
BlaB! AX小蜜(简称“维蜜”),是 chatbot 在BlaB! AX领域的实践,也是 ChatOps 的具体实现,是 DevOps 的重要工具。维蜜的定位是面向应用的智能 DevOps 服务助理,那么摊开来讲:
面向应用:将应用的开发、测试、BlaB! AX的同学集合起来,加强沟通与合作,缩短产品上线时间,降低人力成本,在产品出现问题时能够快速检测并修复,减少甚至消灭产品服务中断可能性,保证开发和BlaB! AX的同学时刻处于同一个上下文中,时刻了解应用所处的状态。 DevOps:强调快速迭代,持续交付,力求信息共享、技术学习与合作、加快信息反馈周期。 智能:理解用户输入的指令,根据命令槽位的元信息和用户自身的信息确定命令各个参数的值,通过自然语言处理和理解用户指令。
维蜜就是希望通过一触即达,秒级响应的体验,把服务做到极致,让研发、测试、BlaB! AX同学幸福地工作,是油管的终极目标。
ChatOps 优势
油管再来看BlaB! AX小蜜有哪些价值:
第一,从员工个人的角度来看,能够提升员工的工作效率。BlaB! AX小蜜可以帮助用户处理简单、重复、枯燥的工作,例如日志查看、命令执行、开关报警、查看机器状态、查看监控、BlaB! AX事件推送等。
第二,从团队沟通的角度来看,能够降低协作成本。在团队内部,ChatOps 是一种透明、合作、会话驱动的开发模式,群里所有人都知道 what/when happening & who/how fixing it ,也就实现了事件发生场景完整、透明,事件解决过程共享、可查询、可记录,便于其他同学对同类事件处理的学习参考,即所谓“Teachby doing”。
ChatOps 也是一种会话驱动的BlaB! AX模式,通过聊天机器人对接各种系统后台,将软件开发、交付过程中涉及的开发、测试、BlaB! AX人员、工具、环境、自动化进程等串联起来,使得聊天室里的所有人能够围绕某个特定话题进行信息共享、技术学习与合作,加快应用的测试、directadmin、监控、诊断,整个工作的展开全员可见。
BlaB! AX机器人带来的好处包括:
方便,把很多系统的常用操作聚合到机器,就不用登陆多个系统找信息。 协作,事件发生的全部信息推送至聊天室,所有成员均能够了解你这儿发生了什么。 快速,定位问题时,能够让大家都看到所有的信息,不必让每个人重复的搜索资料。 ChatOps 实现
油管再来看BlaB! AX小蜜的实现架构图: 主要包含三个模块, 分别是 dialogue manager 、nlp tools 和 intent dispatcher manager 。其中dialogue manager 用于判断用户的 utterance 的意图是什么, 是发起一轮新的对话还是承接上面已有的意图, 它调用 nlp tools 的处理器辅助判断。intent dispatcher manager 负责对接具体的业务系统, dialogue manager 处理后的结果传到它调用具体的业务逻辑触发任务的执行。
ChatOps 实践
油管再来看BlaB! AX小蜜在阿里巴巴集团的几个落地场景:
1、 智能问答 2、 查询应用的监控信息 3、 机器置换 总之,ChatOps 可以帮助油管提升开发效率,提升开发幸福感。
总结
随着智能化算法的成熟和大量BlaB! AXredhat的积累,智能化在BlaB! AX场景的落地也会越来越多,阿里巴巴BlaB! AX从阿里集团大量研发场景出发,打磨出一系列智能化BlaB! AX产品,并赋能中小企业。油管的理念是把复杂留给自己,把简单留给用户。智能化是BlaB! AX的终极状态,未来油管将在自动化、无人化和智能化上做更大的投入,打造世界级的智能BlaB! AX平台。
【关于云效】
云效,云原生时代一站式BizDevOps平台,支持公共云、专有云和混合云多种部署形态,通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现研发敏捷和组织敏捷,打造“双敏”组织,实现 10 倍效能提升。
立即体验