执行命令定义时出错_我们谈论AIOps时,聊些什么

从人力运维发展到传统的自动化运维体系,重复性运维工作的人力成本和效率问题得到有效解决。但在复杂场景下的故障自愈、变更管理、容量监测、服务资源分配中,仍需要人来掌控决策过程,这阻碍了运维效率的进一步提升。人工智能在运维场景中的落地,机器能够代替人来做出决策,使得完全自动化成为可能

What's:AIOps是什么

AIOps全景思维导图(原图可在知识星球`CloudTimesSmartSpace`上获取)

3de058f61b463e27f75fda886d9202c7.png

AIOps Xmind

按照自动化能力层级分类:运维、自动化运维、智能运维

  • 运维 运:运行,将服务Runing起来,以满足用户和客户的需求;深层的含义还有运筹,统筹安排资源,提供最有解决方案,以达到效益最大;维:维护,维护并监护服务的运行过程,包括应对服务管理请求和时间;维系/连接,具有承上启下的枢纽作用;运维的核心目标是将交付的业务软件和硬件基础设施高效合理的整合,转换为可持续提供高质量服务的产品,同时最大限度降低服务运行的成本,保障服务运行的安全
  • 自动化运维 自动化是以实现提高服务可用性、加速服务迭代以及降低服务运行花销成本为目标的手段。是通过总结、提炼、抽象形成系统化的解决方案和工程,基于运维面向的服务、产品、用户以及自动化运维实施对象的不同有多种实现方式
  • 智能运维(Artificial Intelligence IT Operations,简称AIOps) 目标是将人的知识和运维经验与大数据、机器学习技术相结合,开发成一系列的智能策略,融入到运维系统中提升运维效率
b23b51bca326435f876b83f9dcaf37c1.png

智能运维分级标准 L1 ~ L5

1. 执行能力 将指令发送到木的端(服务器、设备)执行并获得执行结果,是最基本的自动化要求(L1 ~ L2)

2. 感知能力 系统能够感知服务的运行状态、感知服务的变更需求甚至故障事件,并结合一些固定的规则来决策并执行(L3)

3. 规划能力 系统根据待处理的需求、待解决的问题的感知及对运维对象的认知,自主作出规划(解决方案)并在调度控制执行过程中,根据目标和运维对象的反馈适时调整执行规划。该能力由系统辅助人来进行只是、经验的沉淀以补充系统的扩展性,可以处理全部人类已知的运维工作,该层次的自动化运维系统具备一定的弱人工智能阶段(L4)

4. 主动学习能力 系统可以不依赖于人,自行总结、提炼、抽象形成知识和经验能力,即全部运维都可以交由自动化运维系统处理--强人工智能阶段(L5)

98163bc796543f7ace398fbe9344b816.png

智能运维分级标准

AIOps思路

6e8ae7175d6c10b9acfa3349f31ff193.png

AIOps思路

AIOps团队角色

236d2607095c6ccba477101ae60bde66.png

AIOps团队角色

AIOps整体功能框架

工程思想

cf3d9fd25dd8ef2ef714ad2bcf253cd1.png

工程思想

整体框架

bb7f16f36620798a9ee777676e8d6439.png

技术栈

6b1fb50a331cf7334b66c10a53ca9787.png

运维知识库 所有要处理的数据都来自知识库,以及所有处理后的数据也都会再进入到知识库中。知识库由三部分组成,分别是分为元数据(MetaDB)、状态数据(TSDB)和事件数据(EventDB)。持续的数据建设,是智能运维建设的关键

1d2d1d90782ef00885c813282e1eaae6.png

智能运维机器人 定义为每个运维智能操作都可以分解成感知、决策、执行标准化流程。运维研发框架提供感知、决策、执行过程常用的组件,便于用户快速构建智能运维机器人

a140dd55687f6546f7a916da6f162893.png
感知器 智能异常检测算法替代过去大量误报漏报的阈值检测方法;运维机器人可以挂在多个感知器来获取不同事件源的消息(监控指标数据、告警事件、变更事件),这些消息可以以推拉两种方式被感知器获取到;消息可做聚合,达到阈值再触发后续处理 决策器 具备全局信息、自动决策的算法组件替代人工决策模式;为保证决策唯一性,机器人只能有一个决策器;可以扩展实现决策树模型让其自主控制决策路径 执行器 状态机等执行长流程组件的加入,让执行过程可定位、可复用状态机等执行长流程组件的加入,让执行过程可定位、可复用;执行器可以并行执行多个不同的任务,将运维长流程抽象成状态机和工作流两种模式
6eaa8c678634980d5c09d9df45fd1bf2.png

线上环境看做一个黑盒服务,与它的交互无非读写两类

  • 数据流,也就是从线上获取状态数据,并进行一些聚合统计之类的处理,例如指标汇聚、异常检测、告警等
  • 操作控制流,可以对线上状态做改变的操作,例如部署、执行命令等

通过运维知识库,可以在这两种操作的基础上,封装出多种不同的运维机器人,以提供高效率、高质量以及高可用方面的能力

18dcf0fa23989b93e84206cb546fda16.png

运维大脑

运维大脑包括异常检测和故障诊断,这两个部分的共同基础是基本的恒定阈值异常检测算法。恒定阈值异常检测算法利用多种概率模型估计数据的概率分布,并由此产生报警阈值

76c3436284267fdc306f539e73624e99.png

AIOps实施及应用场景

AIOps整体架构

7cf8402ff56c15a310097849f7be78f0.png

数据清洗层整体结构

模型层对各算法进行抽象,分为:规则、异常检测算法、监督&无监督算法、图算法等

2e5b41e12d1da133b7cc78369aa1dfc3.png

自动化标签工厂架构

流程:基础数据 --> 特征 --> 算法 --> 质量评估

7958f87744e042cd219762f9ac4e3b2e.png

AIOps常见场景及分类

1. 效率提升 智能变更、智能问答、智能决策、容量预测

2. 质量保障 异常检测、故障诊断、故障预测、故障自愈

3. 成本管理 成本优化、资源优化、容量规划、性能优化

7de31eecc7357b9bd9a832ccf5e4f7d0.png

AIOps场景分析

1.异常检测

789b65760cb6089b1c7daff8ee299afe.png

整体架构

3ff443bd2269e3d2393f0098e860406b.png

流程

2.单机房故障自愈

9f8b727ba3ffad593e4413aed0b83a27.png

故障自愈技术架构

e4b6f8ddc740000da5cabd9823acf38d.png

单机房故障止损能力标准

3.时序预测

1d658e2b9074f9a87742440bc3e58853.png
2660d6b9571a5140193c7e7416b8dc42.png

时间序列异常检测的技术框架

1583553728d836194fb8870ad4aad903.png

告警收敛根因分析

4.模式聚类

第一个 Num、Date、IP、ID 等都是运维 IT 日志里一定会出现的,但在关注模式时不会关注这些。因此,可以在开始就把这些信息替换,节省工作量

第二个 减少对齐的时候强行匹配资源,先走一个距离极其小的聚类,这样每一类中的原始文本差异非常小。此时意味着第二步得到的最底层聚类去做对齐,在这个类里的对齐耗损就会非常小,可以直接做模式发现

第四步,聚类消耗的资源已经非常少,因为给出的数据量已经很小,可以快速完成整个速度的迭代

5e7f9b6acaa3665456354896edb936ca.png

AIOps核心算法

f1bfce7e0b7e8284de8fe4e84dd70c8c.png

AIOps领域按照业务类型划分为四个维度,每个维度对应一个类型的算法模型

1.故障发现--异常检测

异常数据产生背景

1.做特征工程的时候需要对异常数据做过滤,防止对归一化等处理结果产生影响

2.对没有标记输出的特征数据做筛选,找出异常数据

3.对有标记输出的特征数据做二分类,由于某些类别的训练样本非常少,类别严重不平衡,此时也可以考虑用非监督的异常点检测算法来做

常见异常检测场景

  • 单KPI异常检测
  • 多KPI异常检测
  • 日志异常检测

通用入侵检测模型

入侵检测技术模型最早由 Dorothy Denning 提出,如图所示。目前,检测技术及其体系均是在此基础上的扩展和细化

4960bb3bc78641563f4113e050cce86e.png

事件发生器(Event generator) 它负责从不同的数据源采集数据,数据源可以是主机的审计日志、应用程序的日志或网络报文。在目前实现的大多数入侵检测系统中,这个部件一般被细化为采集器和数据预处理模块。采集器只负责从数据源采集数据,而数据预处理模块将原始数据转化为检测模型所能识别的数据格式

行为映像(activityprofile) 相当于一个异常检测模块,它也可以细化为很复杂的结构,一般包括数据源、训练模块、检测模块和决策引擎。行为映像能根据新数据来更新自己,以保持检测模型对用户行为或网络行为的变化的同步;如果发现入侵事件,则将该事件转移给规则集

规则集(Rule set) 实质是滥用检测模块,它根据其内部对已知攻击的知识集对事件发生器传递下来的事件进行模式或规则匹配,一旦发现有与知识集匹配的行为,就判定其为入侵行为并产生报警。如果当前事件与知识集不匹配,它将被传递给行为映像来更新其正常行为映像,知识集不一定是一组规则,也可以是状态迁移图、神经网络等滥用检测模型

评估指标

漏检率(false negative rate) 不能检测到入侵行为的比率,指标值越低,检测效果越好

误检率(false positive rate) 误将正常行为判为入侵行为的比率,指标越低,检测效果越好

典型的异常检测系统结构

3254c5aed9b9fb38b285552a194cdd67.png

上图描述的结构包含了异常检测系统所必须具备的部件,它是 Dorothy Denning 模型中行为映像的细化。其中系统映像(System Profile)就是检测模型,它是系统或用户等正常行为的总结,在建立以后还要根据新数据动态地更新,以减少误检率和漏检率。异常检测方法的特点一般都集中在检测模型,下面将按其不同来对以往的异常检测方法进行分类

异常检测模型分类

1.统计行模型 统计性模型首先要选择描述主体行为的测度集,然后在采集到的安全事件集合中建立基于该测度集的检测模型,该模型有可能是用户的正常行为映像,也可能是正常网络流量测度的概率分布,取决于异常检测系统的检测目标。缺点:容易被入侵者训练,最后使得异常行为也变成正常的;主管确定的入侵阈值决定来误检率和漏检率的高低;这种模型忽略事件之间的关系,对于依赖于事件之间关系的入侵不敏感;需要假设测度的概率分布,目前一般采用正态分布或泊松分布

2.预测模型 预测模型的检测对象是事件的时间序列,其目的是发现在构成入侵的安全事件1集合在

时间上的相关性,从而预测未来发生的事件,如果实际发生的事件与预测结果有较大的差异,

则表明有异常现象发生。优点:能检测到传统模型(例如统计模型)不能检测的入侵;它对主体行为的变化有高度的适应性,因为低质量的时间序列模式会被不断地排除,而留下高质量的模式;它对在训练阶段企图训练它的行为比较容易察觉;它能在入侵完成前检测到并发出告警

3.基于机器学习的异常检测模型 它的最大特点是根据正常来分辨异常,因为其训练数据大多是代表清一色的正常行为。这种方法的优点是检测速度快,而且误检率低。但该方法在用户动态行为变化以及单独异常检测方面还有待改善

  • 基于数据挖掘的异常检测模型 数据挖掘能从审计记录或数据流中提取出感兴趣的知识,这些知识是隐含的、事先未知的、潜在的有用信息,提取的知识表示为概念、规则、规律、模式等形式,并可用这些知识去检测异常入侵和已知的入侵
  • 基于神经网络的异常检测模型 神经网络的优点是:①它的实现不依赖对潜在数据的统计假设;②能较好地处理噪声数据;③能自动调节影响输出的各测度的权重,而这在传统的异常检测方法中通常是人为确定的。神经网络的缺点在于:①神经网络的拓扑结构和各元素的权重只有在训练后才能确定;②输入窗口的大小是该方法的一个主观因素,如果设得太低,该模型的检测能力就会下降,如果太高,就会碰到许多不相关的输入
  • 基于免疫学原理的异常检测模型
  • 基于 IBL 的异常检测模型

检测算法分类

检测算法用来比较系统当前行为与检测模型,将多个测度的值合成,从而获得一个量化的检测评价。比较有代表性的决策算法有

  • 基于贝叶斯推理的检测算法 通过在任意给定的时刻,测量 A1,A2,…,Ann 种测度值,推理判断系统是否有入侵事件发生
  • 贝叶斯网络
  • 协方差测量
  • 模糊逻辑

检测算法是依赖于检测模型的,有些检测模型不需要复杂的检测算法,例如决策树和神经网络,只需将各测度值作为它们的输入,就能获得综合评价意见。而对于统计性模型,通常需要专门的检测算法来获得综合评价意见

异常检测方法假设所有的入侵行为都是异常行为,因此如何判断异常行为是异常检测技术的核心,而这通常是带来误检和漏检的主要环节。提高判断异常行为的准确性关键要建立强壮的检测模型和采用与模型相适应的检测算法

2.故障止损--异常定位

KPI异常定位背景

在互联网运维中,首要需求通常是对监控的各种关键指标(KPI)进行实时异常检测,而后需要对检测出的异常信息进行查找,定位出根因元素集合,以便尽快做进一步的修复止损等操作。这个查找、定位出根因集合的过程即为异常定位。本文中异常定位的集合,指的是在同一个cuboid中的若干元素组成的集合

在各类KPI中有一类是多维度指标集,在统计指标(Total_KPI)时需要记录多个维度的指标信息,当Total_KPI被检测到异常时,需要尽快定位到是哪个维度(或交叉维度)中的哪些元素指标最可能是根因。例如,某网页访问量(Total_PV),对应多个维度:用户位置(Location)、网络运营商(ISP)、公司数据中心(DC)等,个维度对应一系列属性,位置:北京、上海、广东等;运营商:移动、联通、电信等;数据中心:SZ、SH等;当Total_PV发生异常时,需要定位到一个最可能是根因的元素指标集合,如{北京、上海}或{北京移动、广东电信}。维度指标集示意图如下,其中A、B、C代表不同维度,a1,b2,a1b1表示对应维度(或交叉维度)下的元素指标

bf74fcee4ca42f0aca3538ad5d231556.png

对于网络运维中多数的关键性能指标(KPI,CPU利用率、某页面点击量等),对其应用实时的异常检测算法,即可快速发现异常状况、进而及时止损,然而,有一类可加和的多维度KPI体系(如网页访问量PV、收入指标、错误计数等),其指标元素数目繁多、之间具有复杂的相互影响关系。如图 1表示一个4维的PV指标体系(由一系列3维的结构来表示),维度是Province,ISP,DC和Channel(简记为P,I,D,C),其中每个cell表示一个最细粒度的指标元素对应的PV值,例如v(Beijing, ChinaNet, DC1,Channel1),相应的也有较粗粒度的元素,例如v(Beijing, ChinaNet, DC1,*)、v(Beijing, ChinaNet, *,*)、v(Beijing, *, DC1,*)、v(*, *, *,Channel1)、v(*,*,*,*),分别对应一排cell、一个平面的cell、一个立方体的cell、总PV。这种数据结构称为data cube,其中的子cube称为cuboid(用Bi表示),下图中的4维data cube

d78c77b308bac0b8bcfbfa7077f8e9c3.png

其中包含若干cuboid,结构可如下图所示

eb7eb350ba5be80b656ba6cb013558c1.png

一个4维data cube中的cuboid结构(维度:P,I,D,C)

解决的问题

问题需求是尽可能准确的找到根因集合,即使集合中的元素指标值比较小或者占比比较小,也不宜采用暴力剪枝的方法将这些元素剪枝掉。多维度指标体系中的异常定位问题,实际上是寻找导致总量突变的根因元素集合。因此可以归结为一个搜索问题,即如果任意给定一个元素集合都可以判定其有多大可能是根因,则只需遍历搜索可能的集合并计算是根因的可能性,最后挑选出可能性最大集合即可

问题与挑战

  • 准确衡量一个元素或集合是根因的可能性非常困难
  • 要遍历搜索所有可能的集合是不可能做到的

异常定位算法--HotSpot

为克服上述两个问题采用两个策略:一是采用蒙特卡洛树搜索(MCTS)算法,对于每个cuboid中的元素进行遍历;二是采用分层剪枝的策略,逐层搜索、利用前一层的结果对该层先做剪枝

HotSpot算法设计 是一种对这种多维度指标体系中准确、高效地进行异常定位的方法。该算法将异常定位问题转化为巨大的搜索问题后,应用MCTS作为基础搜索算法,并且提出了一个根因可能性评分指标,作为每个集合的度量和 MCTS 中的价值函数; 此外,HotSpot还采用分层剪枝的方法以进一步降低搜索复杂度(逐层搜索,利用前一层的结果对该层先做剪枝)

d1605a53196b60851040256ccd63d285.png

主要环节

  • Ripple effect 即元素之间互相影响的规则,该规则旨在说明,任何一个元素值变化时,最细粒度层次中它的后代节点值将按照一定比例(通常是相同比例)进行变化;因体系的可加和性,有了最细粒度元素值,即可推导出其他所有元素值

令x表示非最细粒度元素,x’i表示其最细粒度层 中x的后代元素。当x的值改变了h(x)时,可推导出其他相关的值

bcb5097fc1eea460d14e6ba4ba2d3d8e.png
  • Potential score 由Ripple effect知,任何一个元素值变化时最细粒度元素会等比例变化,而最细粒度变化元素又可将这些变化“传导给”其他所有元素。因此,可用最细粒度所有元素来表征任何一个元素或集合的变化。最细粒度所有元素的真实值、预测值构成的向量分别记为v→,f→ 。任给定一集合S,假设其为根因则可推导出其对应最细粒度元素值,对应的向量记为a→,d(x,y)表示距离(本文采用欧氏距离),则Potential score如下
b301027064daac38e15f6a471896324a.png
  • MCTS算法 它解决一个Cuboid中的空间过大、搜索太慢的问题。它是一种启发式算法,理论上给的时间越长结果越准确,实际中常通过设定阈值(准确性阈值、时间阈值等)的方法,当找到满足阈值的结果即可停止搜索。其中一次迭代搜索过程包括以下四步
5159a8f068a800ffcb17350b9b89ea31.png
  • 分层剪枝 随着cuboid中元素数目的增加,在相同时间内其准确性会下降。因此,为了进一步降低搜索的复杂度,在层间采用分层剪枝的策略。基本思想是,HotSpot逐层搜索cuboid,即从第1层到第L层;对于前一层中ps过小的元素,将其在本层中的子元素剪枝去掉
3ce8744146e3d94f710474b6a52b617e.png

异常定位常用场景

  • 多KPI异常定位
  • 多维度异常定位
  • 熔断提醒

3.故障修复--根因分析

KPI异常定位分析得到的是在同一个cuboid中的若干元素组成的集合,从中分析出导致故障的根本原因就是根因分析要完成的工作。根因分析是分析问题和解决问题的一种方法。它是一种结构化的问题处理方法,用以逐步找出问题的根本原因并加以解决,而不是仅仅关注问题的表面现象。例如在业务场景中,有的时候需要调查和分析为什么会出错,在哪里出错,寻求防止差错事故再次发生的必要措施,从而提高整体业务的安全和质量

遵循四个重要的规则

  • 正确定义和描述事件或问题
  • 建立从正常情况到最终故障的时间表
  • 区分根本原因和因果关系
  • 一旦实施(并不断执行),RCA就会转化为问题预测的方法

根因分析的三种方法

  • Focus System
b460f46f27e88ad8399d904c57afc23e.png
Adtributor SystemiDice System
e4149109aa91756316547a11eeb98e0b.png

根因分析常见场景

  • 故障树挖掘
  • 调用链分析
  • 基于运维知识图谱的ChatOps

4.故障规避--异常预测

异常预测常见场景

  • 智能瓶颈报表
  • 故障预测
  • 容量预测

时间序列预测模型

  • 时间序列基本规则法-周期因子法
  1. 提取时间序列的周期性特征进行预测,计算周期因子factors、计算base、预测=base*factors
  2. 观察序列,当序列存在周期性时,可以用周期因子法做为baseline
  • 线性回归-利用时间特征做线性回归
  1. 提取时间的周期性特点做为特征
  2. 观察序列,当序列存在周期性时,线性回归也可做为baseline
  • 传统时序建模方法:AR、MA、ARIMA等线性模型
  • 时间序列分解,使用加法模型或乘法模型将原始序列拆分为4部分
  1. 拆分为4部分:长期趋势变动T、季节变动S(显式周期,固定幅度、长度的周期波动)、循环变动C(隐式周期,周期长不具严格规则的波动)和不规则变动I
  2. 乘法模型中SCI均为比例,加法模型中SCI与T有相同量纲
  3. 循环变动C较为复杂,短期不体现或归入趋势变化中
  4. 两类平滑方法:以滑动平均作为平滑方法提取趋势的seasonal_decompose朴素分解;以鲁棒局部加权回归作为平滑方法的STL分解
  5. 季节性分析
  • 特征工程着手,时间滑窗改变数据的组织方式,使用xgboost、LSTM模型、时间卷积网络等
  • 转化为监督学习数据集,使用xgboot、LSTM模型、时间卷积网络、seq2seq(attention_based_model)
  • Facebook-prophet,类似于STL分解思路,因为觉得在控制程度和可解释性上比传统时序模型更有优势,所以单独列车
  • 深度学习网络,结合CNN+RNN+Attention,作用各不相同互相配合
  1. CNN捕捉短期局部依赖关系
  2. RNN捕捉长期宏观依赖关系
  3. Attention为重要时间段或变量加权
  4. AR捕捉数据尺度变化

按其他维度分类算法

指标趋势预测

  • 常见算法 HoltWinters、时序数据分解、ARIMA
  • 适用场景 异常检测、容量预测、容量规划

指标聚类

  • 常见算法 DBSCAN、K-medoids、CLARNS
  • 使用场景 大规模指标异常检测

多指标联动关联挖掘 分析判断多个指标是否经常一起波动或增长

  • 常见算法 Pearson correlation、Spearman correlation、Kendall correlation
  • 使用场景 构建故障传播关系,应用于故障诊断

指标与事件关联挖掘 自动挖掘文本数据中的事件与指标之间的关联关系

  • 常见算法 Pearson correlation、J-measure、Two-sample test
  • 使用场景 构建故障传播关系,应用于故障诊断

事件与事件关联挖掘 分析异常事件之间的关联关系,把历史上经常一起发生的事件关联在一起

  • 常见算法 FP-Growth、Apriori、随机森林
  • 使用场景 构建故障传播关系,用于故障诊断

故障传播关系挖掘 融合文本数据与指标数据,基于上述多联动关联挖掘、指标与事件关联挖掘、事件与事件关联挖掘技术、由tracing推导出的模块调用关系图、辅以服务器与网络拓扑

  • 使用常见 构建故障传播关系,用于故障诊断

基于容量水位的动态均衡算法

基于快速熔断的过载保护算法

基于降级功能的过载保护算法

恒定阈值算法 累计恒定阈值 用来排除单点抖动

突升突降算法 r空间,引入周期內累计值

同比算法 z空间,引入分布和数据标准化

三种常用数据标准化方法

  • 规范化方法
  • 正规化方法
  • 归一化方法

小结

本文简单介绍AIOps系统的能力,梳理关键技术支撑及核心算法,并罗列出的AIOps涉及的核心算法,供进阶学习的参考

参考文献

[1] 《异常检测方法综述》

[2]《HotSpot: Anomaly Localization for Additive KPIs with Multi-Dimensional Attributes》

[3]《Root Cause Analysis For Beginners》

更多精彩内容欢迎关注微信公众号`云时代的运维开发`

关注知识星球 CloudTimesSmartSpace 获取更多思维导图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值