故障处理流程和规范

背景

大数据团队负责很多公司核心服务,包括olap查询、队列、日志搜索、数据传输、存储、计算等等服务,作为公司数据传输和存储及计算的中枢,服务的稳定性直接影响用户口碑和体验,间接影响着公司的营收,线上服务的稳定性是每位同学需要重点关注的事情。当然线上服务发生故障,做技术每位同学几乎都会遇到,也是作为技术RD成长中经常要经历的事。从故障中我们可以吸取到很多教训,变得越来越有经验,把我们的服务做得越来越稳定。但是并不是每一个团队/技术同学在应对故障的处理方式上,都能做到合理和科学地迅速止损,把业务影响和损失降到最小。那我们该如何做呢?才能让我们工作做得更好呢?下面流程图和详细步骤就是我们要具体做得工作。

故障处理流程和规范_第1张图片

故障反馈

  • 用户部门主动反馈,使用集群服务超时或接口调用报错
  • 服务负责部门自行发现,通过系统报警发现大数据服务出现异常

确认故障

不管是收到报警信息,还是业务用户反馈大数据组提供的服务有问题,我们都需要进一步确认验证集群是否正常提供服务,确认的同时通知用户我们正在跟踪处理,让用户放心。收到反馈通过以下指标项迅速判断,发现大数据集群可能遇到的问题

系统监控指标:

  • cpu usage
  • cpu load
  • memory
  • I/O 网络与磁盘
  • network flow
  • swap
  • 客户端连接总数量
  • mmap数量和usage
  • File Description数量和usage
  • ......

集群监控指标:

  • jvm指标(gc、threads)
  • 服务日志(错误日志、抛出异常)
  • 上下文逻辑问题
  • ......

用户服务指标:

  • 收集调用异常或错误信息(接口请求响应时间、接口调用QPS、返回错误内容或code)
  • 从错误信息确认边界,是用户使用问题,还是集群服务运行异常

 

集群可能出现问题,示例如下

中间件层面监控(数据库、缓存、消息队列、存储):

  • 对数据库的负载、慢查询、连接数等监控
  • 对缓存的连接数、占用内存、吞吐量、响应时间等监控
  • 消息队列的生产/消费时间、吞吐量、负载、堆积情况等监控
  • 对存储的写入时间、TPS、读取QPS等监控
  • ......

故障通知

确认故障后,迅速拉群,把上下游用户及自己项目负责人、部门负责人都加入进来,简要整理下内容,告知用户当前情况及解决预案或方案,不要给用户感觉突然或带来惊讶,让用户有心理准备,留好buffer时间做好应对措施。如果不能及时解决,不要等待或死磕问题,请迅速联系自己的老板寻求支持和帮助(也可以请求能帮助自己的同事加入)。

故障恢复

故障确认后,首要做的就是故障止损和恢复,恢复常用手段如下:

  1. 服务回滚:如果属于更新的代码BUG导致的问题,一般可通过回滚上一个程序版本来迅速恢复,不过会导致部分新功能不可用
  2. 重启:部分问题是可以通过重启的手段来临时恢复的,以保障系统的暂时可用,但后续还需有其他方法彻底解决问题
  3. 限流和降级:这其实是一个临时手段,通过将部分非核心系统进行降级和限制流量处理,来避免核心业务受到影响
  4. 紧急更新:这个方式会经常被用到,明确定位问题源后,迅速修复代码或组件,然后快速更新上线,比较依赖故障处理人技术和代码逻辑、应急处理能力

写故障casestudy

写casestudy原则:并不是所有故障都需要写casestudy,原则一如果我们服务能快速恢复且对用户部门影响很小,就不用写。原则二由各个服务SLA确定是否编写casestudy

caseStudy-YYYYMMDD-xxx操作引起xxx服务不可用
故障发生时间:
故障报告时间:
故障恢复时间:
故障持续时间:
故障影响范围:
故障等级:PN
PN故障处理人:xxx、xxx、xxx
故障责任人:xxx
故障描述:xxx
故障处理过程:xxx
故障原因分析:xxx
故障总结:xxx
后续改进工作:xxx  改进任务列表(任务、执行人、Deadline)

组织故障review

邀请参与人员:用户代表、集群服务负责人、部门负责人、部门相关同事

  • 回顾故障处理全过程: 需要详细的记录下故障发现的时间,什么途径发现的,用了什么样的排查手段,什么样子的处理流程,处理过程中,几点几分做了什么事情,将整个过程都一一的记录下来。
  • 分析故障原因: 需要将团队成员聚在一起,进行讨论,分析故障发生的原因,这里的原因不是指表象的原因,需要剖析出问题的根源。
  • 故障改进计划: 针对当前故障要做哪些改进措施,应对类似问题,如何预防。给出可实施的方案以及时间计划。同时对故障等级进行认定,以及团队成员责任的追究和备案(但不提倡惩罚)。

注意:review&复盘后,发送邮件给用户部门,P0故障同时抄送CTO

改进措施列表

根据当前存在的问题制定出一套流程不难,难在对流程执行的跟踪和监督。因此每个故障Action都是可执行的,且有明确的执行人和Deadline,跟进故障casestudy中改进工作列表进展情况,及时closed任务。随着故障管理标准化建立和规范化,经过一段时间的积累,会沉淀一些宝贵的故障数据,为系统改进方向提供了参考,也增强了伙伴们的故障意识,避免小伙伴不会犯同类型故障,对线上环境的敬畏之心和对故障的紧急处理意识。

完善服务运维文档

以上工作做完后,就要对运维文档查漏补缺进行完善了。大数据团队每个系统或方向的小组人数多寡有差异,多的有4人,少的可能只有1人负责。人都有打盹或休息/休假的时候,自己不能处理或外出,其他人可以根据运维文档,根据故障常用恢复原则进行紧急处理。

  • 管理平台使用文档,能进行服务启动/停止/重启操作
  • 服务程序部署、回滚版本操作流程等
  • 服务程序部署目录、日志目录
  • 常见故障列表及恢复手册

你可能感兴趣的:(故障处理流程和规范)