作者:焦振清
时间:2017-01-12
对于线上服务故障,作为运维工程师来讲,应对措施建议按照如下顺序进行:
- 预防:控制故障的影响范围,从全局降为局部,如地域,功能维度
- 止损:通过执行预先定制的预案,尝试快速恢复服务
- 定位:通过流程化的手段,快速寻找问题的原因
从定位角度讲,我们需要建立以下能力,从而提升定位的效率:
- 所有主机的存活状态,故障主机的特征分析
- 所有服务的存活状态,故障服务/实例的特征分析
- 所有服务的异常日志以及异常日志数量的增长趋势,特征
- 所有服务的版本/配置/数据等的一致性
- 所有变更的收集,包括但不限于部署,配置,数据和数据库,机器环境,第三方依赖,基础设施等
- 所有报警的特征
- 所有功能/模块的可用性,包括第三方依赖,尤其是CDN是否有异常
- 所有关键指标,如服务整体的容量,流量,延时,错误,订单,收入等
- 所有数据流通路上的异常点,慢请求
- 能够在集群上执行命令并快速获取结果的执行平台
- 基于各个地域访问网站的可用性监控,能够进行故障区域的特诊分析
- 所有机器的运行时间的分布(uptime),以及短时间内被重启过的主机的特诊分析
- 标准化的监控方式,如JAVA应该统一监控通用的监控指标,从而便于横向对比
- 网络的连通性,包括内网的连通性,内网跨机房间的连通性和内网访问外网的连通性
- 注册中心如ZK/ETCD,相关的模块的所有实例是否注册正常,是否有抖动
特征的说明:
- 机器维度:是否是同一个机房,同一个网段,同一个硬件类型
- 服务维度:是否是同一个服务,同一个服务,同一种语言
- 软件维度:是否是同一个内核版本,操作系统版本
- 用户维度:是否是同一个地域,运营商,硬件,APP版本等