2022 AIOps挑战赛方案总结

article/2025/8/30 6:21:13

文章目录

  • 挑战赛赛题:微服务架构电商系统下的故障识别和分类
    • 一、赛季关键字
    • 二、赛题背景
      • 1、开源的微服务系统
      • 2、丰富的故障类型
      • 3、多模态监控数据
    • 三、方法汇总
      • 1、特征工程
        • (1)时序预处理
        • (2)时序特征提取方案
        • (3)特征筛选(多指标异常检测)
        • (4)日志数据挖掘
        • (5)调用链信息挖掘
        • (6)类别不平衡(分类问题)
        • (7)sklearn机器学习之特征工程
      • 2、曲线分类
      • 3、时序异常检测算法
      • 4、根因定位
      • 5、故障分类
      • 6、告警策略

挑战赛赛题:微服务架构电商系统下的故障识别和分类

一、赛季关键字

  • 云原生:赛题生产环境,比赛环境
  • 混沌工程:赛题数据的故障注入,基于混沌工程平台
  • 复合:赛题复合场景,赛程双赛道
  • 生态:参赛队伍多样性

二、赛题背景

1、开源的微服务系统

  • 数据来源:基于微服务架构的模拟电商系统(基于谷歌开源HipsterShop并进行改造)
  • 数据可靠性:在建行云上流量与真实业务流量一致

2、丰富的故障类型

  • 故障场景:来源于实际工业界总结的频发故障。
  • 故障类型:多层级(k8s pod、service和虚拟机)、多种类(CPU,内存,网络,磁盘等故障)

3、多模态监控数据

  • 比赛数据:包括实时业务黄金指标、容器和虚拟机等性能指标、日志、调用链等。
  • 数据难点:选手需要根据多模态的多源海量监控数据设计算法进行故障实时发现于故障分类。

三、方法汇总

1、特征工程

(1)时序预处理

  • 标准化差异特征提取:原始单条曲线 -> 标准化 -> 窗口绝对差分
  • 窗口绝对差分:当前时间点减去过去一天同时间段的值(猜测)
  • 时序融合算法:对多维时间序列指标进行重构,实现海量指标序列快速检测。自定义类别进行聚类,聚类后先标准化,再提取绝对差分特征,利用时序特征融合曲线对该类指标进行重新表示。
  • 聚合:分组求和或均值:针对多状态值指标;
  • 无量纲化:转化为使用率百分比的形式:由于不同CMDB的配置差异,某些指标的取值不具有可比性;
  • 指标筛选:去除无效指标:针对配置类指标、常量指标(方差为0);
  • 近似归一化:指标值除以均值:某些指标在不同pod差异较大,甚至相差一个数量级;
  • stl分解:消除周期性波动影响:某些指标存在周期性波动,这与故障表现极为相似;
  • 卡尔曼滤波:卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。

(2)时序特征提取方案

  • 一阶差分
  • 滑动窗口求和的差分
  • 滑动窗口的标准差
  • 滑动窗口均值的增长率
  • 滑动窗口求和的增长率
  • 一阶差分后滑动窗口的标准差
  • 原数据和一阶差分
  • kalman的一阶差分
  • 原数据与kalman差值

(3)特征筛选(多指标异常检测)

  • 相关性选择:多指标异常检测情况,根据特征间相关性进行筛选。

(4)日志数据挖掘

  • 故障关键词检测:根据故障关键词,获取关键词词频进行转换。
  • Drain日志解析算法
    a、异常日志检测:使用正常日志进行训练,并使用训练的模板去匹配实时数据,未匹配到的日志则为异常日志。
    b、模板数量统计:训练所有日志模板并保存,统计所有日志模板在窗口中出现的次数,作为频次特征。

(5)调用链信息挖掘

  • 存在问题:并非所有异常都体现在本节点上、上游耗时包含下游耗时。
  • 解决办法:以消息对形式检测、上游节点耗时减掉所有下游节点耗时之和。

(6)类别不平衡(分类问题)

  • 欠采样处理:欠采样就是一个随机删除一部分多数类(数量多的类型)数据的过程。

(7)sklearn机器学习之特征工程

  • 传送门

2、曲线分类

  • 曲线分类的作用:对时序进行分类,不同的指标类型采用不同的算法进行异常检测。
  • 分类指标:mean、std、波动性分析、趋势分析、自相关系数(周期性分析)、频谱分析等。
  • 时序类型:突刺型、无波动、无周期、伪周期、周期型、趋势型等。
    在这里插入图片描述

3、时序异常检测算法

  • 四分位法:利用箱型图的四分位距(IQR)对异常值进行检测, 提供了识别异常值的一个标准:异常值通常被定义为 小于 QL-kIQR 或 大于 QU+kIQR 的值。
  • 3-sgima:基于正态分布,3sigma准则认为超过3sigma的数据为异常点。
  • K-MaxMin:K-MaxMin异常检测算法是我们基于3Sigma原则改进的一种异常检测算法,用于不符合高斯分布的数据异常检测。
  • 分位数法:将每个时间序列值与历史分位数进行比较,将大于百分之n和小于百分之m的值记为异常点。
  • 极值理论:极值理论是处理与概率分布的中值相离极大的情况的理论,常用来分析概率罕见的情况,如百年一遇的地震、洪水等,在风险管理和可靠性研究中时常用到。基于极值理论的单变量时间序列流式异常检测算法SPOT/DSPOT
  • 阈值自适应:通过引入长短期记忆阈值计算思想增强模型对数据突变的自适应能力,公式:threshold = w1 * threshold(1 hour) + w2 * threshold(10 hour) + w3 * threshold(off line)
  • 核密度估计kde:用平滑的峰值函数(“核”)拟合观察点,对真实的概率分布曲线模拟。“核”是一个函数,提供权重。如高斯函数 (Gaussian) 就是常用的核函数,如果某一个数在观察中出现了,认为这个数的概率密度很大,与该数较近的数的概率密度也会比较大,离这个数远的数的概率密度会比较小。
  • 高斯分布:利用训练集拟合出一个高斯分布,当要预测一个样本是否为异常时,只需将这个新样本带入高斯分布求出概率,如果概率小于指定的阈值时则为异常。利用高斯分布进行异常检测
  • 伯努利二项分布:将数据转换为伯努利分布,既大于某个值则为事件一,否则为事件二。采用一段时间的数据为训练集,假设满足伯努利分布,计算P值,对于需要检测的区间,再次计算P值,对比前后P值获取误差,如果误差大于指定的阈值时则为异常。 部分布尔型或者按照少量种类分布的数据,使用伯努利二项分布,可以更好的放大异常。
  • ECOD:使用经验累计分布函数的无监督离群值检测,使用类似集成的方法(结合同一样本不同维度的离群分),计算每个样本的离群分,分值越高是异常值的可能性越大。
  • ADTK:是无监督异常检测的python工具包,它提供常用算法和处理函数:简单有效的异常检测算法(detector)、异常特征加工(transformers)、处理流程控制(Pipe)。

4、根因定位

  • trace异常检测:制定如下规则进行异常节点检测。
    在这里插入图片描述
  • CMDB_ID选取策略
    (1)最大异常选取策略:根据每个cmdb_id所包含的所有指标异常程度来进行选取。
    (2)pod/service抉择选取策略:这个策略主要是要区分当故障发生时,到底是pod故障,还是service故障。从service故障的定义得知:当某个service的4个pod都发生故障时,则认定为service故障。而实际情况可能某个service服务的3个或者2个pod发生严重故障,其service服务才是根因故障。
    (3)istio服务调用关系选取策略:istio的流量相关指标,cmdb_id格式:容器名.source/destination.服务调用方.被调用服务。我们通过对istio数据异常检测,可同时获得3个异常得分字典,分别是容器异常得分字典、服务调用方异常得分字典、被调用服务得分字典。首先根据服务调用方异常得分字典、被调用服务得分字典确定是服务调用方异常还是被调用服务异常,然后结合容器异常得分字典确定是服务异常还是服务下的某个pod异常。
    (4)调用链拓扑关系选取策略:这个策略主要是要区分当故障发生时,被检测出来的cmdb_id并不是根因,需要通过拓扑关系图来溯源。
    在这里插入图片描述

5、故障分类

  • 分类特征构建
    (1)横向时序维度:整体时序指标统计值,前序后序指标统计值,目标时点指标与前序、后序偏差,后序异常点统计值等,得到指标的时序信息和异常的持续情况。
    (2)纵向指标维度:目标时点指标值,目标时点异常指标数,目标时点异常分统计值等,得到异常的指标分布和各指标的异常情况。
    在这里插入图片描述

  • 集成学习分类模型:有标签的情况下,构建有监督分类模型,对异常检测结果进行分类。

6、告警策略

  • 异常置信度:异常检测模型计算异常得分时间序列,滑动窗口积分计算累计异常得分作为异常置信度,利用实时异常置信度对比机制进行告警抑制。
  • 告警权重得分模型:自定义得分模型,根据指标的历史异动情况计算其权重,跟历史故障匹配度越高,同时跟非异常情况下匹配度越低,则权重越高(通俗来讲:异常情况下和正常情况下对比,抖动明显)。
  • 异常链路汇聚:该方法只用于调用链判断,主要是根据调用链上下游的抖动情况,计算cmdb_id节点的汇聚度,通过汇聚度决策是否异常。
  • DBSCAN:故障注入发生后的异常发生时间具有集中性特征,利用DBSCAN基于密度聚类的特征,准确识别同次故障,将一个时间段的异常记录聚类成异常事件,有效避免故障跨节点传播导致的误报。应用DBSCAN对时间戳进行聚类,有效避免告警风暴。
  • 故障窗口:基于滑动窗口(从当前时刻向前推10个时刻),计算窗口内各个故障的累计得分,得分最高者即为故障,满足一定条件提交;

http://chatgpt.dhexx.cn/article/7rTjCHCW.shtml

相关文章

AIOps:企业运维新力量!

摘要:企业运维需求及挑战,来看看华为AIOps如何解决! 本文分享自华为云社区《【云驻共创】AIOps?企业运维新力量!》,原文作者:启明。 国际惯例,我们先介绍一下AIOps的概念&#xff1…

智能运维(AIOps)系列之二:什么是人工智能

大众对人工智能认识的误区 很多计算机从业人员,对人工智能的理解 数据挖掘和深度学习。 另一部分对人工智能的理解,则多了知识图谱。 其实,人工智能的理论基础和技术分支,都极其广泛。具体详见下文。 揭开人工智能的神秘面纱 —…

运维数智化时代——京东数科AIOps落地实践(一)

一、背景 自从2016年Gartner提出AIOps概念以来,平台化和智能化已经成为了运维体系发展的大趋势。从整体来看,运维发展可以分为5个阶段,分别为手工及脚本运维、工具标准化运维、平台自动化运维、DevOps和AIOps。 自动化运维给手工及脚本运维…

智能运维(AIOps)系列之三:什么是智能运维

现阶段的研究方向 智能运维框架(以质量保障为例) 大家可以对照 系列二 的人工智能框架 以质量保障为例,详情 时序指标 根因分析 根因的场景可以区分为:实时场景、准实时场景、以及离线场景。具体取决于 技术限制、业务需求以及…

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

AIOps,最初的定义是Algorithm IT Operations,是利用运维算法来实现运维的自动化,最终走向无人化运维。随着技术成熟,逐步确定为Artificial Intelligence for IT Operations——智能运维,将人工智能应用于运维领域&…

DataOps、MLOps 和 AIOps,你要的是哪个Ops?

作者 | Merelda Wu 策划 | 田晓旭 如何在 DataOps、MLOps 和 AIOps 之间进行选择?大数据团队应该采取哪种 Ops? 两年前,由于笔者领导的运维团队效率低下,“赢得”了耻辱的勋章。要说明的是笔者具有数据科学和机器学习的背景&#…

2021百万年薪AI职位趋势:数据科学、Python、自动驾驶、AIOps你关注了么?

本文转载自 新智元,编辑 小匀 毫无疑问,今年,人工智能一直是个流行语。它已被确立为新兴技术(例如大数据,机器人技术和物联网)的主要驱动力。 那么,未来12个月的AI将会如何? 如果20…

智能运维 VS 传统运维|AIOps服务管理解决方案全面梳理

云智慧 AIOps 社区是由云智慧发起,针对运维业务场景,提供算法、算力、数据集整体的服务体系及智能运维业务场景的解决方案交流社区。该社区致力于传播 AIOps 技术,旨在与各行业客户、用户、研究者和开发者们共同解决智能运维行业技术难题&…

AIOps中的四大金刚

作者简介 运小青 百度云资深研发工程师 负责百度云智能监控、智能故障自愈方向架构设计与研发,推动AIOps的实践与落地。 干货概览 AIOps(Artificial Intelligence for IT Operations ),即智能运维,是将人工智能的能…

什么是AIOT?

AIoT(人工智能物联网)AI(人工智能)IoT(物联网)。AIoT融合AI技术和IoT技术,通过物联网产生、收集来自不同维度的、海量的数据存储于云端、边缘端,再通过大数据分析,以及更…

AIOps:实现运维智能化的一大利器

出品 | CSDN云原生 AIOps由Gartner于2016年提出,旨在使用大数据、机器学习等方法来提升运维能力,其目的是进一步降低自动化运维中人为干扰,最终实现运维无人化、自动化。 CSDN云原生系列在线峰会第16期“AIOps峰会”由用友畅捷通助理总裁熊昌…

AIOT介绍

百度词条的解释:AIoT(人工智能物联网)AI(人工智能)IoT(物联网)。AIoT融合AI技术和IoT技术,通过物联网产生、收集来自不同维度的、海量的数据存储于云端、边缘端,再通过大…

AIOps

自 Gartner 于 2016 年创造 AIOps 一词以来,人工智能已成为先进技术世界的流行语。AIOps 的目标是自动化复杂的 IT 系统解决方案,同时简化其操作。 简单地说,AIOps是一种转型方法,它使用机器学习和AI技术来运行诸如事件关联、监控…

AIOps是什么?为什么用它?

由于快速的数字化转型给 IT 企业组织带来了很大的压力,要求他们更加主动和敏捷,DevOps 原则和实践一直是宝贵的资源。但是,为了保持领先地位,企业需要更强大的解决方案。那么,答案是什么?当然是 AIOps&…

AIOPS是什么,它的未来如何?

AIOps,也就是基于算法的IT运维(Algorithmic IT Operations),是由Gartner定义的新类别,源自业界之前所说的ITOA(IT Operations and Analytics)。我们已经到达了这样的一个时代,数据科…

AIOps基本概念以及能力分级

一、概念 AIOps是Artificial Intelligence for IT Operations,智能化运维。 简单说, AIOps AI 运维数据 自动化处理 AI Devops 终极目标:“有AI调度中枢管理的,质量、成本、效率三者兼顾的无人值守运维,力争所运营系统的综合收益最…

AIOps介绍

AIOps介绍 AIOps是指人工智能运维(Artificial Intelligence for IT Operations)的缩写。它是将人工智能(AI)和机器学习(ML)技术应用于IT运维领域的一种方法。 传统的IT运维通常需要人工监测和管理大量的系…

智能运维(AIOps)系列之一:个人对智能运维的理解

前序 本人从事了 5年 的智能运维开发,把这几年的想法和思路在此跟大家分享一下,主要是为了起到抛砖引玉的作用。该序列总共5部分: 智能运维系列之一 — 概述:主要是讲述自己对智能运维的理解;智能运维系列之二 — 什…

使用TimerTask的坑

使用TimerTask可以方便的实现定时任务的功能,但是如果使用不当,反而会带来隐患。 在使用TimerTask时,TimerTask中的代码必须要做异常处理,否则产生异常的时候,就挂掉了。 特别像使用MQ发送数据的时候,不会…

Timer和TimerTask与线程的关系

1. Timer是一个定时器,它可以根据指定的时间,指定的执行周期来执行固定的任务TimerTask,例子如下: Timer与线程的关系,在Timer源代码中可现如下代码: 1. 以下为Timer的默认构造方法,起调用了自…