基于大语言模型的云故障根因分析|顶会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社区视频号

在这里插入图片描述

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

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

相关文章

人脸68关键点与K210疲劳检测

目录 人脸68关键点检测 检测闭眼睁眼 双眼关键点检测 计算眼睛的闭合程度: 原理: 设置阈值进行判断 实时监测和更新 拓展:通过判断上下眼皮重合程度去判断是否闭眼 检测嘴巴是否闭合 提取嘴唇上下轮廓的关键点 计算嘴唇上下轮廓关键点之间的距…

喜讯!聚铭网络荣获《日志分类方法及系统》发明专利

近日,聚铭网络又喜获一项殊荣,其申报的《日志分类方法及系统》发明专利成功获得国家知识产权局的授权,正式荣获国家发明专利证书。 在信息化时代,网络安全问题日益凸显,日志分析作为保障网络安全的重要手段&#xff…

SpringBoot多线程查询实战-查询库中所有数据多线程实现

文章目录 案例说明测试结论Controller层核心代码测试数据生成测试报告源码获取 案例说明 本案例我们希望使用三种方式查询数据库某张表下所有数据: 单线程分页查询获取所有数据单线程直接查询获取所有数据多线程分页查询获取所有数据 测试结论 ​ ​ ​在比较…

Kafka高级面试题-2024

Kafka中的Topic和Partition有什么关系? 在Kafka中,Topic和Partition是两个密切相关的概念。 Topic是Kafka中消息的逻辑分类,可以看作是一个消息的存储类别。它是按照不同的主题对消息进行分类,并且可以用于区分和筛选数据。每个…

3D数据格式导出工具HOOPS Publish如何生成高质量3D PDF?

在当今数字化时代,从建筑设计到制造业,从医学领域到电子游戏开发,3D技术已经成为了不可或缺的一部分。在这个进程中,将3D模型导出为3D PDF格式具有重要的意义。同时,HOOPS Publish作为一个领先的解决方案,为…

通过Jmeter准备压测数据-mysql示例

1、新建线程组 总共30万条数据 2、创建jdbc链接 创建jdbc连接配置 配置mysql连接 需要在jmeter安装的路径\apache-jmeter-5.6.3\lib\ext 目录下添加mysql 驱动 3、创建jdbc请求 jdbc链接名称需要与上一步中的保持一致,同时添加insert语句 例如 INSERT INTO test…

iOS - Runtime-消息机制-objc_msgSend()

iOS - Runtime-消息机制-objc_msgSend() 前言 本章主要介绍消息机制-objc_msgSend的执行流程,分为消息发送、动态方法解析、消息转发三个阶段,每个阶段可以做什么。还介绍了super的本质是什么,如何调用的 1. objc_msgSend执行流程 OC中的…

阿里云实时计算Flink的产品化思考与实践【上】

摘要:本文整理自阿里云高级产品专家黄鹏程和阿里云技术专家陈婧敏在 FFA 2023 平台建设专场中的分享。内容主要为以下五部分: 阿里云实时计算 Flink 简介产品化思考产品化实践SQL 产品化思考及实践展望 该主题由黄鹏程和陈婧敏共同完成,前半程…

HMI的学习

什么是HMI?了解HMI或人机界面的一些基础知识_哔哩哔哩_bilibili Human Machine Interface 人机界面 在工业中使用HMI来控制和监视设备 常见的HMI是ATM机 通过屏幕和按钮来完成取款或存款 工业中,操作员或维护人员可以从HMI操作和监视设备。 它们可能…

java调用jacob进行文件转换ppt转pdf或者png

java调用jacob进行文件转换ppt转pdf或者png 前情提要 最近项目上,遇到一个复杂的ppt,最终要求是要将ppt每一页转成图片原本这个是不难,网上一搜一大堆案例,外加我本身也比较精通aspose,那还不是分分钟搞定。结果就是…

Django 中间件

【一】Django框架之生命周期流程图 【二】介绍 【1】概述 Django 中的中间件(Middleware)是一个轻量级、底层的“插件”系统,用来全局地改变 Django 的输入或输出。每个中间件组件负责处理特定的全局任务,例如处理会话、处理跨站…

GDAL的数据类型(9)

GDT_Byte 1(C中对应unsigned char) GDT_CFloat32 10 GDT_CFloat64 11 GDT_CInt16 8 GDT_CInt32 9 GDT_Float32 6(C中对应float) GDT_Float64 7 (C中对应double) GDT_Int16 3(C中对应 short 或 short int) GDT_Int32 5(C中对应int 或 …

【有限状态机】- FSM详细讲解 【附Autoware有限状态机模型代码讲解】

参考博客: (1)FSM(有限状态机) (2)关于有限状态机(FSM)的一些思考 (3)状态设计模式 1 状态机简介 有限状态机FSM:有限个状态以及在这些状态之间的转移和动作…

2024年最新最全Vue3开源后台管理系统复盘总结

在现代前端开发中,搭建一个高效、灵活、易用的后台管理系统并不容易。然而,Vue3 的出现为我们提供了一个备受瞩目的选择。作为一个现代化的前端框架,Vue3 具有众多优点,能够帮助开发者快速搭建企业级中后台产品原型。 今天&#…

iphoneX系统的参数

1. 2. 3. 4. 5.相关的网址信息 Apple iPhone X 規格、价格和评论 | Kalvo Apple iPhone X 規格、价格和评论 | Kalvo

UOS、Linux下的redis的详细部署流程(适用于内网)

提示:适用于Linux以及UOS等内外网系统服务器部署。 文章目录 一.上传离线包二.部署基本环境三.解压并安装redis四.后台运行redis五.uos系统可能遇到的问题六.总结 一.上传离线包 1.自己去Redis官网下载适配自己部署系统的redis安装包。 2.通过文件传输工具&#xf…

Rust使用原始字符串字面量实现Regex双引号嵌套双引号正则匹配

rust使用Regex实现正则匹配的时候,如果想实现匹配双引号,就需要使用原始字符串字面量,不然无法使用双引号嵌套的。r#"..."# 就表示原始字符串字面量。 比如使用双引号匹配: use regex::Regex;fn main() {println!(&qu…

使用INSERT INTO ... ON DUPLICATE KEY UPDATE批量插入更新导入excel数据的实践场景应用

INSERT INTO ... ON DUPLICATE KEY UPDATE 是 MySQL 中的一个非常有用的语法,它允许你在插入新记录时,如果记录的唯一键(如主键或唯一索引)已存在,则执行更新操作而不是插入。这可以帮助你避免在插入数据时产生的重复键…

快速幂算法在Java中的应用

引言: 在计算机科学和算法领域中,快速幂算法是一种用于高效计算幂运算的技术。在实际编程中,特别是在处理大数幂运算时,快速幂算法能够显著提高计算效率。本文将介绍如何在Java中实现快速幂算法,并给出一些示例代码和应…

151 shell编程,正则表达式,在C语言中如何使用正则表达式

零,坑点记录:bash 和 dash 的区别,导致的坑点 查看当前用的shell 是啥,用的是/bin/bash hunandedehunandede-virtual-machine:~$ echo $SHELL /bin/bash 当shell 脚本运行的时候(后面会学到方法,这里是最…