故障管理
故障管理概述
故障管理是源于ITIL的一个概念,在IT企业或者互联网企业进行故障管理的目的是当生产环境出现重大宕机时尽快恢复正常的服务运营,将组件失败对业务所造成的负面影响降到最低,从而确保满足事先与业务客户之间所约定的服务级别的目标和服务级别质量。
在IT和互联网企业的实践中,以下情况都有可能造成故障:
按计划进行的硬件、操作系统维护所引起的故障,包括更换硬盘、操作系统补丁。
应用性故障,包括软件应用性能问题、应用缺陷(bug)、系统应用变更。
人为操作故障:包括误操作以及不按规定非标准操作引起的故障。
系统软件故障:包括操作系统死机、数据库的各类故障。
硬件故障:包括硬盘、网卡损坏。
相关设备故障:包括UPS失效引起的电力中断。
自然灾害,包括洪水、火灾、地震。
这里以阿里集团为例。为降低故障的影响,阿里集团故障管理体系从整体体系化治理的角度出发,将影响真实业务的场景定义、发现和应急能力以及后续治理都纳入故障管理的范围。结合阿里集团创新性的“风险预警”,从“隐患”就开始管理,同时覆盖造成一定影响导致性能下降的普通故障,以及严重影响业务的“重大故障”。
此外,考虑到互联网企业的一些特性,如企业存在大量对快速响应要求极高的场景,内部多运用和实践DevOps/Agile等快速迭代的开发环境,同时重大故障应急涉及多部门(法务、政务、公关、客服、技术支持)的联动机制等等,本故障管理体系也结合了以上的互联网企业特性做了对应的机制优化。
故障管理的重要性
无论是理论还是实践,均证明故障只要有发生的可能,它总会发生。根据墨菲定律,假设某意外事件在一次实验(活动)中发生的概率为p(p>0),则在n次实验(活动)中至少有一次发生的概率为P=1-(1-p)n。由此可见,当实验次数n趋向于无穷时,pn会越来越趋于1,即成为必然事件。
为了保障业务稳定性,可以通过故障管理来达到:
提前发现、解决风险来预防问题;
及时发现,快速定位、快速恢复故障达到降低故障的影响面(1-5-10解决方案);
确保改进措施有效落地、避免故障重复发生。
通过建立一个规范可遵循、全流程闭环的故障管理体系,配合技术手段的提升,可以有效降低故障发生的几率,缩短故障的MTTR,最终使故障造成的破坏性趋近于0。
在日常运营中,无论什么原因导致业务服务中断、服务品质下降或用户服务体验下降的现象,称为故障,但不包括用户侧环境或用户自身操作引起的问题。
“用户体验下降”说明故障的核心要关注用户感受,可通过客服渠道获知用户投诉,也可通过监控渠道推知用户端的使用情况;
“服务中断、服务品质下降”说明即使用户没有投诉(甚至没有用户使用),但是如企业提供的服务出了问题,也是故障;
“无论什么原因”指无论是企业自身原因,还是第三方如供应商、运营商的原因,只要影响到了用户,就都是故障。
故障管理
故障管理是单独针对故障的一整套完成的应急相应流程机制,包括:故障应急、故障收敛、故障追踪、故障复盘、故障改进等核心功能。通过建立故障应急机制,可保证服务稳定运行、服务体验保证等。故障管理也可以理解为重大事件的升级。
故障管理应包含以下几点功能或特性:
故障等级定义:针对不同的业务线,需召集不同的人员进行统一制定。确定得到各方人员的认同。且制定故障等级需遵循以下几点:
功能重要性
影响产品、服务、应用
影响面(用户数、损失数、舆情等)
故障应急:支持故障全局应急通告,电话、短信、邮件、IM多种通知渠道,确保故障关键进展及时通知至相关人员,加快信息流转;
故障收敛:支持按时间/次数进行告警收敛,将告警收敛到一个故障中统一处理;
故障追踪:支持对故障的最新进展、故障影响面(影响服务)、舆情反馈、Timeline时间线进行在线化管理、协同,基于统一视角协同处理故障,提升故障处理效率;
故障复盘:基于最佳实践经验,沉淀了对故障进行深度复盘的结构化要求,形成了线上检查点,以产品的方式承载流程落地。包括根因检查点(如故障原因、最近活动、注入方式、恢复方式等)、故障变更检查、监控检查,并需要对每一个故障明确责任人及团队;
故障改进:支持对故障制定明确的改进及验收措施、责任人及完成时间,确保每个深度复盘后的故障都能对业务连续性形成改进,避免历史同类故障重复发生。
最佳实践
运维事件中心是阿里云提供的云上故障管理服务。制定故障应急响应流程机制。可规范化企业流程机制,建立完整的体系帮助企业稳定发展。
阿里集团相关团队在多年的故障管理经验上,开发了一套功能非常丰富,方便故障管理的各项工作数字化推动的故障管理平台。故障管理的方方面面都可以在运维事件中心上配置和管理。
故障等级定义的制定和录入
标准化故障等级定义制定的思路:
依据业务属性先将业务划分为大的子类(业务整体技术架构层面)
将每个子类业务里的核心模块和次核心、非核心模块区分开来(功能层面)
根据各功能模块的业务量级去适配不同的影响面及故障等级定义模板
其中根据业务量级适配不同的影响面及其对应的故障等级定义模板是这个思路的重点。下面举例解释(仅作为参考,各业务可以根据自身实际情况酌情使用部分推荐值):
对于核心功能:
大体量的情况下(例如:高峰期分钟级超过1000TPS,日均100W以上),建议分钟级成功量下跌30%及以上定义为P1
中体量的情况下(例如:高峰期分钟级100-1000TPS,日均10-100W),建议10分钟内总体成功量下跌45%及以上定义为P1
小体量的情况下(例如高峰期分钟级10-100TPS,日均1-10W), 15/30分钟内总体成功量下跌45%及以上定义为P1
更小体量的业务(日均小于1W TPS),可使用60分钟内总体成功量下跌45%及以上定义为P2
业务功能模块最好从用户视角出发,或者外部调用可感知到的视角出发,如用户使用的业务量级下跌或者外部调用成功量下跌。
在最高故障等级P1确定的情况下,我们依次降低影响面, 形成P2-P4的标准 (大体量业务的主路径失败可以考虑P3起, 不设置P4级别故障), 如30%-20%, 45%-30%等影响面对应剩余等级。
对于次核心功能(如营销类,注册类等业务),可以在核心功能的基础上统一降低一个级别;
对于非核心功能(如查询类,后台使用等业务),可以在核心功能的基础上统一降低两个级别;
由此生成一个故障等级定义的模板可以如下所示(实际使用中可适当精简,避免过于冗余)
故障等级定义制定好以后,需要得到技术负责人的审批,以及后续面向技术团队和上下游团队的公示。必要时需要进行宣讲。
在运维事件中心可以录入对应的故障等级,在相关联的监控触发后,可以自动匹配到对应的等级定义,方便快速得到故障严重性的界定。
服务组和故障应急群
服务组是一组人员,可以跟一个或者多个故障场景绑定,当故障触发时,会自动外呼对应的服务组值班成员以及加服务组成员到故障应急群。同时服务组也支持排班。简而言之服务组就是在故障平台的一组值班人员。
故障应急群是在故障通告后自动创建的故障处理群,除了自动加入的处理成员,其他相关人员也可以主动加入,进行故障的排查。 故障应急群同时具备签到响应、辅助排查、作战手册等故障处理相关功能。
故障记录
在故障进行中进行故障相关的关键时间点、关键操作等相关内容进行记录。
故障复盘与改进措施
故障复盘信息同步,在故障结束后,对故障原因责任人等进行定位与定责。
对故障进行复盘后,需针对此次故障件进行针对性的改进,避免后续再次发生此类故障。