快准稳:值得所有运维学习的SRE故障处理经验

news2025/2/24 8:07:41

在网络上关于 SRE 的讨论中,故障相关的内容比比皆是,但关于故障发生时的应急处理过程的详细讨论却寥寥无几。然而面对故障,故障指挥官一定面临着较大的压力,需要快速、正确地处置故障,应对内外部的挑战。在这篇文章中,我们将重点探讨故障指挥官在故障处理过程中的具体行动思路。

值得注意的是,本文总结了作者在担任故障指挥官时,对故障感知、故障定级、故障处理以及故障恢复等环节的经验和心得,而并未涉及如何预防故障或进行故障复盘的内容。

1、故障感知

众所周知:故障一般来自两个部分的输入:监控系统和用户(客户)报障。

  • 首先,监控系统在SRE工作中起着至关重要的作用。监控系统可以实时监测系统的业务指标和性能参数。当系统出现异常或达到预设的条件时,监控系统会自动触发告警并发送给SRE团队。这些告警包括基础设施监控(如服务器负载过高、网络延迟异常、存储空间不足等等),也包括业务层面的监控(如接口成功率、页面白屏化/JS错误等)。

  • 其次,客户或用户的报障也是故障的输入来源。当客户或用户在使用系统时遇到问题或异常情况,他们通过电话、即时通信、工单等各种渠道向技术支持团队报障。我们可以通过程序去监控投诉关键字、重点客户客情,当有客情出现时,SRE可以进行故障排查和解决。

涉及监控系统的实现细节,不在此赘述。

图片

2、故障的定级

在处理故障时,首先需要判断故障的影响范围,即确定是否构成故障。这可以通过以下几种方式进行判断:

  • 系统维度判断:监控系统提供了实时的系统指标和性能参数,故障指挥官在收到告警后,可以通过监控数据来判断系统是否真实出现异常。例如,关键接口返回码成功率严重下降,关键接口耗时严重上升,由相关的接口指标数据来定义故障的级别。

  • 用户维度判断:如果多个用户报告了相似的问题,根据报障的用户数量来判断、根据监控系统所体现的用户维度的数据,判断该故障可能影响了多少客户,从而定义故障的级别。

  • 重点客户的反馈判断:重点客户通常是对系统稳定性和性能要求较高的客户。也是业务的重要收入来源, 他们的反馈对于判断故障的影响范围非常重要。如果重点客户反馈了故障或异常情况,可以根据客户的级别、受影响的业务规模、客情反馈情况等来定义故障的级别。

3、故障处理团队的组织

当故障发生时,首要任务是立即召开在线故障会议。组织此类会议时,可以从以下几个方面进行考虑和动作:

  • 判断要卷入谁:

    • 模块组件相关性:根据故障的性质和影响范围,确定与故障相关的模块或组件。然后卷入与这些模块或组件直接相关的团队成员,以确保有专业知识和经验来处理故障。

    • 最近的可疑的变更团队:如果故障与最近的变更点时间吻合,建议卷入该变更团队。

    • 历史出现过相似的问题:历史上出现过相似的问题,可以将当时处理过故障的人员卷入到会议。

    • 内部面向客户/用户相关人员:如果故障影响了重要客户或用户,可以单独拉取一个群组来同步与这些客户或用户相关的问题。这个群组应该包括与客户或用户关系密切的团队成员,以便及时响应和解决他们的问题。

  • 会议中的挑战:在组织故障处理群组时,确保成员有效沟通和协作至关重要。然而,刚开始拉群时可能会面临以下挑战:

    • 信息缺乏同步:由于故障突然发生,每个被拉入群组的成员可能会询问当前问题的情况。故障指挥官可能会需要重复当前的情况。

    • 建议在拉入会议时同时创建一个工作群(如企业微信群、微信群),并在群里发布公告,公告里详细说明故障的影响范围、受影响的业务以及故障发生的时间。以免入会人员重复询问。

    • 信息不够聚焦:在故障处理群组中,有些技术人员可能会陷入讨论一些细节或不太关键链路的问题。

    • 在这种情况下,故障指挥官的角色至关重要,需要确保抓住重点主线:果断打断故障恢复主线无关的问题讨论(如果是疑似问题根因但未确认,可以组织相关人员到分会场讨论),优先恢复受损的业务,而将其他问题放在次要位置。如果故障受损的业务较多,可以考虑根据影响范围、程序等因素进行排序,以便更有效地处理故障。

4、故障的处理

故障发生后,需要指挥、协调相关团队进行及时止损及恢复:

  • 讨论制定恢复措施:快速恢复的方法包括流量调度、流量限制、业务降级、紧急扩容、组件重启、版本回退、紧急补丁、数据恢复等。可以根据系统的能力、日常的演练结果等来综合决策。

    • 流量调度:业务具备多地/多SET部署能力,当某一部分模块有故障时,及时调度到其他地域/SET来恢复业务

    • 故障隔离:由于IaaS/灰度模块等局部原因造成业务故障时,可以考虑将相关设备/模块剔除以恢复业务。

    • 全局限流:故障由于业务流量增长引起,可以考虑在接入层、服务网关等组件上进行限流。限流的阈值可以参考历史峰值或者压测验证过的数值。

    • 紧急扩容:故障由于业务流量增长引起,在资源足够、能快速扩容的情况下,可以紧急对业务模块进行扩容。需要注意的是,如果用户或业务调用方有大量的重试行为,此时需要配合限流措施。

    • 组件重启:某些组件可能出现了故障,由于某些原因造成了CPU Hang死或者内存驻留,导致系统运营缓慢或业务逻辑错误,可以采用重启来恢复业务。

    • 版本回退:当确认故障是由于业务发版引起,可以采用版本回退来恢复业务。

    • 紧急补丁:故障因为触发到业务设计上的缺陷而无法使用以上手段恢复。需采用紧急补丁修复。

    • 数据恢复:由于问题涉及到数据损坏或丢失,需要进行数据恢复。

    • 其他:所采取的其他恢复方案

图片

  • 进行恢复措施评估:

    • 措施是否得力、有效。恢复业务为第一要务,该措施是否能够有效恢复业务。

    • 措施是否相对较优,如果评审中有异议,提出并讨论优化方案。

    • 如果恢复方法对业务有影响,卷入利益相关方评估影响是否能够接受。

    • 考虑相应的回退措施。

  • 及时决策:由于故障对客户的业务有损,所以及时决策非常重要,最小化故障时间有利于减少损失。故障指挥官需要有相应的担当,及时决策相关处置措施的实施。如果涉及到业务流程相关,需要提前考虑紧急变更的业务流程。

  • 实施恢复措施:确定恢复措施后,经过关键人员审批后,及时实施到业务环境。如果措施未生效,则需要决策回退。

  • 观察判断业务是否恢复:观察关键的监控指标是否恢复,客户的反馈是否消失。

5、故障信息的透明与同步

故障发生期间,会有不同的群体通过相关渠道来向故障指挥官了解进展,如:相关领导和同事来询问并给出他们认为有效的意见,客户技术支持团队/运营团队来询问故障的原因及什么时候恢复。

为了有效向各相关团队同步业务进展,保持统一的口径,需要考虑以下几点:

  • 故障由谁来同步比较好:

    • 内部:建议由故障指挥官来进行同步,也可以由故障指挥官指派相关的同事来准备文字素材,故障指挥官整合确认后同步。所以对故障指挥官有一定的要求:故障指挥官应熟悉IT系统的基础理论,并对应用系统技术架构有积累,具备严谨的逻辑思考能力,以确保故障形成的原因经得起推敲与挑战。

    • 有关是否需要向客户同步进展:建议由故障指挥官(或故障指挥官指派相关人员)提供素材,同步给运营团队或TAM(技术支持经理)来主导,相关对客团队来准备合适的话术,以确保信息清晰易懂。

  • 故障信息同步需要包含的内容:故障同步时,因为内部和外部的受众和需求不同,信息口径有一些差异,主要的差异点是如下:

    • 内部同步:主要面向组织内部的成员,包括技术团队、管理层和其他相关人员。确保团队成员了解故障的详细情况、进展和解决方案,以便有效地参与故障处理和提供支持。通常会涉及更多的技术细节和操作细节,以满足团队成员对故障处理的需要。

    • 外部同步主要面向外部的利益相关者,包括客户、渠道合作伙伴、和其他相关方。信息要足够准确、透明,以便用户了解故障的影响和恢复进展。通常需要使用更简洁、易懂的语言,避免过多的技术细节,以让外部用户感知上透明、可控。

因此,为了满足内部和外部受众的不同需求,故障同步时对不同的内外受众需要采用不同的口径和信息呈现方式。

  • 故障指挥官需要在内部同步的内容如下:

    • 故障开始时间:什么时候开始的(可以根据监控系统的指标变动时间,极个别情况,监控系统未体现的话也可以根据客户反馈的时间)

    • 影响范围:影响了哪些功能,哪些客户,多少设备量、业务量等

    • 预计恢复时间:预计什么时候可以恢复,一般在这里要同步一个初步预估的时间。后续可以随着处理的进展来刷新。

    • 当前进展情况:怀疑方向是什么,谁在处理,当前处理的进展如何,一般可以先概括一下处理的整体方案,整体方案一共有几步,目前进展到哪一步了。预计什么时候可以执行完。

    • 需要哪些帮助:有时候这一点尤其重要,当前执行预案的时候,碰到了什么棘手的问题,需要什么资源。

  • 故障指挥官需要向外部同步的信息如下:

    • 故障的现象:发生了什么问题,该故障的触发条件是什么。

    • 问题原因:故障原因是否已经查明,如果已经查明,简洁地描述原因。

    • 问题处理的进展:对故障进行了怎么样的处理,如果有多个恢复止损的步骤,目前进行到第几步了。

    • 并预计恢复时间:预计什么时候能够恢复。

    • 规避方法:如果在用户侧有办法临时规避,可以告知规避方式。例如业务切换、降级等。

以上描述的信息框架可以用来做为故障信息同步的参考框架。故障指挥官应保障内部和外部团队对故障的知情权,同时也应当保证信息的一致性和权威性。

故障恢复后,可以向各相关方推送相关的故障恢复信息。可以参考包含以下信息:

  • 内部同步

    • 故障现象

    • 影响范围

    • 故障原因

    • 恢复时间及恢复方法

  • 外部同步

    • 故障现象

    • 故障时段

    • 官方的故障原因

由于故障涉及到用户的业务,可以同时请外部用户予以验证。

总 结

总的来说,本文详细探讨了SRE工作中故障指挥官处理故障的各个环节,包括故障的感知、定级和处理过程。

故障指挥官在这个过程中的非常重要,既需要具备技术架构、技术细节的理解,又需要有良好的沟通和协调能力。以便在故障发生时,能够迅速组织团队,制定并执行恢复措施。

同时,故障指挥官还需要负责向内外部团队同步故障进展,这需要他们有清晰的思考能力及语言文字组织能力。

当然,一个优秀的SRE不仅能够镇定应对故障,他们还会通过优化业务部署、完善可观测体系、组织完善应急预案并充分验证等手段来预防故障或缩短故障的持续时间。在故障恢复后,他们还需要负责组织深度的故障复盘,识别故障的根源,并制定策略以防止同类问题的再次发生

转自:高效运维

作者:李雄政

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

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

相关文章

STM32——IIC知识总结及实战

1 IIC概念及结构体 IIC:Inter Integrated Circuit,集成电路总线,是一种同步 串行 半双工通信总线。 结构图 2 IIC协议时序 ① 起始信号 当 SCL 为高电平期间,SDA 由高到低的跳变。起始信号是一种电平跳变时序信号,而…

AIOps探索 | 应急处置中排障的降本增效方法探索

原作者:擎创科技 资深产品专家 布博士 前言 在事件管理及应急场景的场景下,一般会造成业务服务和技术服务故障(如应用系统、微服务架构等不同的技术组件)。为了实现对业务的影响分析、查看技术组件的相互依赖关系以及进行根因排…

全国各省全社会就业人员数,Shp、excel格式,1978-2022年数据

基本信息. 数据名称: 全国各省全社会就业人员数 数据格式: Shp、excel 数据几何类型: 面 数据时间:1978-2022年 数据坐标系: WGS84 数据来源:网络公开数据 数据字段: 序号字段名称字段说明1jy19781978年就业人数(万人…

【JS逆向学习】1号店

逆向目标 接口:https://passport.yhd.com/publicPassport/login.do加密参数: credentials.usernamecredentials.password 逆向过程 老规矩,输入用户名和密码,点击登录,然后过滤 XHR 请求 进入 Initiator 随便找个…

react、Vue打包直接运行index.html不空白方法

react vue 在根目录下创建 vue.config.js 文件,写入 module.exports {publicPath: ./, }

每日一记:一个windows的bat脚本工具集

最近在工作上遇到要校验文件的问题,例如,下载了一个文件之后,通过查看文件的md5来校验文件是否完整,这个动作在linux上很简单,但在windows上也不难,可以通过 certutil 命令实现,该命令通常可用于…

hadoop-common: CMake failed with error code 1

问题 在编译hadoop源码时遇到如下错误 hadoop-common: CMake failed with error code 1 看了这个错误表示一脸懵逼 排查 在mvn 的命令中增加 -X 和 -e mvn clean package -e -X -Pdist,native -DskipTests -Dmaven.javadoc.skip -Dopenssl.prefix/usr/local/bin/openssl 在…

带你解析git的基础功能(二)

文章目录 一.前言二.什么是git的分支管理三.git的分支管理的相关操作3.1 创建分支3.2 切换分支3.3 合并分支 和合并冲突3.4 删除分支 四.分支管理策略第一种分支策略第二种分支策略 总结 一.前言 掌握 Git 分⽀管理,从分⽀创建,切换,合并&am…

合适的索引顺序

一.前言 正确的顺序依赖于使用索引的查询,并且同时需要考虑如何更好地满足排序和分组的需要。因为哈希或者其他类型的索引并不会像 B-Tree索引一样顺序存储数据,所以这里只针对B-Tree展开讨论。 二.合适的索引顺序 1. 概念 对于如何选择索引顺序有一个经验法则: 将选择性最…

vue3 + JS + vant 搭建移动端H5项目(完整项目)

vue3 JS vant 搭建移动端H5项目(完整项目) 前言1、移动端UI框架2、搭建步骤3、config.js 配置4、一键发布到服务器iis或者nginx代理5、vue3JSVant 移动端H5项目预览总结: 前言 要成功,先发疯,头脑简单往前冲&#x…

民营经济迎来新发展,创维汽车创始人黄宏生谈创业之道

2024年1月15日,上海高金金融研究院民营经济研究中心高净值研究院年度大咖论坛正式召开,多位来自不同行业的优秀民营企业家在本次论坛上分享企业的创新与发展之道。创维集团、创维汽车创始人黄宏生先生作为本次论坛的首位分享嘉宾,为其他奋斗创…

去TikTok淘金:让一部分人先富起来

“Oh My Lady Gaga!” 一名叫杰西卡的主播在自己的TikTok直播间喊出一句话。 这跟李佳琦那句标志性的「偶买噶」有着异曲同工之妙——瞬间激起粉丝们的购买欲。 杰西卡卖的是各种各样的转运宝石和水晶,她的TikTok账号 dh_crystal_service a已经积累了5…

vue.js环境在window和linux安装

nodei官网:https://nodejs.org/en/download/ 一.windows环境下安装vue 1:node安装 在node.js的官网上下载node的安装包,下载下来之间安装即可,在命令行输入 npm -vnode -v 如下表示安装成功 2:cnpm安装 npm inst…

Kafka 集群部署

目录 1、环境准备 2、搭建ZooKeeper集群 配置文件 节点标记 环境变量 启动集群 数据同步测试 故障测试 3、搭建 Kafka 集群 配置文件 环境变量 配置其他机器 启动服务 4、集群测试 创建 Topic 显示 Topic 配置 创建 Producer 创建consumer 删除Topic 查看Z…

【特征工程】分类变量:BinaryEncoder二进制编码方法详解

Binary Encoding:二进制编码方法详解 Binary Encoding是将每个整数表示为二进制数,然后按位拆分为多个二进制变量。这种方法旨在减少维度,同时避免了One-Hot Encoding的高维稀疏问题。 Binary encoding for categorical variables, similar …

bash shell基础命令(一)

1.shell启动 shell提供了对Linux系统的交互式访问,通常在用户登录终端时启动。系统启动的shell程序取决于用户账户的配置。 /etc/passwd/文件包含了所有用户的基本信息配置, $ cat /etc/passwd root:x:0:0:root:/root:/bin/bash ...例如上述root账户信…

php反序列化漏洞基础

一、序列化 serialize(): 序列化是将对象或类转换为字符串的过程,以便在程序运行过程中对其进行持久化存储或传输的操作。在PHP中,序列化主要用于将类对象或数组转换成字节流的形式,以便于存储在磁盘或传输到其他系统。 通过序列化,可以将对象或类转换成一串字符串,然后可…

FFmpeg之SWScale

文章目录 一、概述二、函数调用结构图三、Libswscale处理数据流程四、重要结构体4.1、SwsContext4.2、SwsFilter 五、重要函数5.1、sws_getContext5.1.1、sws_alloc_context5.1.2、sws_init_context 5.2、sws_scale5.2.1、SwsContext中的swscale()5.2.2、check_image_pointers5…

外汇天眼:外汇交易无法出金?看这篇能提高维权成功率!

天眼君经常分享一些外汇维权成功的案例,但是我们都知道有些投资者在维权之路上并不是一帆风顺的,尤其是面对一些外汇资金盘或已经跑路的黑平台。在这种情况下,受害者需要紧握法律武器,以捍卫自己的权益,维护合法权利。…

AMP“双系统”加持,飞凌嵌入式RK3568核心板强实时性再升级

如果要选出飞凌嵌入式最热门的几款产品,FET3568-C系列核心板一定榜上有名。这款高性价比的全能型核心板上市两年来已赢得了数千家客户的青睐。飞凌嵌入式也在不断对它进行升级——从“配置新增”到“100%国产化认证”再到“新系统适配”,以满足更多行业客…