本届挑战赛亚军方案:面向微服务架构系统中无标注、多模态运维数据的异常检测、根因定位与可解释性分析

news2024/11/20 14:29:13

CheerX团队来自于南瑞研究院系统平台研发中心,中心主要从事NUSP电力自动化通用软件平台的关键技术研究与软件研发。

选题分析

曾多次
图1 研究现状

本次CheerX团队的选题紧密贴合了目前的运维现状。实际运维中存在多种问题导致运维系统的不可用。比如故障发生时,针对指标的异常检测会产生海量告警风暴。如果想基于有监督方案做故障分类,标注和模型训练成本大,可解释性问题突出。与此同时,多模态的运维数据让我们希望能挖掘出更多有用信息。

针对以上问题,CheerX团队提出了如下选题方案:面向微服务架构系统中无标注、多模态运维数据的异常检测、根因定位与可解释性分析。本方案是一种无监督的方案,融合了多模态数据,输出事件级别的告警以及故障的诊断链路。方案的主要运维能力是异常检测和根因定位。

解决方案

在这里插入图片描述
图2 整体流程

方案的整体架构主要包括数据处理、异常检测和根因定位三个环节。同时方案架构中引入了专家知识和运维知识图谱。

◆ 数据处理
在这里插入图片描述
图3 多模态数据处理

数据处理环节亮点为多模态指标构造与融合,主要分为指标融合与图谱构建两个部分。

◆ 指标融合

从调用链数据中构造出四种调用链指标,与筛选出的 22个监控指标、4个交易指标一起进行异常检测。

  • Monitor指标:包含系统负载、cpu、磁盘、内存、tcp、网络等22种指标。
  • tc指标:交易量、交易性能、平均响应时长、业务成功率。
  • 调用链指标:耗时、自身耗时、错误率、调用次数。

◆ 图谱构建

图片

图4 运维知识图谱

针对根因定位则是设计了知识图谱的本体层,总共定义了12种概念和21种关系。并从调用链、部署架构和系统资源中抽取出相应的实例。

异常检测

图片图5 异常检测环节引入专家知识

在异常检测环节,本方案设计了一个通用可解释的指标异常检测流程。从本团队运维经验来看,异常是业务系统存在实际故障时的数据形态离群。因此如果只根据算法的检测结果就发出告警,会造成大量无意义的检测结果,造成告警风暴。

举个例子,对于资源使用率这类指标来说,一般关心使用率上升时候的事件,但是使用率下降往往不是什么问题。而对于业务成功率则是在下降的时候才需要关注。

具体检测什么样的数据形态是专家知识,算法本身是无法区分的。因此这里加入了专家知识对时间序列做筛选和过滤,这样检测出来的结果才是可解释的。

图片

图6 异常检测算法流程

具体针对检测算法而言,使用了卡尔曼滤波和谱残差显著性结合的方式进行指标检测。算法思路是通过卡尔曼滤波获得趋势,然后对原序列与趋势序列之间的距离序列进行谱残差显著性计算,转换为显著性序列。最后对得到的显著性序列只需要一个简单的箱型图检测即可。

图片

图7 谱残差论文

谱残差的好处是不管序列是有周期的还是稳定的或者非稳定的,在异常出现的时候都是显著的,因此有很强的通用性。这里参考了谱残差这篇论文。

根因定位

图片

图8 故障事件化流程

根因定位环节则是基于故障事件化和知识图谱实现根因定位。异常检测结束后会获得很多指标异常事件,这个时候就需要通过故障事件化对指标异常事件进行合并。

图片

图9 故障事件定义

本方案定义了节点故障事件和集群故障事件。通过专家知识,将指标异常事件合并成不同的节点故障事件。再根据拓扑结构将节点故障事件合并成集群的故障事件。此时已经获得了事件级别的故障告警,告警量进一步降低的同时可用性也在进一步增强。

图片

图10 根因定位流程

故障往往会随着调用关系发生故障传播。因此这里的定位思路是根据调用关系和系统拓扑确定实际的调用故障位置。制定根因诊断的规则,将不同的故障事件进一步合并。合并后剩余的故障事件就是所有可能的根因。诊断的过程表现为树的形式,故障诊断树包含了指标、节点和集群的故障事件,输出了完整的诊断过程。

图片

图11 故障诊断案例

这里展示了一个很经典的案例,这是一个外网web集群网络故障,经过统计,该故障影响了200多个指标,涉及17个主机,3个交易,7个调用环节。这里本方案做到了故障的根因定位,避免了告警风暴的同时,还使用树的形式完整的展示了故障诊断链路。这样的输出结果是非常具有可解释性的,对运维人员非常友好。

资源预警

图片

图12 资源预测流程

本次挑战赛我们还做了一些系统资源预测的工作,基于 STL分解与线性回归针对cpu、磁盘、内存等资源使用率进行预测。具体思路是使用STL分解算法分解资源指标序列得到趋势序列和周期序列,对趋势序列使用线性回归算法进行预测,而对周期序列则使用历史同时段平均进行预测。最后对两种结果求和,得到预测值。

图片

图13 资源预警报告

如果预测值超过设定的阈值时,将生成如图所示的资源预警报告,该报告中包含了资源越限时刻,资源指标类型,所在主机等信息。

总结展望

最后总结一下本次挑战赛,CheerX团队面向微服务架构中系统复杂度高、数据多源异构的挑战,提出了一种基于无标注、多模态数据的异常检测、根因定位与可解释性分析智能运维方案。

本方案对运维人员友好,实用性强,准确高效,是一种数据与知识双驱的解决方案。团队在多模态数据融合、运维知识图谱构建、异常检测和根因定位方面都做出了自己的创新性工作。

最后今年的主题是大模型,针对本方案,CheerX团队接下来将会结合大模型在扩充完善运维知识库以及日志数据分析方向上继续研究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Maven】Maven 基础教程(一):基础介绍、开发环境配置

Maven 基础教程(一):基础介绍、开发环境配置 1.Maven 是什么1.1 构建1.2 依赖 2.Maven 开发环境配置2.1 下载安装2.2 指定本地仓库2.3 配置阿里云提供的镜像仓库2.4 配置基础 JDK 版本2.5 配置环境变量 1.Maven 是什么 Maven 是 Apache 软件…

Docker部署Portainer图形化管理工具

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 Portainer 是一个轻量级的容器管理工具,可以通过 Web 界面对 Docker 容器进行管理和监控。它提供了可…

2024最后一次Java面试,java高级开发面试经验

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Python Skip-Gram代码实战,Skip-Gram代码超简单讲解和步骤拆解,Word2vec代码构建思路,Skip-Gram代码实例,模板套用

1. Skip-Gram介绍 Skip-gram模型是Word2Vec模型的一种训练方法,它的目标是通过目标词预测上下文词。Skip-gram模型通过神经网络结构来学习每个单词的向量表示。 在Skip-gram模型中,每个单词被表示为一个固定维度的向量,该向量称为嵌入向量或词…

AStar算法(大物件寻路)

前言 A星(物件大小为一格)寻路,都很熟悉了吧,网上源码一堆,随便抄; 这章需要讲述 大物件的A星寻路,何为大物件,就是 比如 物件 为4个格子; 这样,原来的A星 没法直接用了,必须得改装…

【Java程序员面试专栏 算法思维】四 高频面试算法题:回溯算法

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊回溯算法,主要就是排列组合问题,所以放到一篇Blog中集中练习 题目关键字解题思路时间空间岛屿数量网格搜索分别向上下左右四个方向探索,遇到海洋…

微信小程序引入Vant插件

Vant官网:Vant Weapp - 轻量、可靠的小程序 UI 组件库 先查看官网的版本 新建一个package.json页面,代码写上:(我先执行的npm安装没出package页面,所以先自己创建了一个才正常) {"dependencies"…

【Spring底层原理高级进阶】基于Spring Boot和Spring WebFlux的实时推荐系统的核心:响应式编程与 WebFlux 的颠覆性变革

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《Spring 狂野之旅:底层原理高级进阶》 &#x1f680…

Bicycles(变形dijkstra,动态规划思想)

Codeforces Round 918 (Div. 4) G. Bicycles G. Bicycles 题意: 斯拉夫的所有朋友都打算骑自行车从他们住的地方去参加一个聚会。除了斯拉维奇,他们都有一辆自行车。他们可以经过 n n n 个城市。他们都住在城市 1 1 1 ,想去参加位于城市…

c++实现栈和队列类

c实现栈和队列类 栈(Stack)Stack示意图Stack.cpp 队列(queue)queue 示意图queue.cpp 栈(Stack) Stack示意图 Stack.cpp #pragma once #include "ListStu.cpp"template<typename T> class Stack { public: /* * void push(T& tDate)* 参数一 &#xff1a;…

Android和Linux的开发差异

最近开始投入Android的怀抱。说来惭愧&#xff0c;08年就听说这东西&#xff0c;当时也有同事投入去看&#xff0c;因为恶心Java&#xff0c;始终对这玩意无感&#xff0c;没想到现在不会这个嵌入式都快要没法搞了。为了不中年失业&#xff0c;所以只能回过头又来学。 首先还是…

硬盘销毁:如何彻底销毁硬盘 文件销毁 数据销毁 物料销

大家对于办公这个词并不陌生&#xff0c;大多数人都知道办公就是对公事的处理&#xff0c;不是私人的事情处理。办公中会出现很多文件&#xff0c;很多的资料&#xff0c;那么办公室的文件销毁是如何处理的呢&#xff1f; 办公文件对于办公的人来说都是非常重视的&#xff0c;…

AI学习(5):PyTorch-核心模块(Autograd):自动求导

1.介绍 在深度学习中&#xff0c;自动求导是一项核心技术&#xff0c;它使得我们能够方便地计算梯度并优化模型参数。PyTorch 提供了一个强大的自动求导模块(Autograd)&#xff0c;它可以自动计算张量的导数得出梯度信息&#xff0c;同时也支持高阶导数计算。 1.1 概念词 在学…

微服务-商城订单服务项目

文章目录 一、需求二、分析三、设计四、编码4.1 商品服务4.2 订单服务4.3 分布式事务4.4 订单超时 商品、购物车 商品服务&#xff1a; 1.全品类购物平台 SPU:Standard Product Unit 标准化产品单元。是商品信息聚合的最小单位。是一组可复用、易检索的标准化信息的集合&#x…

EMR StarRocks实战——Mysql数据实时同步到SR

文章摘抄阿里云EMR上的StarRocks实践&#xff1a;《基于实时计算Flink使用CTAS&CDAS功能同步MySQL数据至StarRocks》 前言 CTAS可以实现单表的结构和数据同步&#xff0c;CDAS可以实现整库同步或者同一库中的多表结构和数据同步。下文主要介绍如何使用Flink平台和E-MapRed…

【程序员英语】【美语从头学】初级篇(入门)(笔记)Lesson 16 At the Shoe Store 在鞋店

《美语从头学初级入门篇》 注意&#xff1a;被 删除线 划掉的不一定不正确&#xff0c;只是不是标准答案。 文章目录 Lesson 16 At the Shoe Store 在鞋店对话A对话B笔记会话A会话B替换 Lesson 16 At the Shoe Store 在鞋店 对话A A: Do you have these shoes in size 8? B:…

如何运行github上的项目

为了讲明白这个过程&#xff0c;特意做了一个相当来说比较好读懂的原理图&#xff0c;希望和我一样初学的小伙伴也能很快上手哈&#x1f60a; 在Github中找到想要部署的项目&#xff0c;这里以BartoszJarocki/CV&#xff08;线上简历&#x1f4c4;&#xff09;项目为例 先从头…

经典Go知识点总结

开篇推荐 来来来,老铁们,男人女人都需要的技术活 拿去不谢:远程调试,发布网站到公网演示,远程访问内网服务,游戏联机 推荐链接 1.无论sync.Mutex还是其衍生品都会提示不能复制,但是能够编译运行 加锁后复制变量&#xff0c;会将锁的状态也复制&#xff0c;所以 mu1 其实是已…

4核8G服务器并发数多少?性能如何?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

React Switch用法及手写Switch实现

问&#xff1a;如果注册的路由特别多&#xff0c;找到一个匹配项以后还会一直往下找&#xff0c;我们想让react找到一个匹配项以后不再继续了&#xff0c;怎么处理&#xff1f;答&#xff1a;<Switch>独特之处在于它只绘制子元素中第一个匹配的路由元素。 如果没有<Sw…