基于大语言模型的云故障根因分析|顶会EuroSys24论文

*马明华 微软主管研究员
2021年CCF国际AIOps挑战赛程序委员会主席(第四届)
2021年博士毕业于清华大学,2020年在佐治亚理工学院做访问学者。主要研究方向是智能运维(AIOps)、软件可靠性。近年来在ICSE、FSE、ATC、EuroSys、VLDB、KDD、WebConf等软件工程、操作系统、数据库等领域发表30余篇论文,获得2018年软件可靠性工程ISSRE最佳论文奖。
分享论文:
Automatic Root Cause Analysis via Large Language Models for Cloud Incidents(EuroSys 2024)
基于大语言模型的云故障根因分析
本文为微软主管研究员马明华博士在2023 CCF国际AIOps挑战赛决赛暨“大模型时代的AIOps”研讨会论文闪电分享环节的演讲内容整理而成。
很荣幸今天能在这里和大家分享我们在微软的一个研究工作:RCAssistant,一个帮助运维工程师进行故障根因诊断的助手。
背景介绍
随着云服务的快速发展,系统变得越来越复杂,故障的发生频率也随之增加,这对我们的生产生活造成了很大的影响,因此在故障发生之后需要工作人员迅速而准确地做出运维决策,而根因诊断正是其中非常重要的一个步骤。
现在的云服务系统是错综复杂的,比如微软的云服务系统是一个包含了很多子系统的庞大系统。运维人员在这样一个复杂系统产生的海量的数据中做根因诊断是非常困难的。所以我们提出一个根因诊断助手的设想,帮助运维工程师快速地进行根因诊断。我们设计的目标是使其能够自动系统中收集必要的信息,并利用大语言模型分析和诊断故障根因,提升诊断的效率和准确性。
架构介绍

系统的整体架构包括两个部分,首先是数据采集阶段,然后是根因预测阶段。

根据我们对实际数据的观察,发现了系统的两个特点:系统的故障会以不同的告警类型体现出来,属于同一告警类型的故障有相似的数据需求和诊断流程;单一来源的数据不足以进行故障诊断,分析故障需要多种来源的数据。
针对系统的特点,我们设计了一个专家系统式的数据采集工具,为不同的告警类型设计对应的处理模块来收集和分析多种来源的数据,并且我们通过在每个处理模块内部以决策树的形式排列一系列可复用的操作的形式来模拟运维工程师在实际操作时的决策过程。

处理模块中的操作分为三种类型。首先是单元切换操作,在云服务系统中,从物理层或从逻辑层可以分成多个单元。其中单元切换操作可以根据故障的特点切换检测的单元,收集故障诊断需要的对应数据。其次是查询操作,它在发生故障之后检查系统的运行状态和特征,进而得到一些反馈结果。最后是修复操作,它能根据系统现状提供一些修复建议,比如快速重启系统,减轻故障对系统的影响。

上图是一个处理模块的例子,展示了对故障相关信息进行收集和分析的决策树。我们希望处理模块中的操作是可复用的,并且可以根据不同团队的需求进行自定义。

接下来介绍第二个阶段,即使用大语言模型的根因预测阶段。在这个阶段我们设计的目标是可以预测出一个故障根因的具体类别,并且以运维工程师可以理解的自然语言的形式给出相应的解释。

在这部分我们设计了一些基于思维链的提示词,在输入中提供一些历史故障和诊断信息的例子,向模型展示如何分析故障信息。

由于大模型有输入长度限制,但是故障的上下文需要包含故障发生时和历史上的相关信息,完全超过了现有模型的输入长度限制,无法在提示词中直接嵌入故障的上下文。
针对这一问题,我们设计了两个解决方案,一是查找历史上相似的故障,二是总结故障的上下文信息。

在获取历史上相似故障的阶段,我们采用的方法和运维工程师的实践经验是一致的:系统发生故障时,首先搜索历史上是否已经发生过相似的故障,之前的解决方案是什么,当前的故障是否可以使用类似的解决方案。现在我们也是让大模型按照这个思路执行,查找历史上相似的故障和解决方案,借鉴历史上的处理经验。
在如何寻找历史上相似故障方面,我们还有一个基于数据的发现,即在故障发生之后,很多故障会在短时间内重现的,为了减轻这一现象的影响,我们在计算相似度的时候引入了时间加权。

在设计整体的相似度的公式时,我们既考虑了历史故障的文本相似度,在这里使用的文本嵌入工具是fastText,也考虑了时间加权的影响。

上图展示了对当前故障以及历史上相似故障的上下文进行的总结。在这部分我们充分利用了大模型的能力,并且总结的效果达到了运维工程师预期。

简单来说,我们的工作,RCAssistant,就是让大语言模型根据当前的故障信息去寻找历史上出现的最相似的故障,然后给出对当前故障的分类和解释。

我们使用了来自微软的真实数据集进行对比试验,这个数据集收集了微软内部系统超过一年的故障信息。实验表明我们提出的方法明显优于对比的基准方法,并且不需要过高的推理时间。
总 结

我们提出的RCAssistant,提供了一种端到端的故障根因诊断的解决方案,首先是对故障相关的上下文信息进行采集,然后利用大语言模型来预测它的根因类别并给出解释。并且目前这套系统已经在微软的一些系统上做了部署得到满意的结果。
完整演讲视频,请关注CCF OpenAIOps社区视频号

相关文章:
基于大语言模型的云故障根因分析|顶会EuroSys24论文
*马明华 微软主管研究员 2021年CCF国际AIOps挑战赛程序委员会主席(第四届) 2021年博士毕业于清华大学,2020年在佐治亚理工学院做访问学者。主要研究方向是智能运维(AIOps)、软件可靠性。近年来在ICSE、FSE、ATC、EuroS…...
Windows直接运行python程序
Windows直接运行python程序 一、新建bat脚本二、新建vbs脚本 一、新建bat脚本 新建bat批处理脚本,写入以下内容 echo off call conda activate pytorch python app.pyecho off:在此语句后所有运行的命令都不显示命令行本身,但是本身的指令是…...
经典应用丨光伏行业扫码追溯新标杆,海康机器人AI智能读码器!
去年,光伏发电行业持续高速发展,我国仅在前九个月累计装机521.08GW,同比增长达到45.3%,已成为第二大电源类型超过水电。根据《2023中国与全球光伏发展白皮书》预测,到2030年,中国能够实现国家规划的风电和光…...
逆流而上的选择-积极生活,逆流而上
首先请大家看一个故事 李明坐在公司的开放式办公区,耳边是键盘敲击声的交响乐,眼前是一行行跳跃的代码。他的眼神有些恍惚,显示器的蓝光在他眼镜上反射出时代的光芒,这光芒既耀眼又刺眼。他即将35岁,在这个年纪&#x…...
SpringMVC基础Controller
文章目录 Controller 的编写和配置1. Controller 注解类型2. RequestMapping 注解类型3. 编写请求方法4. 请求参数和路径变量 Controller 的编写和配置 Controller 注解和 RequestMapping 注解是 Spring MVC 最重要的两个注解。 使用基于注解的控制器的优点如下: …...
spark 参数
spark.yarn.executor.memoryOverhead 默认值是384M Configuration - Spark 3.5.1 Documentation...
java调用jacob进行文件转换ppt转pdf或者png
java调用jacob进行文件转换ppt转pdf或者png 前情提要 最近项目上,遇到一个复杂的ppt,最终要求是要将ppt每一页转成图片原本这个是不难,网上一搜一大堆案例,外加我本身也比较精通aspose,那还不是分分钟搞定。结果就是…...
鸿蒙HarmonyOS应用开发之使用DevEco Studio模板构建NDK工程
NDK通过CMake和Ninja编译应用的C/C代码,编译过程如下图所示。 核心编译过程如下: 根据CMake配置脚本以及build-profile.json5中配置的externalNativeOptions构建参数,与缓存中的配置比对后,生成CMake命令并执行CMake。 执行Ninja…...
uniapp流浪动物救助小程序Java宠物领养小程序springboot
uniapp流浪动物救助小程序Java宠物领养小程序springboot 代码40块,需要的私聊 前台基于uniapp小程序 后台管理基于springbootvue前后端分离项目 开发语言:Java 框架:springboot vue JDK版本:JDK1.8(或11…...
工程企业的未来选择:Java版工程项目管理系统平台与数字化管理的融合
在现代化的工程项目管理中,一套功能全面、操作便捷的系统至关重要。本文将介绍一个基于Spring Cloud和Spring Boot技术的Java版工程项目管理系统,结合Vue和ElementUI实现前后端分离。该系统涵盖了项目管理、合同管理、预警管理、竣工管理、质量管理等多个…...
Vue使用el-statistic和el-card显示大屏中的统计数据
一、页面内容: <el-row :gutter"20"><el-col :span"6"><el-card class"box-card"><div><el-statisticgroup-separator",":precision"2":value"value2":title"tit…...
12.2024
如下图所示,小明用从1开始的正整数“蛇形”填充无限大的矩阵。 1 2 6 7 15 16 28 29... 35 8 14 17 27 30... 4 9 13 18 26 31... 10 12 19 25 32... 11 20 24 33... 21 23 34.. 22 35... 容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20行第20列的数是多少…...
【学习心得】Jupyter常用操作与魔法方法
一、安装与打开 Jupyter是什么我就不啰嗦了,直接安装: pip install jupyter 安装完后,在你想要打开的项目路径下,唤出CMD执行下面命令就可以使用jupyter notebook了 jupyter notebook 也可以用更加好用的jupyter lab࿰…...
Linux命令别名
别名是命令的快捷方式。对于需要经常执行,并需要很长时间输入的长命令创建快捷方式很有用。 临时修改 语法: alias 别名原命令 [选项] [参数][rootdd ~]# alias cdtcd /test #切换到/test下的快捷命令 删除别名: unalias 别名 unalias cd…...
Docker和 Containerd 的区别
自 Docker 开启了使用容器的爆发式增长,有越来越多的工具和标准来帮助管理和使用这项容器化技术,与此同时也造成了有很多术语让人感到困惑。 容器生态系统 容器生态系统是由许多令人兴奋的技术、大量的专业术语和大公司相互争斗组成的。 幸运的是&…...
Qt实现TFTP Server和 TFTP Client(二)
3 实现 3.1 Core Core模块包括下面4个类: TFTPBaseUdpTFtpClientFileTFtpServerFile 3.1.1 TFTP TFTP类实现了TFTP协议。 3.1.1.1 TFTP定义 class TFtp { public:TFtp();enum Code {RRQ 0x0001,//Read requestWRQ 0x0002,//Write requestDATA 0x0003…...
【b站李炎恢】Vue.js Element UI | 十天技能课堂 | 更新中... | 李炎恢
课程地址:【Vue.js Element UI | 十天技能课堂 | 更新中... | 李炎恢】 https://www.bilibili.com/video/BV1U54y127GB/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 备注:虽然标题声明还在更新中,但是看一些常用…...
AI大语言模型工程师学习路线
文章目录 运行LLMSLLM APIS开源的大语言模型Prompt engineering1. 明确目标2. 理解模型能力3. 使用示例4. 精确和具体的指令5. 考虑上下文6. 避免偏见和不准确的信息7. 测试和迭代8. 使用模板9. 考虑多语言能力10. 注意伦理和合规性结构化输出1. 使用明确的提示(Prompts)2. 采…...
基于树莓派实现 --- 智能家居
最效果展示 演示视频链接:基于树莓派实现的智能家居_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Tr421n7BM/?spm_id_from333.999.0.0 (PS:房屋模型的搭建是靠纸板箱和淘宝买的家居模型,户型参考了留学时短租的公寓~&a…...
基于Arduino IDE 野火ESP8266模块 一键配网 的开发
一、配网介绍 ESP8266 一键配网(也称为 SmartConfig 或 FastConfig)是一种允许用户通过智能手机上的应用程序快速配置 ESP8266 Wi-Fi 模块的方法,而无需手动输入 SSID 和密码。为了实现这一功能,则需要一个支持 SmartConfig 的智能…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
