Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >故障管理杂谈

故障管理杂谈

作者头像
wangning
发布于 2022-06-13 08:53:59
发布于 2022-06-13 08:53:59
5410
举报
文章被收录于专栏:小白慢跑小白慢跑

随着系统复杂度、团队规模的增加,需要一个套方法来应对系统中的各种"黑天鹅",以下为整理的故障应对方法。

主要为分为以下阶段:

  • 预备
  • 故障预警
  • 故障处理
  • 复盘
  • 改善与优化

一 预备

  • 文化
  • 组织准备
  • 定义故障等级
  • 资源清单
  • 版本发布机制
  1. 文化

一个企业的"文化"或者大家更熟悉的"基因"决定了一个企业思考、决策和执行逻辑,以下为个人思考在成熟的故障体系下,需要具备的条件。

"抗"事的领导

个人认为领导的主要能力是能"成"事和能"抗"事。一般来讲流程角色和定义中需要管理层参与统筹和协调,在此过程中需要领导具备"抗"事的素质,应首先考虑是协调解决问题,而不是划清责任,对于下属不能平时"小甜甜",出事"牛夫人"。

文化的体现不应挂在墙上、印在书上,应体现在需要抉择时的行为上。

design for failure

作为系统设计的一个维度考虑,尤其由大量服务组成的复杂系统。往往出现很多"不讲道理"的"灵异"现象,需要设计时考虑如何系统的假设条件得以成立,如系统的假设遭到挑战时应如何处理

系统的质量(可用性)是有代价的

需要为质量、故障应对分配资源。

故障处理方式可以有多样,比如通过技术手段或者通过增加人员监控等。其实手段没有绝对的优劣,采用最适合的即可。

心态开放

对事不对人,谨慎追责。比如当时受限于资源和工期的因素妥协的功能,不能一股脑否认当时的限制,只对故障追责,否则会造成团队做事畏首畏尾,人才流失、掩盖小故障造成大故障等问题。

2.组织准备

是否有完善的 oncall 机制,人员协作流程和方式。

主要解决的问题是故障发生"谁"可以处理,在处理的过程中需要如何协作, 故障升级流程、以及附加流程上的"资源"是否可用,各团队的角色、预期是否一致。

3.定义故障等级

一 级是全站不可用;

二 级是某功能不可用,且无替代方案;

三 级是某功能不可用,但有替代方案;

四 级是非功能性故障,或是用户不关心的故障。

或按照"致命/高/中/低"划分,此处根据需要即可。

主要是为了确定该故障要牵扯进多大规模的人员来处理。设定该等级故障可用的资源;避免一人救火,大家观望。

4.资源清单

  • 以用户功能为索引的服务和资源全视图

需要一个系统来记录前端用户操作界面和后端服务,以及服务使用到的硬件资源之间的关联关系。以应用角度关联的CMDB(配置管理数据库),确认应用与基础服务的关系,要同时固化下来,从应用创建之初,就将应用与各类基础服务的生命周期进行挂钩,同时确保信息可以更新。信息固化不是目的,也没有价值,只有信息动态流转起来才有价值。

然后,把后端的服务、服务的调用关系,以及服务使用到的资源都关联起来做成一个视图。这个视图最好是由相应的自动化监控系统生成。有了这个资源图后,我们就可以很容易地找到处理故障的路径了。这就好像一张地图,如果没有地图,很容易定位错问题,或者增加定位的时间。

如以下信息:

基础服务

应用层面的信息

  • 应用元信息
  • 应用调用关系
  • 代码信息
  • 部署信息
  • 脚本信息
  • 日志信息
  • 设计时的妥协点

系统是各种资源受限的情况下做出来的,因此在可用性或者质量方面的妥协点需要整理出来,方便知道哪些是需要重点维护的,故障是否与妥协点有关。

  • 容易造成系统波动的清单

大的变更如功能升级导致的用户完成某一功能路径变更;用户考核规则引起的使用频率的大幅度变化。

市场活动、市场曝光或运营大促等造成的流量波动。

定时任务运行的时间是否合理,包括计划中的和非计划的中的。比如数据库维护期间是否有其他任务处理重要的定时任务,对定时任务的依赖也要有相应的梳理。

批量导入导出以及其他容易造成的数据库或中间件波动操作等。

5.版本发布机制

很多故障是由于版本升级引入的,因此需要对版本更新和功能发布有充足的管理,需重点关注此过程执行需要时间、比如有无良好的工具支持回退操作等。

如配置管理、自动化测试、回退机制、灰度/蓝绿发布等。

二 故障预警

  • 完善监控
  • 预警指标优化
  • 预警分发

墨菲定律:事情往往会向你所想到的不好的方向发展,只要有这个可能性。

前段时间考虑优化缓存,结果还没来得及处理,线上就出了一个缓存项过多,引起的响应时间过长的bug...

此领域主要解决如何把真正影响系统稳定的指标通过合适的渠道及时发送给合适的相关人。如果不期望一个事情发生(包括业务层面如数据一致和完整性等),就要有确保它不发生的机制。

1.完善监控

可以回答谁、什么时候做了什么操作、操作结果如何?

2.预警指标优化

全面监控等于没有监控,太多的预警会导致"狼"来的效应,或因为关注大量的非核心预警浪费团队精力,需要评估哪些是核心指标,以及核心指标的覆盖率。如平均响应时长、最长响应时长、db长sql等。

优秀的监控系统可以做到故障抑制和故障衍生。故障抑制高级别的预警可以抑制由其导致的相关预警(常见的模式有关联分析、告警合并等),可以帮助故障处理人员快速定位问题,避免陷入预警风暴之中。比如数据库故障会导致响应时长、大量的功能可用性出问题;预警衍生,一般需要结合场景进行分析,比如再根据时间在接收层收到大量的低级别告警,此时可以衍生一条高级别告警;独立的事件A、B发生时,我们的目标C是否会受到影响等。

3.预警分发

此领域需要探讨的两个问题。

  • 预警如何及时到达干系人 需要约定一个双方认可的通道,避免干系人屏蔽消息。最近把公司的群消息屏蔽了,很多事情后知后觉,被diss了几回。
  • 预警消息上下文是否可以协助更快处理

三 故障处理

  • 定位
  • 隔离和清除
  • 操作流程标准化
  • 恢复

上述两个步骤的工作做好了,是不是发现此阶段也相对有序了。个人建议处理阶段优先是恢复故障,在此前提下尽量保护好现场,方便后续故障处理。

1.定位

需要结合响应清单和预警系统,以及之前的处理手册。

2.隔离和清除

是否可以通过降级和限流等防止故障蔓延。

3.操作流程标准化

此处主要是防止误操作引入更大的故障

  • 保护好备份

保护好备份、让备份尽量远离操作现场 如有可能让备份存放在其他主机或独立快照,本地是否也可以保留一个备份;

记得有一次操作数据有一步操作操作了,请运维看看能否通过日志恢复还原到操作之前。结果运维上来先把原来的备份给删除了,还原操作也失败了...

  • 做好配置管理

配置管理是误操作的"后悔药"。

4.恢复

  • 重启

主要解决可用性问题,重启一般能解决很多问题;但要考虑重启是否会引入不一致、异常的数据等,后续的数据处理。

  • 降级和限流
  • 回滚
  • 紧急更新

一般不建议,除非其他方式不能解决问题。此方案需要有发布系统支撑。

  • 主动发布处理阶段

让相关人知道如何协作比如客户安抚等

  • 积极、开放协作

需要帮助时及时求助

四 复盘

COE(Correction of Errors)

  • 故障处理流程

就像一个 log 一样,需要详细地记录几点几分干了什么事,把故障从发生到解决的所有细节过程都记录下来。

  • 故障原因分析

需要说明故障的原因和分析报告。

Ask 5 Whys:

需要反思并反问至少 5 个为什么,并为这些“为什么”找到答案,过程会很痛苦,会有反复被鞭尸的感觉

  • 故障后续整改计划

需要针对上述的“Ask 5 Whys”说明后续如何举一反三地从根本上解决所有的问题。

验证方案故障改善中的方案是否有效

  • 优化故障获知和故障定位的时间

从故障发生到我们知道的时间是否可以优化得更短?

定位故障的时间是否可以更短?

有哪些地方可以做到自动化?

优化故障的处理方式。

故障处理时的判断和章法是否科学,是否正确?

故障处理时的信息是否全透明?

故障处理时人员是否安排得当?

优化开发过程中的问题

Code Review 和测试中的问题和优化点。

软件架构和设计是否可以更好?

对于技术欠债或是相关的隐患问题是否被记录下来,是否有风险计划?

优化团队能力

如何提高团队的技术能力?

如何让团队有严谨的工程意识?

  • FMEA方法

(failure mode and effects analysis )全称为故障模式与影响分析,可帮助我们更好分析和应对故障。

整体思路:

给出初始的架构设计图。

假设架构中某个部件发生故障。

分析此故障对系统功能造成的影响。

根据分析结果,判断架构是否需要进行优化。

涉及到点:

1、功能点;

2、故障模式;

3、故障影响;

4、严重程度;

5、故障原因;

6、故障概率;

7、风险程度;

8、已有措施;

9、规避措施;

10、解决措施;

11、后续规划

总结

故障管理模型个人觉得就像一个金字塔,故障处理,就像塔的一个尖。功夫更多在下面。其他领域做的好,可以有效缩短故障时长,甚至避免故障;另外关于在信息领域车品觉 老师曾分享"存、管、晒;混、通、用",让信息流通起来,最大化信息价值。

本文可以说是以下文章学习笔记整理。

https://time.geekbang.org/column/article/1059 https://time.geekbang.org/column/article/1064 陈浩老师

https://time.geekbang.org/column/article/9391 李运华老师

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白慢跑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【笔记】每一个开发都应该懂得故障处理
出现故障时,最重要的不是 debug 故障,而是尽可能地减少故障的影响范围, 并尽可能快地修复问题。
韩旭051
2021/06/22
4500
【笔记】每一个开发都应该懂得故障处理
监控体系建设(完整)
近年来,随着计算机技术的飞速发展,以及行业信息的共享,传统企业的运维己不再是固步自封,日新月异的计算技术的发展推动企业云平台的建设,云平台的计算能力为大数据分析提供了基础、云平台与大数据分析又将推动运维人工智能的发展。放眼云、大数据、人工智能的运维发展方向的同时,作为运维的生命线,安全生产保障的生命线仍需强调。作为传统企业的安全生产保障,主要以“监”、“管”、“控”为核心,其中“监”则主要指的的监控。
彭华盛
2020/03/06
10.4K1
从零起步做到Linux运维经理,你必须管好的23个细节
不想成为将军的士兵,不是好士兵-拿破仑 如何成为运维经理?成为运维经理需要什么样的能力?我想很多运维工程师都会有这样的思考和问题。 如何成为运维经理。一般来说,运维经理大概有两种出身,一种是从底层最基础的维护做起,通过出色的维护工作,让公司领导对这个人非常认可,同时对Linux运维工作也比较重视,逐步走向Manager的岗位。第二种是业务管理出身或者有IT技术背景,具备了一定经验直接进入IT管理层的人员。 那么做为一个Linux运维经理,你需要哪些技能武器、管理哪些细节,具备什么样的能力? ----
小小科
2018/05/03
2.4K0
从零起步做到Linux运维经理,你必须管好的23个细节
包拯断案 | 别再让慢sql背锅@还故障一个真相
2)有时候出去面试,明明感觉和面试官聊的很好,但面试完成后就没有后续,是否有过疑惑,这是why?
GreatSQL社区
2023/02/23
3380
如何应对线上故障
线上故障是我们技术同学经常遇到,也是技术成长中经常要经历的事。从故障中我们可以吸取到很多教训,变得越来越有经验。
奎哥
2018/08/31
1K0
如何应对线上故障
稳定性治理三,故障预防、发现、处理
稳定性相关的前置知识在前两篇文章已经说的比较多了,个人也在网上对比看了下稳定性相关的内容,都是偏概念,因此此处更加偏向于系统实战设计实现。
阿甘的码路
2023/08/17
9460
稳定性治理三,故障预防、发现、处理
IT 运维中的事件、故障排查处理思路
业务人员反映呼叫中心系统运行缓慢,部份电话在自助语言环节系统处理超时,话务转人工座席,人工座席出现爆线情况。
程序员小猿
2021/10/21
3.2K0
IT 运维中的事件、故障排查处理思路
银行运维SRE转型:挑战与应对策略
摘要:本文探讨了银行运维团队实施SRE(站点可靠性工程)转型的路径,涵盖了从组织架构、制度流程到工具的全面实施方案。银行面临着由传统单体架构向分布式架构转型的挑战,SRE通过引入自动化、可观测性和持续改进机制,帮助银行提升系统可靠性、稳定性以及业务连续性。文章还探讨了实施过程中可能面临的文化、技术和人才挑战,并提出了具体的应对策略。
嘉为蓝鲸
2025/02/08
2070
3.4 事中故障处理:统筹协同,快速恢复
面对不断复杂的生产环境,要增加TBF和缩短TTR的目标,需要围绕“故障发现、故障响应、故障定位、故障恢复”四个关键环节,在人员技能、协同机制、工具平台、数字化感知等方面进行统筹建设
彭华盛
2021/08/19
3.4K1
3.9 基于流程指标的数据运营
建立持续优化的运维流程管理机制,需要度量运维流程运作的执行力与效率,流程指标是整个运维流程体系的重要组成部分,是对流程管理进行引导、控制、使其不偏离原定目标方向。所以,指标需要根据运维组织的核心价值主张,支持量化、实时、被监控,并透明、公开的传达到组织具体的人,让流程可以持续的得到优化,这是构建持续优化型与学习型组织的关键。在组织、流程、平台、场景四位一体的数字化运维体系下,指标的应用,在组织管理上能够让组织流程可视、可控,且具备在线、可穿透的作用;在流程的协作上能够建立公平、透明的协同文化;同时,指标也是运维平台化管理的场景设计提供基础原料。
彭华盛
2021/10/08
1.1K0
SRE 学习路线
SRE(Site Reliability Engineering)站点可靠性工程是一种结合软件工程和运维运营原则的角色和方法论,旨在在系统、服务或产品的设计、开发、部署和运维过程中,采取一系列措施来确保其持续稳定运行、可靠性和可用性。
SRE运维进阶之路
2024/04/23
3620
SRE 学习路线
故障治理:如何进行故障复盘
故障复盘的重要性无需多说,每一次故障都是宝贵的学习机会,本人接手故障复盘工作已经半年有余,从一开始的手足无措,慢慢变得游刃有余。以下内容为本人从网上查阅学习多个专家经验,并结合工作经历总结而来,仅供参考。
不思jo
2023/09/12
6670
如何应对突发技术故障和危机:开发团队的应急策略
在数字化时代,软件服务的稳定性对于企业至关重要。然而,即使是大型平台,如网易云音乐,也可能遇到突发的技术故障。网页端出现502 Bad Gateway 报错,且App也无法正常使用。这类故障不仅影响用户体验,还可能导致公司声誉和经济损失。本文将探讨开发团队如何应对这类危机,如何快速响应、高效解决问题,并从中吸取教训,以提升团队的应急处理能力。
正在走向自律
2024/12/18
2020
如何应对突发技术故障和危机:开发团队的应急策略
【万字长文】腾讯云新能源汽车客户-混沌工程实战
非自上而下的客户界面联合项目,极易受客户的工作安排影响,导致实际时间窗口很小。就需要我们的混沌方案,在充分覆盖目标系统的基础上,可以把最重要的事项优先执行以取得客户信任。
AIOPS
2023/02/23
3.7K3
从被动应对到主动防御:开发团队技术故障处理能力的全面升级,未雨绸缪,制胜未来!
虽然不直接涉及最近的事件,但以下是一些历史上大型平台出现过的故障及其问题,这些案例也提供了宝贵的经验和教训:
小白的大数据之旅
2024/11/20
1770
从被动应对到主动防御:开发团队技术故障处理能力的全面升级,未雨绸缪,制胜未来!
开发团队如何应对突发的技术故障和危机?从网易云音乐故障谈起
在数字化时代,软件和服务的稳定性是用户体验和企业声誉的关键。然而,即便是像网易云音乐这样的大型平台,也难免遭遇突发的技术故障。2024年8月19日下午,网易云音乐疑似出现服务器故障,网页端显示“502 Bad Gateway”错误,App也无法正常使用。这次事件不仅对用户体验造成了严重影响,还给公司带来了声誉和经济上的损失。那么,面对这种突发的技术故障,开发团队应该如何快速响应、有效解决问题,并从中吸取教训以防患未然呢?本文将探讨应对技术故障的策略和团队建设的思考。
watermelo37
2025/01/22
970
开发团队如何应对突发的技术故障和危机?从网易云音乐故障谈起
浅谈服务器海量运营
"鹅厂网事"由深圳市腾讯计算机系统有限公司技术工程事业群网络平台部运营,我们希望与业界各位志同道合的伙伴交流切磋最新的网络、服务器行业动态信息,同时分享腾讯在网络与服务器领域,规划、运营、研发、服务等层面的实战干货,期待与您的共同成长。 网络平台部以构建敏捷、弹性、低成本的业界领先海量互联网云计算服务平台,为支撑腾讯公司业务持续发展,为业务建立竞争优势、构建行业健康生态而持续贡献价值! 导语 2015年春节,微信红包引爆全球,当各种惊人数据展示在大家面前的时候,从基础架构这个角度来看,必有一套完善的体系支
鹅厂网事
2018/02/05
1.7K0
浅谈服务器海量运营
如何理解 Site Reliability ?
作为谷厂出品的神书《SRE Google运维解密》, 笔者早有耳闻并断断续续阅读过部分内容,最近终于静心品阅了一遍(作为拖延症患者, 写完此文与阅读完原书已间隔约半年),里面的很多理念确实值得细细品味(部分章节没有实际操作空间,快读略过)。 5月底恰逢IT内部调整组织架构,其中一个开发运营团队顺手更名为了SRE,不求完美COPY谷歌文化,但求走出符合自己特色的站点可靠工程文化。试运行一段时间后,我想应该会再回头重温一下这本书,一定会有不同的理解。 个人理解SRE三个字母,S+R是一块内容,E是另一块。本文不
曲水流觞
2019/11/05
8400
如何理解 Site Reliability ?
线上故障处理指南
尽快恢复,是止损的最佳办法,至于查找根本原因,或者从根本上解决问题,那是服务恢复可用后的事情
KenTalk
2023/04/07
1.3K0
线上故障处理指南
如何快速处理线上故障
线上故障通常是指大规模的影响线上服务可用性的问题或者事件,通俗点讲就是:掉“坑”里了,这个“坑”就是线上故障!线上故障的处理过程可以形象地表达为:“踩坑”、“跳坑”、“填坑”、“避坑”。
嘉为蓝鲸
2018/12/21
1.8K0
相关推荐
【笔记】每一个开发都应该懂得故障处理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档