当前位置: 首页 > news >正文

百度智能云将大模型引入网络故障定位的智能运维实践

物理网络中,某个设备发生故障,可能会引起一系列指标异常的告警。如何在短时间内从这些告警信息中找到真正的故障原因,犹如大海捞针,对于运维团队是一件很有挑战的事情。

在长期的物理网络运维工作建设中,百度智能云通过各种平台数据的综合分析实现了快速故障定位。近期,更是将大模型成功引入物理网络的故障定位中。相比过去传统的定位分析方法,大模型给网络故障定位的能力建设带来了很多改变。

接下来我们将简单介绍百度智能云在物理网络故障定位的发展历程,然后详细分享如何基于大模型进行故障定位的最新实践。

1    物理网络故障定位发展历程

在多年的网络运维工作实践中,百度智能云建设起了各类指标监控分析平台:

  • 白盒监控:基于交换机日志的故障发现和定位平台;
  • 黑盒监控:基于自探测的故障发现平台;
  • 多平面监控:基于骨干网平面的监控,可以提供骨干网设备级别的告警和故障定位;
  • 流量监控:基于流量突变的故障发现平台;
  • 传输监控:提供传输网络的监控告警;
  • 变更单平台:变更操作平台,可以查询变更记录;
  • AAA 审计平台:提供身份认证和审计的平台,可以查询操作人和操作命令。

1.1    人工定位

这些监控平台都有独立的故障发现和告警能力。他们之间的数据相互独立,没有实现很好的联动。同时,单个的故障发现平台不可能达到 100% 的定位的准确率,在大规模实践中容易出现误判的现象。

假设单个平台的准确率是 80% 的话,两个平台(假定他们不相关)同时定位到同一个设备,那么故障定位的准确性可以达到 96%,如果三个不相关的平台都定位到同一个设备,那么这个设备故障的可能性高达 99.2%。所以综合多个平台的定位结果,可以极大的提高定位的准确性。

所以,在过去一段时间,如果遇上单个监控平台无法提供明确定位信息的情况,我们还会人工收集各个监控平台的数据,然后借助运维人员的经验进行研判以保证定位的准确性。

1.2    综合定位

2024 年初,我们围绕物理网络运维「发现-定位-止损」的三大步骤,实现了故障处理流程的自动化操作。其中,「后羿故障定位」平台综合了白盒监控、黑盒监控、流量监控、传输监控、变更单记录、trace 2.0、多平面监控等各种信号源,通过算法进行「综合定位」,实现了故障定位的自动化,并提高了故障定位的准确性。

同时,由于「综合定位」对定位准确性的进一步提高,我们还构建起了「自动止损」能力,做到了快速排除业务故障,将故障对业务的影响时间大幅缩短。

其中,「综合定位」基于黑盒的告警触发。后羿平台会收集各个信号源的数据,基于时空的关联将可疑的信号捞取出来,按照算法进行分析。比如发生交换机的板卡故障的时候,黑盒会监控到丢包现象,这时候后羿平台就会检查白盒中是否存在板卡故障事件、流量监控中是否存在突降告警、trace 路径上是否出现无回包的现象、某个特定平面是否会丢包等数据,然后综合这些信号源判定有否故障发生。

我们在后羿平台上实现了面向多信号源的综合分分析和故障定位能力,流程和算法大致如下:

  • 根据黑盒告警,确定故障域,将故障的范围尽可能地缩小;
  • 基于这个故障域,查询各个平台时空关联度强的告警,得到一批「候选」的故障设备;
  • 同时触发实时定位的工具如 traceroute、流统等,也将得到一批「候选」的故障设备;
  • 在这些「候选」的故障设备的基础上,结合告警类型的优先级、设备的频次、设备的层级等,推断出故障的设备或者网络链路;
  • 推出定位结果,比如事件单平台、告警电话等,并联动自动止损功能。

1.3    AI 定位

但是,虽然「综合定位」可以大幅提高定位精度,但是也存在一些局限:

  • 为了提高准确率,需要付出更多分析和设计,逻辑复杂度变成指数级的的增长;
  • 复杂度的增大增加了代码维护的难度;
  • 不方便加入新的故障定位逻辑,涉及代码的更改和部署上线;
  • 运维同学期望平台能够给出每次故障的推理过程,而使用代码难以把复杂的分析过程描述清楚。

由于大语言模型非常适合进行推理和分析,所以如果我们在故障定位中成功引入大数据模型,可以预见的好处是:

  • 基于 LLM 的强大的推理能力,可以从各种信号源中找到最有可能的故障设备或者故障链路;
  • LLM 可以给出推理细节,详细介绍为什么故障分析会推断到某个设备,而代码缺少这种能力;
  • 便于维护和演化,一旦推理错误,我们可以及时且方便调整推理策略,立即发布和执行;
  • 更方便测试,我们可以直接将提示词在文心一言等大模型应用中测试和优化。

接下来将大家介绍在「后羿故障定位平台」中,我们如何采用结构化提示词和多智能体方式逐步调优 LLM 的推理和定位。

2    基于 AI 进行网络故障定位实践

当前,我们基于文心大模型(ernie-4.0-8k)进行 AI 定位。在定位结果中同时提供综合定位和 AI 定位的结果进行效果对比。

在进行 AI 定位前,我们需要对数据进行预处理。首先,我们对告警的数据进行归一化的处理,剔除重复的数据,不合理的告警等。然后定义各种告警的权重,比如常态有设备 CRC 的告警,我们就会将其权重降低;有些低级别的白盒基础事件权重就很小。这样我们就能保证 AI 能够依据告警优先级进行推理。

2.1    结构化提示词的应用

结构化的提示词可以充分发挥大模型的潜力。我们面向物理网络故障定位场景,摸索出了一套合适的结构化提示词模版。

  • 角色

首先假定 AI 的角色,假定它是某个领域的专家。

你是一位网络监控和分析定位专家,擅长从各种告警信号中识别出故障设备或光缆故障。

  • 任务

要给它明确的任务,让它清晰地知道做什么事。

以下提供一组设备故障时的报警信息,你需要根据这些报警信息,找出故障设备或光缆故障。

  • 奖赏

据说加上奖赏后 AI 会更加卖力,所以可以尝试加上奖赏的结构。

年底会给你最高的绩效,并且我每次定位的支付费用会翻 100 倍。

  • 输入格式(示例)

需要明确提供数据的格式,最好能够提供示例。

每条报警信息包含三个字段:报警类型、故障设备、故障描述(可为空)。字段之间用逗号分隔。每行包含一条报警信息,例如:

white_box_event,HD-M2NJ-111111.Int,流量下降

white_box_event,HD-M2NJ-222222.Int,

white_box_event,HD-M2NJ-33333.Int,流量下降

white_box_event,HD-M2NJ-44444.Int,

B1_mutiple_plane,光缆故障,

B1_mutiple_plane,光缆故障,

  • 规则

你可以给 AI 一定的规则,让 AI 在这个规则内进行推理。比如下面的优先级规则:

优先级规则如下:

1. 每种报警类型的优先级不同,优先级越高,设备故障的可能性越大,但是这些告警都要综合考虑。

2. 同一设备的不同报警类型越多,该设备故障的可能性越大,但同一类型的报警只算一次。

3. 同一类型的光缆故障只算一次。

.....

7. 不管怎么样,最终结果务必给出一个结论。

  • 输出格式

你可以指定输出的格式,方便处理结果。比如下面的格式要求 AI 只输出定位结果:

只需要按照下面的格式输出推断结果,一定不要输出推理逻辑:\n 故障设备: {故障设备}

你还可以让 AI 输出推理过程,分析 AI 是怎么推理出这个结果的,方便后续的优化:

按照下面的格式输出推断结果:\n 故障设备: {故障设备}\n 推断逻辑: {推断逻辑}

2.2    一个 AI 定位的例子

按照这个结构化提示词的模版,加上各种处理过后的信号源,我们就可以为每一个告警事件构建相关的提示词,然后通过百度智能云的千帆大模型平台,调用文心大模型(ernie-4.0-8k)进行推理分析。大模型故障定位的结果如下:

2.3    AI 定位和综合定位的结果对比

通过跟踪每天的告警,我们可以比较「综合定位」的结果和「AI 定位」的结果:

比如编号 171728 这个故障,「综合定位」研判它是 BD-XXXXXX-LE-1-XXXXXX 设备抖动,它是一台 LEAF 设备。AI 定位研判它是 BD-XXXXXX-LE-1-XXXXXX 和 BD-XXXXXX-SP-4-XXXXXX 这两台设备的抖动。通过比较可以发现,「AI 定位」比「综合定位」多定位出了一台 SPINE 设备。

实际上,故障就是是这台 SPINE 设备和这台 LEAF 设备之间的链路抖动,影响了这条链路的两头的端口,所以「AI 定位」能够报出这两台设备,这说明他在故障定位中会更准确一些。

2.4    让 LLM 给出故障定位的推理逻辑

甚至,我们还可以让 LLM 告诉他的故障定位的推理过程。

如果使用代码把推理过程写出来,还是比较困难的,因为代码基本就是 if-else 流程。但是如果是 LLM ,就容易多了。我们可以在提示词输出格式中加上「推理逻辑:{推理逻辑}」,也就是告诉 LLM 需要把推理过程输出出来。看一个例子:

在上图这个例子中,整个故障包含了流量下降和白盒日志等事件,这些事件都涉及 BD-XXXXXXXXX-SC-XXXXXXXXX-37.Int 这台设备,所以这台设备出现故障的可能性很大,同时没有传输告警等其它事件的干扰,能够进一步确定是这台设备出现了故障。

实际上,我们可以使用各种大语言模型进行推理,不限于文心,比如 Llama2。

所以我们还可以采用多智能体的方式,进一步提高故障定位的准确率。比如为每一款 LLM 大语言模型制作一个智能体,多个智能体同时进行定位,然后综合多个智能体的结果进一步定位。

2.5    多智能体辅助定位

在实践中,我们采用了双智能体的方式,主智能体是文心大模型(ernie-4.0-8k),辅助智能体是 Llama_2_70b。

  • 首先,我们让文心大模型推理出一个结果 L1;
  • 然后,让 Llama 2 模型推理出一个结果 L2 和推理过程 R1;
  • 对比 L1 和 L2 结果。如果两者一样,说明两个大模型的推理是一致的,返回这个结果;
  • 否则, 把 L2 和 R1 扔给文心大模型,并告诉它这是 Llama 2 的推理结果和推理过程,让它再一次推理,得到结果 L3;
  • 最后返回 L3。

比如下面的一个故障, 是上述过程 3 的一个展示。

图片

下面这个例子是上述过程 4 和 5 的展示。第一次定位,文心大模型和综合定位的结果相同,但是和 Llama2 的结果不同,所以将 Llama2 的结果和推理逻辑扔给文心大模型后再次定位,得到了和 Llama2 相同的结果,这也和实际情况相同:

针对多智能体辅助定位这个功能,我们做成了一个按需调用的工具,只是用来做观察和调优。如果发现文心大模型的单次 AI 定位不准确的话,我们就会使用这种多多智能体辅助定位的方式,以便优化文心大模型的单次定位效果。

3    总结与展望

目前,百度智能云已经在骨干网网络质量监控中引入了 AI 定位的能力,并且取得了不错的效果。我们正在将这个能力推广到机房的物理网络故障定位、网关的故障定位等场景。

同时,我们的 AI 定位能力还可以进一步优化,比如为大模型提供网络的拓扑信息、增加更多的告警来源等,让 AI 定位更精准。

相关文章:

百度智能云将大模型引入网络故障定位的智能运维实践

物理网络中,某个设备发生故障,可能会引起一系列指标异常的告警。如何在短时间内从这些告警信息中找到真正的故障原因,犹如大海捞针,对于运维团队是一件很有挑战的事情。 在长期的物理网络运维工作建设中,百度智能云通…...

晚上定时编译android系统

1、问题 可能偶然想晚上定时编译android系统 2、解决 at.sh #!/bin/sh# at -f at.sh now1min # at -lset -e set -xecho $SHELLecho at build begin /bin/date >> at_build.log/bin/bash -c source build/envsetup.sh >> at_build.log 2>&1; lunch xxx-us…...

轻薄鼠标的硬核选购攻略,很多人都在“高性价比”鼠标上栽跟头了

轻薄款设计的鼠标是目前鼠标市场的出货大头, 也是价格最卷的一类鼠标。 比游戏鼠标或许更卷一些。 这和当前的移动办公趋势关系很大。 这类鼠标主要跟笔记本和iPad搭配。 核心的使用场景是办公。 因此轻薄和静音是这类鼠标的核心卖点。 同时用户并不愿意付出太…...

Python制作签到系统

import datetime sign_in_records {} def sign_in(username): today datetime.date.today() if username not in sign_in_records: sign_in_records[username] [] sign_in_records[username].append(today) print(f"{username} 签到成功&#…...

面试题007-Java-Spring

面试题007-Java-Spring 目录 面试题007-Java-Spring题目自测题目答案1. 简单介绍一下Spring?2. Spring有哪些模块?3. 什么是Spring IoC ?4. 什么是依赖注入?有哪几种方式可以进行依赖注入?5. 什么是Spring AOP ?6. 什…...

后端之路——登录校验前言(Cookie\ Session\ JWT令牌)

前言:Servlet 【登录校验】这个功能技术的基础是【会话技术】,那么在讲【会话技术】的时候必然要谈到【Cookie】和【Session】这两个东西,那么在这之前必须要先讲一下一个很重要但是很多人都会忽略的一个知识点:【Servlet】 什么是…...

【蓄势·致远】 同为科技(TOWE)2024年年中会议

2024年7月2日-8日,同为科技(TOWE)召开2024年年中工作会议。会议回顾上半年总体工作情况,分析研判发展形势,规划部署下半年工作。 为期一周的工作会议,由同为科技(TOWE)创始人、董事长…...

通过git将文件push到github 远程仓库

1.先git clone 代码地址 git clone htttp://github.com/用户名/test.git 2. 添加文件 例如:touch 1.txt 3.将文件添加到暂存区 git add 1.txt 4.提交 git commit -m "commit 1.txt" 5.与远程仓库建立关联 git remote add 远程仓库名 远程仓库…...

如何判断服务器是否被攻击

如何判断服务器是否被攻击 一、异常流量模式 一种判断服务器是否遭到攻击的方法是监控网络流量。异常的流量模式,例如流量突然剧增或减少,都可能是攻击的迹象。通常,大量的入站流量表明分布式拒绝服务(DDoS)攻击的可能…...

泽众一站式性能测试平台P-One监控指标的意义

在当今数字化和信息化高度发展的时代,企业把保障系统稳定运行、优化业务流程和提升用户体验摆在首要位置。然而,在现如今复杂的分布式系统中,各个组件和服务之间的交互频繁且紧密,当系统出现性能瓶颈时,传统的监测手段…...

前端Canvas入门——一些注意事项

创建渐变的三种方法: createLinearGradient() - 线性渐变 createRadialGradient() - 径向渐变(放射性渐变) createConicGradient() - 锥形渐变 这三种的核心观点都是: 创建一个gradient对象,然后调用addColorStop()方法…...

移动互联安全扩展要求测评项

安全物理环境-无线接入点的位置选择 应为无线接入设备的安装选择合理位置,避免过度覆盖和电磁干扰。 无线接入设备的安装位置选择不当,易被攻击者利用,特别是攻击者会通过无线信号过度覆盖的弱点进行无线渗透攻击,因此要选择合理…...

【代码随想录】【算法训练营】【第64天】 [卡码117]软件构建 [卡码47]参加科学大会

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 64,周三,继续ding~ 题目详情 [卡码117] 软件构建 题目描述 卡码117 软件构建 解题思路 前提: 思路: 重点: 代码实现 C语言 [卡码…...

【python算法学习1】用递归和循环分别写下 fibonacci 斐波拉契数列,比较差异

问题: fibonacci 斐波拉契数列,用递归和循环的方法分别写,比较递归和循环的思路和写法的差别 最直接的思路,是写递归方法 循环方法的稍微有点绕,我觉得问题主要是出在,总结循环的通项公式更麻烦,难在数学…...

【邀请函】庭田科技邀您第五届中国国际复合材料科技大会

第五届中国国际复合材料科技大会暨第七届国际复合材料产业创新成果技术展示(ICIE7-新疆)将于7月25-27日在新疆乌鲁木齐-国际会展中心举行。上海庭田信息科技有限公司将携多款仿真模拟软件亮相本次大会,诚挚欢迎各位到场咨询了解! …...

win32:第一个窗口程序-应用程序入口点(part.6)

第一个窗口程序的最后一部分:应用程序入口函数wWinMain;这是Windows应用程序的主函数,负责初始化应用程序、注册窗口类、创建主窗口并进入消息循环处理消息。 int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInst…...

c++ 多边形 xyz 数据 获取 中心点方法,线的中心点取中心值搞定 已解决

有需求需要对。多边形 获取中心点方法&#xff0c;绝大多数都是 puthon和java版本。立体几何学中的知识。 封装函数 point ##########::getCenterOfGravity(std::vector<point> polygon) {if (polygon.size() < 2)return point();auto Area [](point p0, point p1, p…...

ext_errno:拓展errno

类似于C库的errno机制&#xff0c;报告错误发生的原因以及所在的位置&#xff0c;通过查询来获取。...

【CUDA】 Trust基本特性介绍及性能分析

Trust简介 Thrust 是一个实现了众多基本并行算法的 C 模板库,类似于 C 的标准模板库(standard template library, STL)。该库自动包含在 CUDA 工具箱中。这是一个模板库,仅仅由一些头文件组成。在使用该库的某个功能时,包含需要的头文件即可。该库中的所有类型与函数都在命名空…...

颈肩肌筋膜炎中医治疗

颈肩肌筋膜炎&#xff0c;又称颈肩肌纤维织炎或肌肉风湿症&#xff0c;是一种涉及筋膜、肌肉、肌腱和韧带等软组织的无菌性炎症。以下将分别从症状和治疗两方面进行详细介绍。 一、颈肩肌筋膜炎的症状 颈肩肌筋膜炎的主要症状包括&#xff1a; 1、肩背部疼痛&#xff1a;患者…...

Java 通配符 在短信发送之中 通配符参数动态获取解决方案

目录 1、通配符应用场景 2、实现方案分析 2.1、可能针对不同模板中核定参数硬编码到程序之中写死 2.2、通配置模板之中动态获得对应的参数 3、通过正则表达式验证与替换参数${}参考示例 4、参考文章 1、通配符应用场景 我们在使用通配符场景&#xff0c;主要是应用于短信…...

Mybatis-Plus中LambdaQueryWrapper

基本用法 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; // 假设有一个 User 实体类 LambdaQueryWrapper<User> queryWrapper new LambdaQueryWrapper<>(); // 添加查询条件 queryWrapper.eq(User::getName, "John&quo…...

C++ 入门05:类和对象

往期回顾&#xff1a; C 入门02&#xff1a;控制结构和循环-CSDN博客C 入门03&#xff1a;函数与作用域-CSDN博客C 入门04&#xff1a;数组与字符串-CSDN博客 一、前言 在前面文章的学习中&#xff0c;我们了解了 C 的基本结构、变量、输入输出、控制结构、循环、函数、作用域…...

4G LTE教程

整体架构 物理层&#xff08;第 1 层&#xff09; 物理层通过空中接口传输来自 MAC 传输信道的所有信息。负责 RRC 层的链路自适应 (AMC)、功率控制、小区搜索&#xff08;用于初始同步和切换目的&#xff09;和其他测量&#xff08;LTE 系统内部和系统之间&#xff09;。 介…...

C++:哈希表

哈希表概念 哈希表可以简单理解为&#xff1a;把数据转化为数组的下标&#xff0c;然后用数组的下标对应的值来表示这个数据。如果我们想要搜索这个数据&#xff0c;直接计算出这个数据的下标&#xff0c;然后就可以直接访问数组对应的位置&#xff0c;所以可以用O(1)的复杂度…...

自己动手写一个滑动验证码组件(后端为Spring Boot项目)

近期参加的项目&#xff0c;主管丢给我一个任务&#xff0c;说要支持滑动验证码。我身为50岁的软件攻城狮&#xff0c;当时正背着双手&#xff0c;好像一个受训的保安似的&#xff0c;中规中矩地参加每日站会&#xff0c;心想滑动验证码在今时今日已经是标配了&#xff0c;司空…...

keepalive脑裂

keepalive脑裂 调度器的高可用 vip地址主备之间的切换&#xff0c;主在工作时&#xff0c;p地址只在主上&#xff0c;主停止工作&#xff0c;ip飘移到备服务器。 在主备的优先级不变的情况下&#xff0c;主恢复工作&#xff0c;vip会飘回到主服务器。 1、配优先级 2、配置…...

STM32Cubemx配置生成 Keil AC6支持代码

文章目录 一、前言二、AC 6配置2.1 ARM ComPiler 选择AC62.2 AC6 UTF-8的编译命令会报错 三、STM32Cubemx 配置3.1 找到stm32cubemx的模板位置3.2 替换文件内核文件3.3 修改 cmsis_os.c文件3.4 修改本地 四、编译对比 一、前言 使用keil ARM compiler V5的时候&#xff0c;编译…...

Perl基础入门指南:从零开始掌握Perl编程

Perl是一种功能强大且灵活的编程语言&#xff0c;广泛应用于系统管理、Web开发、网络编程和文本处理等领域。如果你是编程新手或者想学习一种新的编程语言&#xff0c;Perl是一个不错的选择。本文将带你了解Perl的基础知识&#xff0c;并通过简单的示例代码帮助你快速入门。 什…...

Mybatis SQL注解使用场景

MyBatis 提供了几种常用的注解&#xff0c;主要用于简化 XML 映射文件的编写&#xff0c;使得 SQL 查询和操作可以直接在 Java 接口中定义。下面列出了主要的注解以及它们在被调用时的写法示例&#xff1a; 1. Select Select 注解用于执行查询操作&#xff0c;并将查询结果映…...

做红包图片的网站/最近韩国电影片

1. 创建标准的表格Code:<table border"2" style"text-align:center"> <!表格的开始标签,定义边框为2,定义文本居中显示><tr> <!第1行开始标签><th>Head…...

wordpress 去广告插件/福州网站优化公司

转载自http://www.importnew.com/18884.html 本文将介绍 Java 中 Integer 缓存的相关知识。这是 Java 5 中引入的一个有助于节省内存、提高性能的特性。首先看一个使用 Integer 的示例代码&#xff0c;展示了 Integer 的缓存行为。接着我们将学习这种实现的原因和目的。你可以先…...

响应式网站 手机版/如何创建一个个人网站

都说磨刀不误砍柴工&#xff0c;同样学习跟磨刀一样&#xff0c;亦是同样道理。成功都是需要厚积薄发。今天来学习一下Excel表格如何忽略隐藏行或是忽略隐藏列进行求和。一、忽略隐藏行求和例如&#xff0c;以下表格&#xff1a;平时看到这么一个表格&#xff0c;需要给产品汇总…...

wordpress文章导入插件/百度风云榜小说排行榜历届榜单

在文章的开头&#xff0c;先说下NPE问题&#xff0c;NPE问题就是&#xff0c;我们在开发中经常碰到的NullPointerException.假设我们有两个类&#xff0c;他们的UML类图如下图所示 在这种情况下&#xff0c;有如下代码 user.getAddress().getProvince();这种写法&#xff0c;在…...

网站开发遵循/免费的外贸b2b网站

45.买股票的最佳时机 题目描述 假设你有一个数组&#xff0c;其中第\ i i 个元素是股票在第\ i i 天的价格。 你有一次买入和卖出的机会。&#xff08;只有买入了股票以后才能卖出&#xff09;。请你设计一个算法来计算可以获得的最大收益。 输入 [1,4,2]返回值 3输入 [2…...

承德做网站/友情链接英文

1.首先安装好LAMP这一个组合&#xff0c;在安装的过程中重点关注PHP的安装./configure --prefix/usr/local/php5 --enable-mbstring--with-apxs2/usr/local/apache2/bin/apxs--with-mysql/usr/local/mysql--with-config-file-path/usr/local/php5--with-zlibmake ;make install…...