AIOps在美团的探索与实践——故障发现篇

AIOps,最初的定义是AlgorithmITOperations,是利用运维算法来实现运维的自动化,最终走向无人化运维。随着技术成熟,逐步确定为ArtificialIntelligenceforITOperations——智能运维,将人工智能应用于运维领域,基于已有的运维数据(日志、监控信息、应用信息等),通过机器学习的方式来进一步解决自动化运维无法解决的问题。

早期的运维工作大部分是由运维人员手工完成的,手工运维在互联网业务快速扩张、人力成本高企的时代,难以维系。于是,自动化运维应运而生,它主要通过可被自动触发、预定义规则的脚本,来执行常见、重复性的运维工作,从而减少人力成本,提高运维的效率。总的来说,自动化运维可以认为是一种基于行业领域知识和运维场景领域知识的专家系统。随着整个互联网业务急剧膨胀,以及服务类型的复杂多样,“基于人为指定规则”的专家系统逐渐变得力不从心,自动化运维的不足,日益凸显,当前美团在业务监控和运维层面也面临着同样的困境。

DevOps的出现,部分解决了上述问题,它强调从价值交付的全局视角,但DevOps更强调横向融合及打通,AIOps则是DevOps在运维(技术运营)侧的高阶实现,两者并不冲突。AIOps不依赖于人为指定规则,主张由机器学习算法自动地从海量运维数据(包括事件本身以及运维人员的人工处理日志)中不断地学习,不断提炼并总结规则。AIOps在自动化运维的基础上,增加了一个基于机器学习的大脑,指挥监测系统采集大脑决策所需的数据,做出分析、决策,并指挥自动化脚本去执行大脑的决策,从而达到运维系统的整体目标。综上看,自动化运维水平是AIOps的重要基石,而AIOps将基于自动化运维,将AI和运维很好地结合起来,这个过程需要三方面的知识:

美团技术团队在行业、业务领域知识和运维领域的知识等方面有着长期的积累,已经沉淀出不少工具和产品,实现了自动化运维,同时在AIOps方面也有一些初步的成果。我们希望通过在AIOps上持续投入、迭代和钻研,将之前积累的行业、业务和运维领域的知识应用到AIOps中,从而能让AIOps为业务研发、产品和运营团队赋能,提高整个公司的生产效率。

AIOps的建设可以先由无到局部单点探索,在单点探索上得到初步的成果,再对单点能力进行完善,形成解决某个局部问题的运维AI学件,再由多个具有AI能力的单运维能力点组合成一个智能运维流程。行业通用的演进路线如下:

所谓学件,亦称AI运维组件[1](南京大学周志华老师原创),类似程序中的API或公共库,但API及公共库不含具体业务数据,只是某种算法,而AI运维组件(或称学件),则是在类似API的基础上,兼具对某个运维场景智能化解决的“记忆”能力,将处理这个场景的智能规则保存在了这个组件中,学件(Learnware)=模型(Model)+规约(Specification)。AIOps具体的能力框架如下图1所示:

当前,我们在质量保障方面的诉求最迫切,服务运维部先从故障管理领域探索AIOps实践。在故障管理体系中,从故障开始到结束主要有四大核心能力,即故障发现、告警触达、故障定位、故障恢复。故障发现包含了指标预测、异常检测和故障预测等方面,主要目标是能及时、准确地发现故障;告警触达包含了告警事件的收敛、聚合和抑制,主要目标是降噪聚合,减少干扰;故障定位包含了数据收集、根因分析、关联分析、智能分析等,主要目标是能及时、精准地定位故障根因;故障恢复部分包含了流量切换、预案、降级等,主要目标是及时恢复故障,减少业务损失,具体关系如下图3所示:

其中在故障管理智能化的过程中,故障发现作为故障管理中最开始的一环,在当前海量指标场景下,自动发现故障和自动异常检测的需求甚为迫切,能极大地简化研发策略配置成本,提高告警的准确率,减少告警风暴和误告,从而提高研发的效率。除此之外,时序数据异常检测其实是基础能力,在后续告警触达、故障定位和故障恢复环节中,存在大量指标需要进行异常检测。所以将故障发现作为当前重点探索目标,解决当前海量数据场景下人工配置和运营告警策略、告警风暴和准确率不高的核心痛点。整个AIOps体系的探索和演进路线如下图4所示。每个环节均有独立的产品演进,故障发现-Horae(美团服务运维部与交易系统平台部共建项目)、告警触达-告警中心、故障定位-雷达、故障恢复-雷达预案。

在时序数据异常检测中,对于不同类型的时序数据,通常需要设置不同的告警规则。比如对于CPULoad曲线,往往波动剧烈,如果设置固定阈值,瞬时的高涨会经常产生误告,SRE和研发人员需要不断调整阈值和检测窗口来减少误告,当前,通过Radar(美团内部系统)监控系统提供的动态阈值策略,然后参考历史数据可以在一定程度上避免这一情况。如果系统能够提前预判该时序数据类型,给出合理的策略配置建议,就可以提升告警配置体验,甚至做到自动化配置。而且在异常检测中,时序数据分类通常也是智能化的第一步,只有实现智能化分类,才能自动适配相应的策略。

3.2.1分类器选择

根据当前监控系统中时序数据特点,以及业内的实践,我们将所有指标抽象成三种类别:周期型、平稳型和无规律波动型[6]。我们主要经历了三个阶段的探索,单分类器分类、多弱分类器集成决策分类和卷积神经网络分类。

3.2.2分类流程

我们选择CNN分类器进行时序数据分类,分类过程如下图6所示,主要步骤如下:

3.3.1异常检测方法

基于上述时序数据分类工作,本文能够相对准确地将时序数据分为周期型、平稳型和无规律波动型三类。在这三种类型中,周期型最为常见,占比30%以上,并且包含了大多数业务指标,业务请求量、订单数等核心指标均为周期型,所以本文优先选择周期型指标进行自动异常检测的探索。对于大量的时序数据,通过规则进行判断已经不能满足,需要通用的解决方案,能对所有周期型指标进行异常检测,而非一个指标一套完全独立的策略,机器学习方法是首选。

论文Opprentice[8]和腾讯开源的Metis[9]采用监督学习的方式进行异常检测,其做法如下:首先,进行样本标注得到样本数据集,然后进行特征提取得到特征数据集,使用特征数据集在指定的学习系统上进行训练,得到异常分类模型,最后把模型用于实时检测。监督学习整体思路[10]如下图8所示,其中(x1,y1),(x2,y2),…,(xn,yn)是训练数据集,学习系统由训练数据学习一个分类器P(Y∣X)或Y=f(X),分类系统通过学习到的分类器对新的输入实例xn+1进行分类,预测其输出的类别yn+1。

3.3.2异常注入

一般而言,在样本数据集中,正负样本比例如果极度不均衡(比如1:5,或者更悬殊),那么分类器分类时就会倾向于高比例的那一类样本(假如负样本占较大比例,则会表现为负样本Recall过高,正样本Recall低,而整体的Accuracy依然会有比较好的表现),在一个极度不均衡的样本集中,由于机器学习会对每个数据进行学习,那么多数数据样本带有的信息量就比少数样本信息量大,会对分类器学习过程中造成干扰,导致分类不准确。

在实际生产环境中,时序数据异常点是非常少见的,99%以上的数据都是正常的。如果使用真实生产环境的数据进行样本标注,将会导致正负样本比例严重失衡,导致精召率无法满足要求。为了解决基于监督学习的异常检测异常点过少的问题,本文设计一种针对周期型指标的自动异常注入算法,保证异常注入足够随机且包含各种异常场景。

通过上面的异常注入步骤,能比较好地模拟出周期型指标在生产环境中的各种异常场景,上述过程中各个步骤的数据都是随机产生,所以产生的异常案例各不相同,从而能为我们生产出足够多的异常样本。为了保证样本集的高准确性,我们对于注入异常后的指标数据还会进行标注,以去除部分注入的非异常数据。具体异常数据生成效果如图10所示,其中蓝色线为原始数据,红色线为注入的异常,可以看出注入异常与线上环境发生故障时相似,注入的异常随机性较大。

3.3.3特征工程

针对周期型指标,经标注产生样本数据集后,需要设计特征提取器进行特征提取,Opprentice中设计的几种特征提取器如图11所示:

3.3.4模型训练及实时检测

参考监督学习在分类问题中的应用思路,对周期型指标自动异常检测方案具体设计如图下13所示,主要分为离线模型训练和实时检测两大部分,模型训练主要根据样本数据集训练生成分类模型,实时检测利用分类模型进行实时异常检测。具体过程说明如下:

3.3.5特殊场景优化

3)整体抬升/下降场景:场景特点如下图15所示,在该场景下,会设置一个抬升/下跌率,比如80%,如果今天最近1h数据80%相对昨日和上周都上涨,则认为是整体抬升,都下跌则认为是整体下降。如果出现整体抬升情况,会降低模型敏感度,并且要求当前日环比、周同比在1h数据中均为异常点,才会判定当前的数据异常。

3.4.1Horae系统架构设计

3.4.2算法注册和模型编排

算法模型是对算法的抽象,通过唯一字符串标识算法模型,注册算法时需要指定算法的类型、接口、参数、返回值和处理单个时序点所需要加载的时序数据配置。成功注册的算法模型根据算法类型的不同,会生成用于模型编排的算法组件或对异常检测模型进行训练的组件。用于模型编排的算法组件主要包括:预处理算法、时序特征算法、评估算法、预测算法、分类算法、异常检测算法等,用于模型训练的算法分为两大类:参数调优和机器学习模型训练。

3.4.3离线训练和实时检测

3.4.4模型案例和结果评估

根据在周期型指标上探索的结果,在Horae上编排分类模型训练流程,训练和测试所使用的样本数是28000个,其中用于训练的比例是75%,用于验证的比例是25%,具体分类模型训练结果如下图22所示,在测试集上的准确率94%,召回率89%。同时编排了与之对应的执行流程,它的检测流程除了异常分类,还主要包含了空值填充、预检测、特征提取、分类判断、低峰期判断、偏移波动判断等逻辑,该执行流程适用范围是周期型和稳定型指标。除此之外,还提供了流程调优能力,检测流程中的每个算法可以暴露其超参数,对于具体的指标,通过该指标的样本数据可以训练得到该流程下的一组较优超参数,从而提高该指标的异常检测的精召率。

胡原、锦冬、俊峰,基础技术部-服务运维部工程师;长伟、永强,到家事业群-交易系统平台部工程师。

基础技术部-服务运维部-运维工具开发组-故障管理开发组主要负责故障发现、故障定位、故障恢复、故障运营、告警中心、风险管理、数据仓库等工作。目前团队诚招高级工程师、技术专家。欢迎有兴趣的同学投送简历至tech@meituan.com(邮件主题注明:运维工具)

THE END
1.网站设计方案(通用17篇)5、学校安排一名校领导(胡良校长)担任我校网站信息审核员,审核员要经常进行管理,发现不适合发布的信息“取消审核”,并通知网管进行删除。 四、站务管理规定 1、信息教师全面提供学校网站的建设与管理,系统构思、设计网站的架构,配合各部门及时、准确地将学校重大工作(活动)入网,为师生提供校园信息。 https://www.ruiwen.com/shejifangan/7234563.html
2.操作系统课程教学网站的设计与实现本文中所做的主要工作:介绍Win2000 +JSP(J2DK+TOMCAT)系统并且嵌入 JAVABEAN的一般原理;阐述整个操作系统教学网站的概要设计,系统结构及工作原理;分析了系统实现中的特殊性、难点和重点;详细设计实现学院介绍、教学资源、课程表、课堂教学、在线答疑、其他课程、课件下载、留言反馈、站内搜索、公告专栏、友情链接、校园https://blog.csdn.net/m0_51338938/article/details/141760363
3.网站系统总体设计方案建站资讯CSS教程随着互联网的普及和发展,越来越多的企业和个人开始注重网络营销和品牌推广,为了满足用户需求,提高网站性能和用户体验,我们提出了一份网站系统总体设计方案,该方案旨在设计一个功能全面、安全可靠、易于维护和扩展的网站系统,以满足不同用户的需求。 设计目标 https://www.cssjc.com/174276.html
4.基于S3C241OX微处理器和MC39i模块实现无线数据传输系统的设计1 系统硬件平台设计与实现 1.1 终端硬件平台总体介绍 本文的终端平台的无线接入模块采用西门子最新推出的 MC39i模块,并以 32位基于ARM920T的微处理器S3C241OX为核心。按照功能分类,本文所实现的硬件平台主要由微处理器单元、存储器单元、串口通讯单元、USB接口单元、电源单元、GPRS通讯模块单元以及JTAG接口单元组成,硬件https://www.elecfans.com/d/1614288.html
5.基于Springboot的漫画网站平台设计与实现java本文将基于Springboot实现开发一个漫画主题的网站,实现一个比漂亮的动漫连载的网站系统,界面设计优雅大方,比较适合做毕业设计和课程设计使用,需要的可以参考一下+ 目录 一、项目简介 本项目基于Springboot实现开发了一个漫画主题的网站,实现了一个比漂亮的动漫连载的网站系统。前端用户注册登陆后可以在线查看漫画连载信息https://www.jb51.net/article/257657.htm
6.基于Arduino的语音识别与控制系统实现AET摘要: 通过对Arduino开发板的研究,将声控技术引入到智能系统的设计当中,实现了一套基于Arduino的语音控制系统。本文首先确定了各硬件模块的选型,并在拟定了各模块之间的通信接口后对Arduino引脚资源进行整合、分配,搭建了系统的硬件平台。在软件设计部分,编写了监控程序、功能实现程序、中断服务程序,最终实现了对机械手的http://www.chinaaet.com/article/3000015511
7.城市旅游网站的设计与实现论文(精选6篇)一个优秀的网站必定有一个强大的数据库支持,数据库设计是指针对一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效的存储数据,满足各种用户的需要。下面是小编整理的城市旅游网站的设计与实现论文,欢迎参考。 城市旅游网站的设计与实现论文 篇1 https://biyelunwen.yjbys.com/fanwen/lvyouguanli/668985.html
8.基于B/S结构的物流信息管理平台实验系统的设计与实现在高职院校物流信息管理教学中,学生通过学习物流信息管理业务操作技术,是学习企业物流信息业务的前提,使用物流信息管理平台实验系统,是实现物流信息化教学的关键与核心。当前高职院校的物流教学体系中,把物流信息管理平台实验系统主要分成三部分:信息源、信息管理、信息传输。物流信息平台是物流企业通过行业信息的整理与加工,https://cdmd.cnki.com.cn/Article/CDMD-10183-1016091515.htm
9.电商平台java架构设计方案基于javaweb的电商设计与实现运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 功能说明 基于javaweb+springboot的电商书城平台系统(java+springboot+mysql+spring+jsp) JAVA springboot 电商书城平台系统(已调试) 主要实现了书城网站的浏览、加入购物车操作、https://blog.51cto.com/u_87634/8349794
10.基于Javaweb的新闻发布管理系统网站设计与实现数据库设计毕业本系统的目的是实现新闻发布系统的基本功能。新闻发布系统提供了不同类型新闻(如社会新闻、娱乐新闻和技术前沿新闻等) 满足不同用户需求;系统将用户分为:普通用户,系统管理员和新闻管理员。 普通用户能在本系统中进行新闻浏览,阅读,新闻搜索。每条新闻的标题被做成一个链接,用户点击它们就能跳转页面进行新闻阅读;新闻阅https://www.modb.pro/db/507656
11.基于Web校园网站系统的设计与实现.docx基于Web校园网站系统的设计与实现.docx,基于Web校园网站系统的设计与实现 摘要 由于科技快速发展,国际互联网连接的计算机近千亿台,积累了大量的信息资源,成为了信息时代最大的信息基地。管理模式的落后无法满足当前发展、老旧宣传方式也无法达到相应目的,很难对学校和https://m.book118.com/html/2024/0325/7036164020006056.shtm
12.蔡伟鸿基于EUCON数字版权保护运营平台的研发与应用 2009年网络系统维护项目 社保接口开发及实施 09年医院网络收费系统技术维护 基于网络环境的潮汕方言输入方法设计与实现 玩具产业动漫产品的设计协调和项目集成平台 高维数据聚类研究及在税务管理中的应用 法制专题网站 http://eng.stu.edu.cn/info/1082/1806.htm
13.基于SSM框架的生活论坛系统的设计与实现(附源码论文)随着世界互联网络化的发展与通讯技术水平的提升,它已经成为互联网时代很重要的一个消息沟通平台。本文将在对java技术和系统的需求情况进行深入分析基础上,结合不同研究人员开发技术的具体功能特点,设计了一个可扩展性较强的基于 java 的网上论坛系统。 本系统隶属于web企业信息系统服务的一个重要子系统,用户可以自我https://cloud.tencent.com/developer/article/1974045
14.超全面!交互设计师的工作流程指南优设网工作流程交互设计师的工作,不仅仅是输出设计方案,还需要参与前期的需求讨论、后期开发、测试验收等等产品设计与实现的多个环节。拿到一个新的项目需求后,从设计思考开始,产品前期分析,设计产品,设计评审,用户测试,直至产品上线。我们的工作流程如下:项目展开的过程https://www.uisdc.com/interaction-design-process
15.基于Web的在线考试系统设计与实现表现层是最上层,主要功能是实现系统数据的传入与输出。业务逻辑层的功能是对具体问题进行逻辑判断与执行操作,数据访问层是数据库的主要操控系统,实现数据的增删改查等操作 [18]。具体的系统架构设计如图2。 4.2.2. 业务流程设计 本系统业务流程覆盖组织考试、参与考试、查询成绩、管理资源等多个业务场景。 http://hanspub.org/journal/PaperInformation.aspx?paperID=54380