zoukankan      html  css  js  c++  java
  • 故障处理流程和规范

    背景

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

    故障反馈

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

    确认故障

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

    系统监控指标:

    • 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人负责。人都有打盹或休息/休假的时候,自己不能处理或外出,其他人可以根据运维文档,根据故障常用恢复原则进行紧急处理。

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

    引用博客来自李志涛:https://www.cnblogs.com/lizherui/p/11704523.html

  • 相关阅读:
    C#利用反射动态调用类及方法
    系统程序监控软件
    SQL server 2008 安装和远程访问的问题
    sql server 创建临时表
    IIS 时间问题
    windows 2008 安装 sql server 2008
    sql server xml nodes 的使用
    Window 7sp1 安装vs2010 sp1 打开xaml文件崩溃
    CSS资源网址
    Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0
  • 原文地址:https://www.cnblogs.com/lizherui/p/11704523.html
Copyright © 2011-2022 走看看