网易游戏AIOps实践:异常检测的优化策略与平台化建设
本次分享主要介绍如下几点:
AIOps路线规划异常检测平台化建设故障管理智能化
AIOps即智能运维,是 Gartner 在2016年提出的概念。最初的定义是Algorithm IT Operations,指通过机器学习,数据仓库以及大数据等技术手段,将人工智能应用于运维领域,基于运维产生的数据(日志,监控,应用等)进行分析决策,得出最佳的运维策略,并随着技术的成熟,最终走向无人化运维。
一、AIOps路线规划
1、AIOps能力阶段
罗马非一日建成,根据之前发布的企业级AIOps实施白皮书指出AIOps的发展主要有以下的五个阶段,这个在我们目前的实践过程也确实得到了验证。
开始尝试应用AI能力,还无较为成熟的单点应用。具备单场景的AI运维能力,可以初步形成供内部使用的学件。有由多个单场景AI运维模块串联起来的流程化AI运维能力,可以对外提供可靠的运维AI学件。主要运维场景均已实现流程化免干预AI运维能力,可以对外提供供可靠的AIOps服务。有核心中枢AI,可以在成本、质量、效率间从容调整,达到业务不同生命周期对三个方面不同的指标要求,可实现多目标下的最优或按需最优。
网易游戏智能运维团队于2018年开始进行算法研究以及具体落地场景的选择,后续在在线人数、异常检测、日志异常检测方面尝试单点应用突破,并取得显著的成效。目前通过串联各维度运维信息和报警信息来进村后故障发现和故障自愈的目的,达到多个单场景AI运维模块串联的流程化AI运维能力。
这里的学件指的是AI运维组件,由南京大学周志华老师原创,是指模型 规约,具有可重用、可演进、可了解的特性。
AIOps阶段
2、人员结构
相较于Devops,AIOps的人员结构肯定也发生了一些变化,最显著的变化就是加入了算法工程师这个角色。有的团队会倾向于叫算法开发研发工程师,也就是既具备算法的能力也具备平台开发能力的工程师。当然如果一个算法工程师能够具备良好的工程能力,这个对于整体的团队发展肯定是有正向影响的。但很抱歉,一个团队里要求每个算法工程师都具备良好的工程能力其实是比较困难的,特别的是在招人的时候会发现,算法和工程还是有一定割裂的。
所以我们团队的配置,更多是下面这三个角色:运维工程师,也可以说是我们的用户,他们负责向算法工程师提供具体的业务场景及需求,挖掘潜在的智能化场景,同时向平台研发工程提供平台开发的场景需求。另外就是平台研发工程师与算法工程师,一个主要负责工程化以及平台化的建设,懂一点算法,但其主要职责更多偏向工程开发。而算法工程师则注重算法对应业务的调研,开发以及调优,这种结构也是为做到术业有专攻的目的。
实际合作下来,这种合作方式极大地提升了业务开发的效率,但也存在一定技术盲区的问题。
3、业务领域
1)时间序列异常检测
时间序列数据是按时间顺序排列的、随时间变化且相互关联的数据序列。由于运维场景的特殊性,运维数据天生便与时间序列密切相关。AIOps提供的时间序列智能分析的能力,即是通过研究历史数据的变化趋势和内在性质,来实现时间序列预测,异常数据监测等无需人工参与的智能分析功能。
2)故障定位与根因分析
随着微服务的发展,业务组网愈加复杂,问题的定界定位分析变得尤为困难。故障的识别和诊断是运维场景中智能分析的核心部分。AIOps提供的故障识别和根因定位能力,即是通过数据挖掘的手段,综合故障数据和人工经验自动提取故障特征,自动定位故障。
3)文本处理分析
文本的处理有广阔的空间。AIOps提供了范围极广的文本处理分析的能力,涵盖信息提取,语义分析,智能搜索,对话系统等领域,提供可直接应用于产品策略的NLP技术能力。
4)聚类与相似性分析
将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。聚类即是根据某种相似性进行抽象的过程。AIOps提供的聚类和相似性分析服务,能够使用有监督或无监督算法,结合统计学特征,对给定格式的数据进行相似性聚类,从而极大的降低数据的识别和处理成本。
二、异常检测
1、问题
传统的静态阈值目前已经难以适配多变的业务场景,阈值过高会遗漏告警,阈值过低会引发告警风暴。时间序列指标的异常检测,不同于传统的静态阈值,用户不需要自己手动配置。AIOps通过机器学习算法结合人工标注结果,实现自动学习阈值,自动调节参数,提高告警的精确度和召回率。异常检测能够更适配业务多样化的需求,覆盖更多的异常类型。
2、适用场景
1)异常阈值难以定义难以明确定义正常、异常数据,没有明显的阈值界限。在不同的时间段有不同的阈值。有一些数据的异常突变没有达到预定义的阈值。需要识别的异常是与历史数据的某种表现模式的异常,无法设置阈值来检测。2)人工配置成本高不同的曲线配置不同的阈值,曲线很多的情况下人工配置成本很高。随着业务变化,预定义的阈值需要随之变化,运维成本高。本身含有噪声,难以区分噪声和异常数据,需要花费大量人力检测。
对于异常检测,其实网上很多文档或者书籍都给出了一些常用的算法或者工具,我们这方面相应用的也是这些算法或工具,当然了也做了许多相应的算法优化和调整,我这里给出一些我们团队的在这方面的思考跟策略。
无监督无数据标注成本统计 规则的方式可解释性强模型预测时延较低受曲线时间粒度的影响较小