基于大语言模型的云故障根因分析|顶会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 的智能…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...

如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...