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

news2024/11/18 11:24:02

在这里插入图片描述

*马明华 微软主管研究员
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社区视频号

在这里插入图片描述

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

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

相关文章

【系统架构师】-第13章-层次式架构设计

层次式体系结构设计是将系统组成一个层次结构,每一层 为上层服务 ,并作为下层客户。 在一些层次系统中,除了一些精心挑选的输出函数外, 内部的层接口只对相邻的层可见 。 连接件通过决定层间如何交互的协议来定义,拓扑…

免费SSL证书和付费SSL证书的区别点

背景: 在了解免费SSL证书和付费SSL证书的区别之前,先带大家了解一下SSL证书的概念和作用。 SSL证书的概念: SSL证书就是基于http超文本传输协议的延伸,在http访问的基础上增加了一个文本传输加密的协议,由于http是明…

让手机平板成为AI开发利器:AidLux

想ssh登录自己的手机吗? 想在手机上自由的安装lynx、python、vscode、jupyter甚至飞桨PaddlePaddle、Tensorflow、Pytorch和昇思Mindspore吗? 那么看这里....装上AidLux,以上全都有! AidLux是一个综合的AI开发平台,…

Java 学习和实践笔记(49):用javabean和一维数组的方式来存储表格数据

还是存储下面这个表格的数据,但使用另一种方法来做。 用javabean和一维数组的方法来做,示例代码如下: /*先创建一个类,其实就是创建好一个只有各属性列的空表格*/ class Employees {private int id;private String name;private …

python学习12:python中的字符串格式化-数字精度控制

python中的字符串格式化-数字精度控制 1.使用辅助符号"m.n"来进行数据的宽度和精度的控制 m,控制宽度,要求是数字(一般是很少使用的),设置的宽度小于数字自身,不生效 n,控制小数点精度,要求是数…

瑞_23种设计模式_观察者模式

文章目录 1 观察者模式(Observer Pattern)1.1 介绍1.2 概述1.3 观察者模式的结构1.4 观察者模式的优缺点1.5 观察者模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK中提供的观察者模式实现 ★4.1 Observable类4.2 Obse…

CCF-CSP真题202206-2《寻宝!大冒险!》

题目背景 暑假要到了。可惜由于种种原因,小 P 原本的出游计划取消。失望的小 P 只能留在西西艾弗岛上度过一个略显单调的假期……直到…… 某天,小 P 获得了一张神秘的藏宝图。 问题描述 西西艾弗岛上种有 n 棵树,这些树的具体位置记录在…

芝麻云节点服务器:零知识加密与跨用户兼得

海量大数据是指数据量特别大、数据类别非常大的数据集,而这样的数据集无法使用传统的数据库工具进行捕获、管理和处理。 数据量太大,没有地方存放。 服务器硬盘能存储多少数据肯定无法满足如此大量的数据存储需求。 因此,分布式存储系统应运而…

libVLC 动态视频壁纸

在 Windows 上,你可能需要使用 Windows API 来设置壁纸,而在 Linux 上,你可能需要使用某种桌面环境特有的方法。在 macOS 上,这一功能可能受到限制。 效果图如下所示: 以下是一个简单的示例,说明了如何在 …

ubuntu22.04系统安装Opencv4.8.0+Opencv-contrib4.8.0

一、安装下载所需工具 1.打开终端,输入以下命令来更新软件源: sudo apt-get update 2.安装wget: sudo apt-get install wget 3.下载opencv和opencv-contrib包: wget -O opencv-4.8.0.zip https://github.com/opencv/opencv/…

Vue的安装与启动

工程化 通过vue脚手架创建vue项目 1.全局安装脚手架 npm install vue/cli -g 注:如果网络太慢,则优先安装淘宝镜像 npm install -g cnpm --registryhttps://registry.npmmirror.com 安装好后 cnpm -v 查看淘宝镜像的版本 之后通过淘宝镜像安装脚手…

Spring实战:采用Spring配置文件管理Bean

文章目录 一、Spring框架概述二、实战:采用Spring配置文件管理Bean(一)创建Jakarta EE项目(二)添加Spring依赖(三)创建杀龙任务类(四)创建勇敢骑士类(五&…

显示器接口的了解

显示器视频接口科普:看完就懂HDMI、DP、DVI、VGA、USB-C哪个更适合你的电脑外接显示器_哔哩哔哩_bilibili 电脑显示接口: VGA,DVI,HDMI,DP,USB-C VGA:基本被淘汰了。 常见的还是HDMI1.4和2.0规格 更适合电脑使用的DP接口(免费)…

开源AI引擎|企业合同管理:自然语言处理与OCR技术深度融合

一、企业应用:合同智能管理 结合NLP和OCR技术,企业可以构建智能化的合同管理系统,实现合同的自动化审查、风险评估和知识抽取。这样的系统不仅能够提高合同处理的效率,还能够降低人为错误,加强风险控制。 例如&#x…

蓝桥杯-网络安全比赛(2)基础学习-正则表达式匹配电话号码、HTTP网址、IP地址、密码校验

正则表达式(Regular Expression):定义:一种强大的文本处理工具,用于描述、匹配和查找字符串中的特定模式。应用:密码验证、文本搜索和替换、数据清洗等。特点:通过特定的元字符和规则来构建复杂…

07_Response

文章目录 案例(请求分发案例) Response响应行响应头响应体特殊响应头refreshContent-typeContent-dispositionlocation 案例(登录案例) 案例(请求分发案例) 场景:有多个请求 Http://localhost:…

【检索稳定|火爆征稿中】2024年企业管理与数字化经济国际学术会议(ICBMDE 2024)

【检索稳定|火爆征稿中】2024年企业管理与数字化经济国际学术会议(ICBMDE 2024) 2024 International Conference on Business Management and Digital Economy(ICBMDE 2024) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…

6_相机坐标系_相机4个坐标系详述

相机系列文章是用来记录使用opencv3来完成单目相机和6轴机械臂手眼标定。本人吃饭的主职是linux下6轴机械臂相关应用开发。但对于机械臂运动学、相机应用等都非常感兴趣,所以对一些线性代数基础薄弱又想深入了解机械臂内部运算的同志比较有体会。由于是探索性学习&a…

基于Spring Boot的在线学习系统的设计与实现

基于Spring Boot的在线学习系统的设计与实现 摘 要 在线学习系统是以大学传统线下教学方式不适应信息技术的迅速发展为背景,提高学习效率,解决传统教学问题,并且高效的实现教学信息化的一款软件系统。为了更好的实现对于教学和学生的管理&a…

Dockerfile:自定义镜像

Dockerfile 是一个文本文件,其中包含了一系列用于自动化构建Docker镜像的指令。通过编写Dockerfile,开发者能够明确地定义一个软件应用及其运行环境应该如何被封装进一个可移植、可重复构建的Docker镜像中。 第一步:在/tmp文件下新建docker…