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

从数字化到智能化,百度 SRE 数智免疫系统的演进和实践

1.    为什么 SRE 需要数智免疫系统?

2022 年 10 月,在 Gartner 公布的 2023 年十大战略技术趋势中提到了「数字免疫系统」的概念,旨在通过结合数据驱动的一系列手段来提高系统的弹性和稳定性。

在过去 2 年的时间里,百度基于该免疫能力的指导思想,实践落地了一套数字免疫系统,并在 AI 大模型能力的加持下逐渐向「数智免疫系统」转型。目前已覆盖厂内关键业务和重点产品,为稳定性保障方式带来了新的路径。

大型系统的风险来源多样,业务更替、系统迭代、人员流动等都有可能引入不稳定因素。随着微服务化带来的系统规模扩大和迭代效率提升,这一现象更为突出,百度内部 2021 年至 2022 年间有感 case 统计来看,存在「基础能力退化」和「能力缺失」现象的 case 占比增长了 153%。比如:

  • (感知能力缺失)已经给这些服务统一加上了标准化告警,但是不清楚为什么没有覆盖到本次的问题服务。
  • (隔离能力退化)服务所需的机房资源短期供给不足,所以临时用了别的机房资源导致了本次风险扩散。
  • (感知能力退化)服务做了一次日志结构升级,非预期导致之前的监控采集不到数据,所以没发现问题。

在内部复盘会议上,经常会出现上述类似的能力退化和缺失问题。同样,观察近 3年国内外规模性的故障案例亦是如此:

  • 2022、2023 年友商 C 端业务多地域多服务规模性问题,暴露出了隔离不足、拦截能力缺失、多服务耦合影响等问题。
  • 2024 年 CrowdStrike 的安全更新发布导致微软 Windows PC 全球范围大规模崩溃问题,也暴露出了验证能力缺失、分级发布能力退化等现象。

从上述内外部的 case 分析中不难发现,「能力退化」和「能力缺失」的问题一定会往复出现,如果没有及时识别、治理这些偶现的风险,则一定会最终相互作用引发规模性故障。

如今,业务、系统、技术的发展在继续加速,规模也在继续扩大。传统的人工筛查以及被动的质量保障方式(如 on call 模式),面对潜在风险问题时仍具有滞后性。我们需要进一步探索转被动为主动的新保障路径:发现退化、挖掘风险,建设长期可维护的质量保障方式。

从另一个角度来看,随着服务云原生化程度不断提高(基建、底层平台、技术栈的逐步统一),服务以及配套的基础能力的「同治性」也在不断提升,具备了数字化转型的基础。同时,近 2 年 AI 大模型的飞速发展也给智能化保障方式带来了新的思路,依托大模型构建可迭代的知识网络体系,让 AI 进一步辅助挖掘未知风险和指导能力建设,从而实现数字化向数智化的进化。

2.    百度 SRE 数智免疫系统的建设成果

线上系统可能的风险来源多种多样(如图 1),结合系统架构,我们从多维度建设了不同的保障能力(如图 2)。一方面我们需要持续保障已建设能力的有效性,另一方面也需要持续去挖掘潜在的风险问题(如能力缺失等)。

图片

图 1 风险来源视图

图片

图 2 能力保障分类图

因此,数智免疫系统期望结合数字化 + 智能化的方式,实现对已建设能力有效性识别,和对潜在风险的主动挖掘,以此持续保障线上的稳定性能力。在落地实践中,我们制定了 3 个推进阶段:

  • 推进数字化转型:期望刻画质量能力数字化描述,为后续可基于数字化数据进行识别、修复打下基础。(易识别)
  • 落地风险的识别:通过底层统一数仓和可编排的规则库,基于工程规则的方式,提供统一的识别、治理能力。(易治理)
  • 探索智能化路径:结合 AI 大模型和 RAG 能力,构建运维泛化知识体系。依托 AI 大模型 + RAG 代替工程规则进行风险挖掘,长期解决工程规则的滞后性和高维护成本问题。(易维护)

2023 年,我们重点推进第一阶段数字化转型的实践落地,以数字化的方式刻画了传统的质量保障能力。

2024 年,我们重点投入在基于工程规则的风险挖掘能力和产品化生态建设,通过引入统一数仓和可编排规则库的方式,不仅提供了开箱即用的基础通用策略,也同时支撑了用户的特性需求和拓展需求,降低了建设成本。

同时在 AI 潮流下,试点了基于 AI 大模型 + RAG 的风险挖掘方式,并在模块级容量保障方向上进行了落地。

图片

图 3 百度数智免疫系统登录界面

截止到当前:

  • 数字化数据已覆盖百度核心产品的监控告警、分级发布、容量感知、架构隔离和预案能力等 5 大方向,历史基础质量能力退化类 case 覆盖度 > 85%
  • 业务覆盖上支撑了各项关键业务,累计接入服务 20,000+
  • 通用质量规则覆盖厂内主流的监控平台、PaaS 平台、变更发布平台,天级识别 40,000+ 能力项;
  • 2023 ~ 2024 年在接入业务线累计识别和治理风险 5,000+ 项,对比 2021 ~2022 年,能力退化类 case 占比收敛了约 40%,监控感知、分级发布和架构隔离的质量能力风险从 10.2% 收敛到 3.2%。

3.    百度 SRE 数智免疫系统演进和实践

3.1.    阶段一:数字化转型,用数据刻画关键的能力场景

基于上文图 2 中的能力保障分类,并结合业界和百度内部业务的历史故障、系统风险、技术栈选型,我们优先选择了推进如下几类能力的数字化转型:预防能力(分级发布、架构隔离、容量感知)、发现能力(监控告警)、止损能力(操作预案)。

图片

图 4 数字化刻画举例

对能力进行数字化刻画,需要结合能力的生效方式、能力的使用场景、稳定性保障要求等多方面因素来实现数据的抽取,如:

监控告警:其数字化刻画的重点在识别告警的有效性和告警覆盖的完整性。

  • 告警有效性:主要刻画告警的数据源状态、告警的接收人触达通路、告警的屏蔽状态等;
  • 告警覆盖度:主要刻画告警的分类(包括人工规则分类和自动识别分类)。

通过对告警有效性和完备性两个方向的数字化刻画结果,进而可以识别出业务变更过程中的潜在风险风险,如:数据源无数据问题、数据断流问题、告警人为长时间屏蔽等。

分级发布:其数字化刻画的重点在描述常见的程序变更和数据变更要求。我们将分级发布的能力要求抽象为两类:一类是分级发布的流程要求,另一类是分级发布的对象要求。

  • 流程要求:主要刻画发布和部署阶段,如:发布顺序,发布范围,阶段间的间隔和检查等;
  • 对象要求:主要刻画发布对象状态,如:发布对象的完整性,发布对象的小流量阶段比例配置等。

通过对发布阶段和发布对象的数字刻画,进而可以识别出业务变更过程中的潜在风险问题,如:灰度阶段验证不充分,灰度比例过大,版本升级不完整等问题。

架构隔离:其数字化刻画的重点在描述服务间的连接关系和连接范围;

  • 连接关系:主要刻画实际网络连接关系,通过 eBPF 数据和网络链路配置进行挖掘;
  • 连接范围:主要刻画服务部署和网络连接关系的聚合情况,通过服务描述数据,确认服务间实际的逻辑域连接关系。

通过对连接关系和连接范围的数字刻画,可自动识别业务的架构拓扑,识别业务逻辑域中存在跨域访问的问题。辅助业务进行容量评估、评估风险隔离范围、强化单域内止损能力;

除上述场景外,我们也分别对容量方向中的应用级和系统级容量、止损预案的有效执行周期和执行结果等方向进行了数字化能力刻画。不同方向的数字化刻画结果,即可作为后续识别风险场景的有力数据源。

3.2.    阶段二:基于工程规则的风险识别

基于阶段一中对各项能力场景的数字化刻画结果,我们便可进一步使用一系列工程规则,通过组合使用数字化的刻画数据,来达成风险识别的目标。下面介绍几个实践的案例。

3.2.1.    案例一:识别告警失效问题

告警是问题感知的第一入口,告警失效会导致故障的影响加剧。实际运维中,影响告警状态的因素也较多,如配置变动、数据变动、人员变动等都可能导致告警的效果和触达不符合预期。

图片

图 5 告警有效和告警失效对比

图片

3.2.2.    案例二:识别变更发布中的灰度范围是否过大(爆炸半径是否可控)

灰度发布是线上变更中的常用方式之一,通过控制灰度的比例和范围,进而控制变更可能带来故障影响范围,限制爆炸半径。如果灰度比例过大,可能造成故障扩散,影响故障处置的效率。数字免疫通过对关键阶段进行数字化刻画完成风险识别,保障灰度发布有效且爆炸半径不扩散。

图片

图 6 灰度发布和爆炸半径控制

图片

3.2.3.    案例三:识别服务的架构隔离能力

分布式集群和架构隔离部署,是有效控制爆炸半径的常用方式之一。服务集群通过多地域部署,并在不同地域之间完全隔离(提供完整功能),可有效应对未知的故障影响,如机房断电、光纤断连等情况。如果不同域的服务存在互相访问的情况,则可能在故障场景下造成故障扩散,影响故障处置的效率。

图片

图 7 隔离失效导致故障扩散

图片

3.3.    阶段三:融合 AI 大模型的风险挖掘

随着企业数字化转型的深入,得益于数据的标准化,我们短期通过快速建设工程规则方式,针对大部分已知场景的风险进行了快速的覆盖识别,并低成本推广到了多业务线。然而,随着规则的规模扩大,我们逐渐发现 2 个问题:

  • 维护成本逐渐升高:随着工程规则的数量不断增加,梳理冗余规则和维护规则效果的成本也随之上涨;
  • 风险识别的局限性:工程规则主要面向有限的场景,以组合工程规则的方式来覆盖稳定性能力,会因缺乏一些全局视角的分析而出现盲区。

当前,随着 AI 的兴起,AI 大模型所具备的强大的泛化知识理解和推理能力,可以用于持续维护和管理运维知识和风险场景知识。借助 AI 大模型 + GraphRAG 的组合,我们可以将工程规则的实现转向由 AI 模型托管生成,并结合 GraphRAG 图检索和大语言模型的泛化总结能力进行场景化的风险分析。

图片

图 8  「工程规则 + 知识手段」体系协同模式

在融合 AI 能力的风险挖掘实践中,我们初期的重点工作在「知识整理」和「知识建图」2 个阶段:

知识整理:构建特定场景知识实体。构建的知识体系应当具备如下通用要求:

  • 实体化:知识可以被划分为独立的实体,每个实体包含特定的概念和原理,便于分类学习和掌握;
  • 层次性:知识具有不同的层次,从基础概念到高级理论,从通用知识到专家知识,学习者可以逐步深入;
  • 连贯性:知识之间可相互关联,形成连贯的知识网络,有助于记忆和应用。

因此,结合运维领域的知识特点以及云原生时代下的实体架构分层,我们引入了如下几个维度划分来构建知识结构,以云计算服务模型中不同层级的实体为对象,实现上述 3 个要求。

图片

图 9 知识体系层级图

知识建图:构建泛化的知识网络。「泛化知识网络」的构建需要具备如下要求:

  • 动态更新能力:泛化知识网络需要具备实时构建和动态更新能力来保证其应用结果的准确度;
  • 可交互性:泛化知识网络需要具备便捷的交互能力和输出结果可理解;
  • 可挖掘性:泛化知识网络不能只具备基础的知识检索能力,还需要具备泛化的知识综合应用能力。

因此,在构建知识网络的方案上,选择了 AI 大模型 +  GraphRAG 的组合形式:

  • 引入 AI 大模型,解决输入输出内容的文本语义化转换,辅助知识图谱的构建和完善;
  • 引入 GraphRAG 图构建的模式,理解结构化知识并构建关系型知识网络,提供动态更新、泛化能力强的知识挖掘的能力。

图片

图 10 知识构建和应用

图片

图 11 某业务的知识模块举例

4.    SRE 数智免疫系统的长期发展

数智免疫系统,本质上是对服务质量数据的一个规整聚类和理解,通过循环的识别、治理方式,保障业务质量的长期稳定。因此,数智免疫系统的长期发展:

  • 一方面,需要引入更丰富的质量关联数据,如:业务的故障数据、故障处置经验、人员能力建设等维度,通过不断累计的知识沉淀,来丰富免疫系统的风险识别和自愈能力,提升系统的可信度;
  • 另一方面,基于丰富的质量关联数据,可以在上层借助当前大模型的数据分析和整合能力,创建「智能医生」。基于免疫系统识别到的风险状态以及数字化评价体系给出的评价结果,向业务展示关键的风险问题和系统状态,并给出具备可行性的建设方案和历史建设经验。

数智免疫系统的应用只是一个开始,当前已建设的「关键质量能力」项,也只是质量能力长期保障的一部分。知识、信息等实时或非实时的数据,都需要随着业务的发展而更新,如此基于免疫能力的保障体系才可持续。

相关文章:

从数字化到智能化,百度 SRE 数智免疫系统的演进和实践

1. 为什么 SRE 需要数智免疫系统? 2022 年 10 月,在 Gartner 公布的 2023 年十大战略技术趋势中提到了「数字免疫系统」的概念,旨在通过结合数据驱动的一系列手段来提高系统的弹性和稳定性。 在过去 2 年的时间里,百度基于该…...

[Git] Git Stash 命令详解

1. Git Stash 的基本概念 Git Stash 是一个用于暂存当前工作目录中更改的命令。当你正在处理一个功能分支,但突然需要切换到另一个分支进行紧急修复或查看其他工作时,Git Stash 就显得非常有用。它允许你将当前工作目录中的更改保存起来,以便…...

ArcGIS及其组件抛出 -- “Sorry, this application cannot run under a Virtual Machine.“

产生背景: 使用的是“破解版本”或“被套壳过”的非官方 ArcGIS 版本 破解版本作者为了防止: 被研究破解方式 被自动化抓包/提权/逆向 被企业环境中部署多机使用 通常会加入**“虚拟化环境检测阻断运行”机制** 原因解释: 说明你当前运…...

Python项目调用Java数据接口实现CRUD操作

Django Python项目调用Java数据接口实现CRUD操作:接口设计与实现指南 引言 在现代软件架构中,系统间的数据交互变得越来越重要。Python和Java作为两种流行的编程语言,在企业级应用中常常需要实现跨语言的数据交互。本报告将详细介绍如何在D…...

进阶篇 第 5 篇:现代预测方法 - Prophet 与机器学习特征工程

进阶篇 第 5 篇:现代预测方法 - Prophet 与机器学习特征工程 (图片来源: ThisIsEngineering RAEng on Pexels) 在前几篇中,我们深入研究了经典的时间序列统计模型,如 ETS 和强大的 SARIMA 家族。它们在理论上成熟且应用广泛,但有…...

ubuntu 交叉编译 macOS 库, 使用 osxcross 搭建 docker 编译 OS X 库

1. ubuntu 交叉编译 macOS 库, 使用 osxcross 搭建 docker 编译 OS X 库 1. ubuntu 交叉编译 macOS 库, 使用 osxcross 搭建 docker 编译 OS X 库 1.1. 安装依赖1.2. 安装 osxcross 及 macOS SDK 1.2.1. 可能错误 1.3. 编译 cmake 类工程1.4. 编译 configure 类工程1.5. 单文件…...

JavaScript 中的单例模式

单例模式在 JavaScript 中是一种确保类只有一个实例,并提供全局访问点的方式。由于 JavaScript 的语言特性(如对象字面量、模块系统等),实现单例有多种方式。 常见实现方式 1. 对象字面量(最简单的单例) …...

深度学习基石:神经网络核心知识全解析(一)

神经网络核心知识全解析 一、神经网络概述 神经网络作为机器学习领域的关键算法,在现代生活中发挥着重要作用,广泛应用于图像识别、语音处理、智能推荐等诸多领域,深刻影响着人们的日常生活。它通过模拟人类大脑神经系统的结构和功能&#…...

java的反编译命令

1. javap -c: 显示方法中的字节码 2. javap -p: 显示所有访问级别,包括private 3. Javap -v: verbose模式,全信息,输出的内容包括: 类的访问标志(access_flags) 类名、父类、接口 …...

影刀填写输入框(web) 时出错: Can not convert Array to String

环境: 影刀5.26.24 Win10专业版 问题描述: [错误来源]行12: 填写输入框(web) 执行 填写输入框(web) 时出错: Can not convert Array to String. 解决方案: 1. 检查变量内容 在填写输入框之前,打印BT和NR变量的值&#xff…...

词语关系图谱模型

参数配置说明 sentences, # 分词后的语料(列表嵌套列表) vector_size100, # 每个词的向量维度 window5, # 词与上下文之间的最大距离(滑动窗口大小) min_count5, # 忽略出现次数小于5的…...

《C++ 模板:泛型编程的核心》

C模板详解 模板是C中实现泛型编程的重要特性&#xff0c;它允许你编写与数据类型无关的代码。模板可以分为函数模板和类模板两种。 1. 函数模板 函数模板允许你定义一个可以处理多种数据类型的函数。 基本语法 template <typename T> T functionName(T parameter1, T…...

HTTP的请求消息Request和响应消息Response

一&#xff1a;介绍 &#xff08;1&#xff09;定义 service方法里的两个参数 &#xff08;2)过程 Request:获取请求数据 浏览器发送http请求数据&#xff08;字符串&#xff09;&#xff0c;字符串被tomcat解析&#xff0c;解析后tomcat会将请求数据放入request对象 Response:…...

解决Python与Java交互乱码问题:从编码角度优化数据流

在现代软件开发中&#xff0c;跨语言系统的集成已经成为日常工作的一部分。特别是当Python和Java之间进行交互时&#xff0c;编码问题往往会成为导致数据传输错误、乱码以及难以调试的主要原因之一。 你是否曾遇到过这种情境&#xff1a;Python脚本通过标准输出返回了正确的数…...

DES、3DES、SM4 加密算法简介

1. DES&#xff08;Data Encryption Standard&#xff09; 设计时间&#xff1a;1975 年&#xff08;IBM 开发&#xff0c;1977 年被 NIST 采纳为美国联邦标准&#xff09;。 密钥长度&#xff1a;64 位&#xff08;实际有效 56 位 8 位校验&#xff09;。 分组长度&#xf…...

C++异步操作 - future async package_task promise

异步 异步编程是一种程序设计范式&#xff0c;​​允许任务在等待耗时操作&#xff08;如I/O、网络请求&#xff09;时暂停执行&#xff0c;转而处理其他任务&#xff0c;待操作完成后自动恢复​​。其核心目标是​​避免阻塞主线程​​&#xff0c;提升程序的并发性和响应速度…...

Feign 深度解析:Java 声明式 HTTP 客户端的终极指南

Feign 深度解析&#xff1a;Java 声明式 HTTP 客户端的终极指南 Feign 是由 Netflix 开源的 ​声明式 HTTP 客户端&#xff0c;后成为 Spring Cloud 生态的核心组件&#xff08;现由 OpenFeign 维护&#xff09;。它通过注解和接口定义简化了服务间 RESTful 通信&#xff0c;并…...

08前端项目----升序/降序

升序/降序 vue实现升序/降序服务器处理 vue实现升序/降序 用vue实现升序/降序&#xff0c;以及css绘制三角形 <div class"sui-navbar"><div class"navbar-inner filter"><ul class"sui-nav"><li class"active"&g…...

用Java实现简易区块链:从零开始的探索

&#x1f4e2; 友情提示&#xff1a; 本文由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;平台gpt-4o-mini模型辅助创作完成&#xff0c;旨在提供灵感参考与技术分享&#xff0c;文中关键数据、代码与结论建议通过官方渠道验证。 区块链技术作为近年来的热门话题&am…...

JavaScript 渲染内容爬取实践:Puppeteer 进阶技巧

进一步探讨如何使用 Puppeteer 进行动态网页爬取&#xff0c;特别是如何等待页面元素加载完成、处理无限滚动加载、单页应用的路由变化以及监听接口等常见场景。 一、等待页面元素加载完成 在爬取动态网页时&#xff0c;确保页面元素完全加载是获取完整数据的关键。Puppeteer…...

数据结构——栈以及相应的操作

栈(Stack) 在维基百科中是这样定义的&#xff1a; 堆栈(stack) 又称为栈或堆叠&#xff0c;是计算机科学中的一种抽象资料类型&#xff0c;只允许在有序的线性资料集合中的一端&#xff08;称为堆栈顶端&#xff0c;top&#xff09;进行加入数据&#xff08;push&#xff09;和…...

SVG 与 VSCode:高效设计与开发的完美结合

SVG 与 VSCode:高效设计与开发的完美结合 引言 随着互联网技术的飞速发展,网页设计已经成为了一个重要的领域。SVG(可缩放矢量图形)作为一种矢量图形格式,因其独特的优势,在网页设计中得到了广泛应用。而VSCode(Visual Studio Code)作为一款功能强大的代码编辑器,同…...

如何应对政策变化导致的项目风险

应对政策变化导致的项目风险&#xff0c;核心在于&#xff1a;加强政策研判机制、建立动态应对流程、构建合规应急预案、强化跨部门联动、提升项目柔性与调整能力。其中&#xff0c;加强政策研判机制 是所有防范工作中的“前哨哨兵”&#xff0c;可以让项目团队在政策风向转变之…...

ASP.Net Web Api如何更改URL

1.找到appsettings.json 修改如下&#xff1a; 主要为urls的修改填本机私有地址即可 {"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHosts": &q…...

在 Vue 3 中将拆分后的数组合并回原数组

接上文Vue 3 中按照某个字段将数组分成多个数组_vue3怎么进行数组对象--分割对象-CSDN博客 方法一&#xff1a;使用 flat() 方法 // 假设这是拆分后的多维数组 const splitArrays [[{id: 1, category: A}, {id: 3, category: A}],[{id: 2, category: B}, {id: 5, category: …...

【HTTPS协议原理】数据加密、如何防止中间人攻击、证书和签名、HTTPS完整工作流程

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux网络 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 数据加密常见的加密方式数据摘要方案一&#xff1a;仅使用对称加密方案二&#xff1a;仅使用非对称加密方案三&#xff1a;双…...

Java中链表的深入了解及实现

一、链表 1.链表的概念 1.1链表是⼀种物理存储结构上⾮连续存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引⽤链接次序实现的 实际中链表的结构⾮常多样&#xff0c;以下情况组合起来就有8种链表结构&#xff1a; 2.链表的实现 1.⽆头单向⾮循环链表实现 链表中的…...

【武汉理工大学第四届ACM校赛】copy

copy 题目描述代码代码解释&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/108683/E 题目描述 小s苦于在不同的窗口之间复制粘贴&#xff0c; 于是他突发奇想&#xff0c;把所有要复制的内容都复制到了一个剪贴板中&#xff0c;但他突然发现由于他复制的…...

植物大战僵尸杂交版v3.6最新版本(附下载链接)

B站游戏作者潜艇伟伟迷于4月19日更新了植物大战僵尸杂交版3.6版本&#xff01;&#xff01;&#xff01;&#xff0c;有b站账户的记得要给作者三连关注一下呀&#xff01; 不多废话下载链接放上&#xff1a; 夸克网盘链接&#xff1a;&#xff1a;https://pan.quark.cn/s/1af9b…...

【Ansible】批量管理 Windows自动化运维

一&#xff0c;前期准备 1&#xff0c;控制端&#xff08;Linux&#xff09;的要求 Ansible可以在安装了Python 2&#xff08;2.7版&#xff09;或Python 3&#xff08;3.5及更高版本&#xff09;的任何机器上运行。控制端计算机不支持Windows。 2&#xff0c;客户端&#x…...