本届挑战赛季军方案:基于图网络及LLM AGENT的微服务系统异常检测和根因定位方法

aiboco团队荣获本届挑战赛季军。该团队来自亿阳信通。

方案介绍

本届挑战赛采用开放式赛题,基于建行云龙舟运维平台的稳定性工具和多维监控系统,模拟大型的生活服务APP的生产环境,提供端到端的全链路的日志、指标和调用链数据。参赛队伍在组织者分配的云环境中,运用了大模型技术,对调用链数据、KPI指标和业务指标进行故障检测和根因定位。

首先分析赛题信息,获取到了如下困难:

1、微服务系统复杂

微服务系统架构复杂,当异常出现时,不能快速发现并且给出根因。
各类数据(业务指标、性能指标、调用链、日志等)特征多种多样,如何能实现统一化处理。

2、数据复杂

数据量比较大,每天大约30G以上的数据量。
微服务化后,调用关系不固定。
需要快速给出异常检测结果。
需要快速给出根因定位结果。

3、与已有工具的关系

现在已有skywalking等调用链跟踪工具,还要进行异常检测和根因定位的意义。
节点运行状态,可以通过业务拨测、skywalking设备监测获得。
哪些是上述工具无法实现的?

4、大模型应用

如何借助大模型提升AIOps能力:

Agent
思维链
生成报告
故障分类

5、资源限制

前期竞赛服务器资源紧张(CPU、内存、磁盘)。
GPU等资源紧张,给部署大模型,带来难题。
针对以上问题,亿阳信通OSS数智部团队提出了如下思路:

a、通过正常数据训练模型

通过正常数据进行学习和训练,得到各类数据的特征指标。
对异常数据进行检测和根因定位。
b、异常检测和根因定位依据

以TC为主,Metric、Trace、日志为辅,进行异常检测。
以Metric、Trace和日志为主,进行异常根因定位。
c、大模型辅助应用

在资源有限的情况下部署大模型应用。
大模型辅助根因定位。

然后根据以上思路提出了基于图网络和LLM Agent的微服务异常检测和根因定位方法。这种提出了4大创新:时序异常检测、六元组动态建模、图网络根因定位和大模型Agent辅助应用。创新方法如下图所示:

图片

并基于LLM Agent的应用,将LLM Agent智能体应用到智能运维领域。

图片

本方案大体如下:通过对指标数据的异常检测模块获取异常检测结果,通过trace数据的异常检测模块获取异常检测结果,通过将结果结合并进行根因定位,然后通过大模型系统总agent进行结果处理。该流程遵循着异常检测-根因定位的流程进行展示。

具体流程如下所示:

图片

接下来详细介绍这些流程的具体方法实现。

异常检测

时序异常检测是一种通过分析时间序列数据来识别与正常模式不符的异常行为的方法。在TC(时间序列数据)业务中,对业务指标进行时序异常检测可以帮助及时发现异常情况,并采取相应的措施。以下是对TC业务指标进行时序异常检测的步骤:

TC业务指标获取

竞赛方使用专门的数据采集工具收集与业务指标相关的数据,包含CPU、内存等指标的各时间段具体值信息,并将其整理成json文件发送给选手。该数据包含异常数据和无异常数据两种,异常数据包含一个或多个异常,无异常数据则指的是当天无异常发生。

1.模型训练
模型训练部分使用的是VAE算法。VAE模型由两部分组成:编码器和解码器。

编码器:编码器将输入数据映射到潜在空间中的概率分布,即学习到输入数据的潜在表示。编码器的输出包括潜在空间中的均值(μ)和方差(σ),这些参数用于生成潜在变量。

解码器:解码器将潜在变量重新映射到输入空间,生成与原始数据相似的重构数据。

损失函数:定义VAE的损失函数,它由两部分组成:重构损失和KL散度损失。

重构损失:衡量重构数据与原始数据之间的差异,通常使用均方误差(MSE)或交叉熵损失。

KL散度损失:衡量学到的潜在分布与标准正态分布之间的差异,促使潜在变量在潜在空间中均匀分布。

使用正常数据训练VAE模型。在训练过程中,优化损失函数,使得模型学到正常数据的潜在表示。训练过程中,随机从正常数据中采样,将其输入编码器,然后生成重构数据,最小化损失函数。

VAE计算公式为:

图片

2.时序异常检测

定义阈值:在异常分类方案中,阈值具有关键作用。阈值是根据重建损失或其他相关指标设置的关键数值。仔细的阈值选择至关重要,因为它直接影响到误报(将正常数据错误地标记为异常)和漏报(未能正确标记异常数据)之间的权衡。我们设置了适当的阈值用于并针对异常数据和非异常数据进行适当修改。

评估异常:在完成 VAE的训练和阈值定义后,使用VAE进行了时序异常检测。该过程包括将输入数据编码到潜在空间中,通过解码器进行重建,然后将重建的数据与原始输入进行比较。然后将重建误差超过预先定义的阈值的数据点标记为异常,并进行输出。VAE识别出了那些在潜在空间中无法很好表示的、与正常模式差异较大的异常情况,在异常数据中识别到了异常。

同时我们使用数据可视化来对比展示出异常情况是否符合预期分布。

通过可视化可以直观看出异常点的具体情况。

除了VAE之外我们也使用了趋势和历史特征来进行辅助查找异常,并最终使用人工进行确认来获得异常的实际输出。具体流程如下:

图片

根因分析

根因分析需要各类数据的结合进行混合计算。

图片

具体流程如下:

图片

这里我们将资源数据和Trace数据进行拓扑还原,作为资源拓扑辅助进行异常信息诊断。异常信息检索关联网元并联合资源拓扑进行故障定界。故障定界结果又反过来辅助异常信息进行的性能根因定位和调用链根因定位,然后将性能根因定位结果和调用链根因定位结果返回到总agent里,总agent调用大模型进行最终的根因定位并将根因定位结果输出。

大模型应用

本次部署采用使用CPP+GPU方案,降低部署成本,部署推理效率提升10倍以上。并且使用ReAct加CoT加Agent的方式,成功完成比赛的完整输出任务。

具体使用例子如下:

问:案例库中的指标分析发现的异常数据为{data1},调用链分析发现的数据为{data2},观察指标异常值数据的v_err、v_pre、v_pst和trend列,可以根据指标异常值数据的指标突变值情况看出异常指标为outlier={result},该数据包含kpi_names和cmdb_ids两列。再将outlier在调用链数据中进行查询,并结合调用链数据的指标v_err、v_pre、v_pst和trend进行判断,确定出调用链数据的异常值组合为outlier2= {result2},该组合包含cmdb_ids和ext_net_peer_name两列。

现在指标分析发现的异常数据为{data_now1},调用链分析发现的数据为{data_now2} ,请根据以上案例进行分析并输出outlier1和outlier2。

上述问题中红色的数据由案例库给出,黄色的数据由指标分析结果和调用链分析结果给出。同时我们使用Agent加ReAct加CoT进行网元状态工具和故障根因分析工具进行调用。调用方法为ReAct加CoT进行模式输出,得到工具的输出结果。

总结展望

总结

  • 通过时序异常检测算法,完成异常检测
  • 使用图网络完成故障根因定位
  • 使用大模型辅助故障根因定位

后续工作

  • 探索大模型Agent的深度应用,完成更多运维工作。
  • 深入研究ReAct和思维链,使能分析复杂的问题。
  • 使用大模型+本地知识库,实现故障处理案例推荐等。

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

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

相关文章

vue中将某个不太规则的json转成对象,或者将对象转成json字符串

vue中将某个不太规则的json转成对象,或者将对象转成json字符串 以我自己做的项目某个不规则的json为例 将json对象转成json字符串: JSON.stringify(jsonData); 将不规则json字符串转成对象并获取对应的属性的值: JSON.parse(jsonData).Name…

云原生精品资料合集(附下载)

云计算是产业数字化转型的关键基础设施,以基础设施资源为中心的云搬迁时代接近尾声,以应用价值为中心的云原生时代已经到,所以IT人员学习云原生正当时!最近跟各位大神征集了云原生的教程,行业报告和最佳实践,总有一款适…

蓝桥杯_中断系统

一 中断 中断,即cpu暂停执行当前程序,转而执行另外一段特殊程序,处理结束后。返回之前暂停程序继续执行。 中断向量,中断服务程序的入口地址,每个中断源都对应一个固定的入口地址。 中断服务函数,内核响应中…

【亚马逊云科技】通过Amazon CloudFront(CDN)快速访问资源

文章目录 前言一、应用场景二、【亚马逊云科技】CloudFront(CDN)的优势三、入门使用总结 前言 前面有篇文章我们介绍了亚马逊云科技的云存储服务。云存储服务主要用于托管资源,而本篇文章要介绍的CDN则是一种对托管资源的快速访问服务&#…

Socket网络编程(二)——UDP快速入门

目录 UDP相关概念UDP是什么为什么不可靠UDP能做什么UDP包最大长度 UDP单播、广播、多播概念1. 单播、广播、多播模型图2. ip地址分类3. 子网掩码的作用:4. 广播地址5. 网段划分6. 变长子网掩码 UDP核心APIAPI-DatagramSocketDatagramSocket构造方法DatagramSocket常…

6.5 共享数据

本节介绍Android的四大组件之一ContentProvider的基本概念和常见用法:首先说明如何使用内容提供器封装内部数据的外部访问接口,然后阐述如何使用内容解析器通过外部接口操作内部数据,最后叙述如何利用内容解析器读写联系人信息,以…

10_Vue

文章目录 Vue快速入门Vue的指令Vue的插值表达式V指令v-bind(单向绑定)v-model(双向绑定)v-on(事件监听)v-for(循环)v-text、v-htmlv-show(显示/隐藏)v-if&…

了解GPT:ChatGPT的终极指南

在人工智能(AI)的世界里,有一颗冉冉升起的新星正在革命性地改变我们与机器的交互方式:ChatGPT。在本文中,我们将深入研究什么是ChatGPT,为什么底层技术GPT如此强大,以及它是如何实现其卓越功能的…

excel导出标准化

虽然标题叫标准化,只不过是我自己的习惯,当一件事情变得流程标准化之后,开发程序就会飞快,开发评估工作总是 搞个1~2天,实则前端后端一起开发,1个小时就可以搞定。 1 前端 const exportXls async () >…

C++重点---STL简介

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、STL简介 STL(Standard Template Library)是C标准库中的一个重要组成部分,它提供了…

iOS中卡顿产生的主要原因及优化思路

卡顿本质上是一个UI体验上的问题,而UI的渲染及显示,主要涉及CPU和GPU两个层面。若 CPUGPU渲染耗时超过16.7ms,就会在屏幕vsync信号到来时无法更新屏幕内容,进而导致卡顿。 iOS中UI渲染主要包含Layout->Draw->Prepare->Co…

MySQL5.7.44版本压缩包在Win11系统快速安装

一.背景 主要还是为了公司的带徒弟任务。我自己也喜欢MySQL的绿色版本。 1.软件版本说明 MySQL版本:5.7.44 压缩包版本,相当于绿色版。当然,你也可以使用window系统的Installer版本去安装。 操作系统:Win11家庭版 二.MySQL软…

electron-release-server部署electron自动更新服务器记录

目录 一、前言 环境 二、步骤 1、下载上传electron-release-server到服务器 2、宝塔新建node项目网站 3、安装依赖 ①npm install ②安装并配置postgres数据库 ③修改项目配置文件 ④启动项目 ⑤修改postgres的认证方式 ⑥Cannot find where you keep your Bower p…

spring6学习笔记

1.环境准备 1.idea建立一个空项目,jdk要求是17 2.Maven配置(和mybatis里一样) 3.新建一个模块 2.ocp原则 3.依赖倒置原则(DIP) 什么是依赖倒置原则? 1.面向接口编程,面向抽象编程,不要面向…

【React 报错】—Remove untracked files, stash or commit any changes, and try again.

【React 报错】—Remove untracked files, stash or commit any changes, and try again. 在react项目中通过.less文件进行样式定义,先暴露webpack配置文件,执行命令:yarn eject 或 npm run eject,报错如下: 原因是因…

【清理mysql数据库服务器二进制日志文件】

清理前后比对 清理前占用 86% : 清理后占用 29% : 排查占用磁盘较大的文件 检测磁盘空间占用 TOP 10 # 检测磁盘空间占用 TOP 10 $ sudo du -S /var/log/ | > sort -rn | # -n选项允许按数字排序。-r选项会先列出最大数字(逆序&#x…

vue中 input disable后无法触发点击事件

问题:input标签为disabled后,点击事项无效;当点击文字**“请选择”**时无法触发点击事件,其父标签的其余位置均可触发 解决:只需要在input标签中添加 style“pointer-events:none” 即可 pointer-events: none 作用是…

如何刷新 DNS 缓存 (macOS, Linux, Windows)

如何刷新 DNS 缓存 (macOS, Linux, Windows) Unix Linux Windows 如何刷新 DNS 缓存 (macOS, FreeBSD, RHEL, CentOS, Debian, Ubuntu, Windows) 请访问原文链接:https://sysin.org/blog/how-to-flush-dns-cache/,查看最新版。原创作品,转载…

字节面试问题

实现三列布局的方法 第一种&#xff1a;可以使用浮动margin 第二种&#xff1a;浮动BFC <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, in…

密码学及其应用(应用篇15)——0/1背包问题

1 问题背景 背包问题是一个经典的优化问题&#xff0c;在计算机科学和运筹学中有着广泛的应用。具体到你提到的这个问题&#xff0c;它是背包问题中的一个特例&#xff0c;通常被称为0/1背包问题。这里&#xff0c;我们有一系列的正整数 &#xff0c;以及一个正整数&#xff0c…