如何做好一名稳定性SRE
2023-02-18 16:42:09 3 举报
AI智能生成
SRE业务稳定性保障
作者其他创作
大纲/内容
及时、快速的响应:报警、工单、线上问题
把机制建立好,切实落地(值班、报警响应、复盘、故障演练、故障奖惩、活动保障等)
业务时序、核心链路流程、流量地图、依赖风险
梳理
将梳理出来的风险,以专项的形式治理掉,防患于未然
治理
通过演练来提高大家响应的能力和对风险点的认知
演练
不止是解决问题,还要能够发现风险、问题之后,推动上下游解决
值班
除响应外,做报警保险和机制调整,保证报警的准确度和大家对报警的敏感度
报警
主动走到最前线
疑惑1:做好了是应该的,出了问题就要负责任
在发生问题时快速解决问题
把风险归纳总结,推动解决
在系统健康的时候评估链路,发现隐藏的问题
不能只做当下,要看到未来的风险
自动:异常自动恢复、自动运维,一方面兜底、容灾,另一方面包括智能化、机器人和规则判断
自助:通过提供机器人、自动化方法,让业务自己动手处理
自动化
从监控、链路治理、演练入手,形成体系
系统化
数据驱动:对日志和错误码的情况进行量化
数据对账:包括上下游对账、业务对账
轨迹跟踪:包括变更轨迹和数据轨迹,目标是实现数据的可跟踪,和变更的可回溯、可回滚
数据化运营:主要是将稳定性的指标量化,比如工单解决时间、工单数、报警数、报警响应时间、 故障风险数、代码CR量,变更灰度时长等,通过量化指标,驱动团队同学建立量化意识
数据化
自动化、系统化、数据化
疑惑2:稳定性总是做擦屁股的工作
优先考虑如何响应问题
需要细心和耐心
团结团队内的同学,上下游的同学
心理建设
系统间依赖图,包括业务时序,熟悉业务流程
流量地图,了解上下游系统,系统的流量关系和水位,同时把控系统架构
系统保障图,知道稳定性保障的步骤和打法
机器资源表,了解资源情况,对资源进行管控
异常场景应急表,出问题时怎么应对,哪里容易出问题
业务单量表,知道哪些业务影响大,哪些业务是重点
能力建设
疑惑3:稳定性似乎总是新人的垃圾场价值认可
稳定性心态
系统自身
服务接口
业务特性
数据(数据偏差)
资金对账
监控的5个维度
最核心业务入口的qps、rt、错误数、成功率
核心下游依赖接口的qps、rt、错误数、成功率
错误码top N(打通上下游错误码透传),系统运行过程中最核心的错误,快速直观定位问题
其他影响系统稳定性的核心指标
监控大盘
谨慎使用电话报警
日常报警数量限制
业务正常情况下的报警优化
报警要能够互补
避免监控信息爆炸
有效发现监控问题
监控体系
系统可用性的定义
故障场景梳理,要把可能出现故障的核心场景、表现、定位方法、应对策略梳理清楚
场景梳理
结合场景进行演练
根据业务特点,定制演练
故障演练
告知当前问题已经有人接手,是谁接手的,表明问题有人在处理了
通报要注意控制范围,优先同步给你的主管,避免范围过大引起恐
响应与同步
组织人员,快速定位问题,告知问题初步定位原因
定位
初步影响范围是什么?给出大致数据
有哪些需要老板、产品、业务方决策的?
决策
当前进展如何,是否已经止损
进展/恢复
快速响应流程
故障应急过程
与兄弟团队的关系
故障应急体系
明确有哪些资源,余量多少
明确资源的当前水位、压力
资源表
资源体系
1、明确大促的作战地图,明确时间节点和步骤
2、SRE产出备战报告
3、绘制流量地图,明确接口流量,模块链路,关键风险
4、SRE和开发同学共同梳理上下游接口依赖流量和峰值,给出限流阈值并沟通上下游
5、链路梳理,产出:强弱依赖、风险点、限流、降级预案、新业务特征
6、风险点展开集中治理,大的风险点要开专项治理
7、治理完成后,开展监控走查,更新监控大盘
8、开始压测,分为专项重点压测,上下游压测,全链路压测
9、录入预案,并对预案进行测试和验证,拉上业务、产品、测试一起,组织预案演练,验证预案可行性
10、产出作战手册,包括值班表,工具清单,大促期间作战流程(精确到分钟级的操作时间点和人员)
11、大促开始前SRE要进行战前宣讲,一般包括发布流程、审批流程、白名单人员,工单汇报方法,大促交流群,大促期间的红线和注意事项
12、大促结束后要进行复盘,复盘内容包括:目标是否达到,工作汇总,亮点,后续action项,未来保障的思考和计划等
大促保障的一般流程
重在根据业务活动节点,输入流量和单量,梳理上下游流量压力
统计上下游接口压力,评估限流阈值和资源缺口,同时准备资源
容量评估和准备阶段
上下游间的强弱依赖,强依赖的要关联预案、限流、降级等
强弱依赖
风险点
当前场景的限流评估
限流
当前场景可能存在的降级预案
降级预案
当前场景从上次大促到现在的增量变更
新业务特性
链路梳理&治理
系统健壮性提升阶段重在链路梳理和风险发现,对发现的风险进行专项治理
对流量尖峰,加dts等异步任务,进行削峰填谷
对强依赖的下游接口,加本地缓存或tair缓存
降级预案与兜底容灾
需要提前禁写的,要产出禁写预案
需要注意的点:缓存、异步消息、异步任务、数据库量级、数据库关联查询量或批量更新量、接口超时时间、重试次数、幂等、sql limit和查询上限
梳理的目的不仅是评估风险,更重要的是治理
用于发现单机或者单接口的性能水位和性能热点,为了计算限流阈值,评估集群规模做准备
单点压测(单机、单接口)
整个链路的性能水位,是由最低的那个节点接口/应用 决定的
摸高,一直摸到其中一个节点达到瓶颈
考虑单链路多个应用间多级调用的性能,用于评估某个功能点的水位
单链路压测
全链路压测的目标是预演,摸高是预设目标的
将各个团队压测的结果进行汇总并验证
全链路压测
压测
是否达到流量预期
哪些点是瓶颈点
瓶颈点如何解决,如何降级或限流
上下游在压测过程中有没有可能与自己域相互影响的地方
压测需关注的点
注重实效,不要走形式化
验证预案的可行性和可操作性
预案&演练
压测摸底、预案演练
查缺补漏,要有checklist
有作战手册和红线,作战手册要精确到时间点和人,每个时间点由谁做什么要明确
明确报备方案、工单响应、各自分工
战前check和值班阶段
外框
作战地图
系统核心模块和模块间的依赖关系
核心功能流量流向
核心接口/功能的单量或qps
链路上的主要风险点
流量地图&流量评估
上下游要相互明确各自域的瓶颈、限流、流量承诺
大促活动保障借大促,修系统,提升稳定性
建立数据分析系统,统计业务的量级和趋势
对业务和应用链路,按重要性进行划分
链路治理,要求核心链路上的系统不能依赖非核心的接口、db;非核心链路上的任何降级措施,不能影响核心链路的功能
核心链路和非核心链路,也不能依赖共同的基础组件
核心链路和非核心链路,要有2套发布等级,2种监控等级
黄金链路识别治理
参与故障演练(包括故障止血方法)以及熟练使用各种故障排查工具
明确值班的范围,包括预警群、工单群、线上问题反馈群、答疑群等
值班周期内,应该减少业务工作安排
事前
短时间无法定位原因的情况,立即联系相关人员协助
发现问题后,应该第一时间在群里反馈通知
事中
组织问题Review,对于常见问题的排查沉淀到一处,后续工具化和演练
事后
值班机制
值班不应该是简单的人力消耗,应该花费时间开发工具平台,做到自动答疑、自助答疑、问题自动排查,减少答疑,提高问题排查效率
报警响应机制
日常风险和问题报备机制
复盘机制
故障奖惩机制
日常演练机制
日常资源(机器、中间件)管控和记账机制
团队权限管控机制
稳定性意识
日常稳定性机制
系统的健壮不是没有报警,也不是不出故障,服务、数据、体验都不受影响。一个系统想要健壮,应该具有一定的弹性
系统的弹性体现:容灾的、可自愈的、一定程度上容错的、可运营的
发现、恢复、预防、缓解
弹性建设
考虑价值导向,如当前做的事情,有多少数据量,哪些是无用的长尾的,哪些是有巨大价值的等
做反向思维,通过价值来考量,通过价值反推意义,提效降本
价值建设
如何做好一名稳定性SRE
0 条评论
回复 删除
下一页