本届挑战赛季军方案:基于图网络及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.hqwc.cn/news/498180.html

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

相关文章

操作系统:IO管理概述

🌈个人主页:godspeed_lucip 🔥 系列专栏:OS从基础到进阶 🏆🏆本文完整PDF源文件请翻阅至文章底部下载。🏆🏆 1 I/O设备的基本概念与分类1.1 总览1.2 什么是IO设备1.3 IO设备的分类1…

yolov8涨点技巧,添加SwinTransformer注意力机制,提升目标检测效果

目录 摘要 SwinTransformer原理 代码实现 YOLOv8详细添加步骤 ymal文件内容 one_swinTrans three_swinTrans 启动命令 完整代码分享 摘要 Swin Transformer通过引入创新的分层注意力机制展现了其架构的独特性,该机制通过将注意力区域划分为块并在这些块内执…

NutUI + taro +vue 开发遇到的问题 使用popup组件 内部元素滚动遇到的的问题

1 popup 弹出内容时 弹出的框内元素数据很长需要滚动时 本地可以正常滚动 打包成小程序后无法滚动 如这样的免责条款内容 代码如下 解决办法 1 把2处的单位换成百分比 弹框能滚动但是 是popup 里面所有的元素都一起滚动 导致标题都滚走了 2 scroll-y 改成: :scrol…

Spring Task的应用

介绍 Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 定位: 定时任务框架 作用: 定时自动执行某段Java代码 应用场景: 引用卡每月还款提醒、银行贷款每月还款提醒、火车票售票系统处理未支…

Vulnhub内网渗透Masashi-1靶场通关

完整内容见我的博客xzajyjs.cn 靶场下载地址。 下载下来后是 .vmdk 格式,vm直接导入。 M1请使用UTM进行搭建,教程见此。该靶场可能出现网络问题,解决方案见此 信息搜集 arp-scan -l # 主机发现,目标位192.168.168.14 nmap -sV …

单片机SWJ 调试端口(SW-DP和JTAG)、SWD下载电路

单片机下载接口是指用于将编写好的程序代码下载到单片机芯片中的接口。常见的单片机下载接口包括以下几种: 1. **串口下载接口**:通过串口(如UART或RS-232接口)与计算机或下载器相连,将程序代码通过串口传输到单片机内…

为高频大功率设计的双面水冷厚膜电阻方案

EAK双面水冷厚膜电阻是一种具有良好散热性能的电阻器,常用于需要高效散热的电子设备中。其包括第一绝缘介质层、厚膜电阻层、第二绝缘介质层以及用于液体流通的金属腔体,第一绝缘介质层设置于金属腔体的上表面;第一绝缘介质层表面设有厚膜电阻…

行政区划代码 powerquery

https://www.mca.gov.cn/n156/n186/index.html 选中删除其他列 if [末尾4位] "0000" then [单位名称] else if [末尾4位] <> "0000" and Text.End([末尾4位],2) "00" then [单位名称] else null if [结尾字符] "0000" then …

Docker部署ROS程序

【先上干货】 1、docker安装 curl -fsSL https://test.docker.com -o test-docker.shsudo sh test-docker.sh# ubuntu系统可以直接通过apt安装 sudo apt-get install -y docker.io 2、给docker一个root权限 sudo usermod -aG docker $USER3、启动docker服务 # service 命令…

spring boot学习第十三篇:使用spring security控制权限

该文章同时也讲到了如何使用swagger。 1、pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instanc…

【深度学习】SDXL-Lightning 体验,gradio教程,SDXL-Lightning 论文

文章目录 资源SDXL-Lightning 论文 资源 SDXL-Lightning论文&#xff1a;https://arxiv.org/abs/2402.13929 gradio教程&#xff1a;https://blog.csdn.net/qq_21201267/article/details/131989242 SDXL-Lightning &#xff1a;https://huggingface.co/ByteDance/SDXL-Light…

蓝桥杯_定时器的基本原理与应用

一 什么是定时器 定时器/计数器是一种能够对内部时钟信号或外部输入信号进行计数&#xff0c;当计数值达到设定要求时&#xff0c;向cpu提出中断处理请求&#xff0c;从而实现&#xff0c;定时或者计数功能的外设。 二 51单片机的定时/计数器 单片机外部晶振12MHZ&#xff0c;…