洪鹏
bilibili基础架构部/稳定性开发负责人
l负责B站SRE稳定性体系平台建设l主导B站故障管理、混沌工程、多活管控平台的开发l目前专注于SLO体系的实践落地,并建设基于SLO的质量运营体系
SLO工程实践
1
目录
SLO质量运营
2
CONTENTS
SLO价值提升:GOC体系
3
01 SLO工程实践
SLO工程实践-整体流程
SLO定义
•服 务 可 ⽤ 性 : ⽐ 如x x服 务 全 年 可 ⽤ 性> 9 9 . 9 9 %•服 务 延 时 : ⽐ 如p 9 9请 求< 2 0 0 m s•可 以 在 不 同 的 时 间 窗 ⼝ 上 定 义S L O,⽐ 如 ⼀ 个 ⽉ 或 ⼀ 个 季 度•获 得 关 键 的 利 益 相 关 者 认 可 和 批 准
SLO报警
•可 ⽤ 性 报 警 准 确 率 最 ⾼•多 消 耗 率 ( 错 误 率/ S L O基 准 错 误率) 报 警•多 时 间 窗 ⼝
SLI选择
仪表盘和报表
错误预算
•请 求 驱 动 型 : 可 ⽤ 率 、 延 时 、 吞 吐•数 据 驱 动 型 : 延 时 、 任 务 数 据 完 整 性•业 务 指 标 : 订 单 数 、 在 线 ⼈ 数 等•基 础 组 件 : 存 储 、 消 息 队 列 等
•S L I趋 势 图 、 错 误 量•S L I季 度 、 年 度 运 营 报 表•可 视 化 运 营
•基 于S L I和S L O, 得 出 时 间 窗 ⼝ 内的 允 许 错 误 预 算•时 间 内 错 误 预 算 消 耗 殆 尽 , 制 定 错误 预 算 执 ⾏ 策 略
SLO工程实践-产品概览
SLO工程实践-SLI
SLI是整个SLO工程的基础
怎么选择合适的SLI?
单个SLI规范可具有多种实现方式
•质量•覆盖范围•实现成本
通常建议将SLI视为两个数字的⽐值:好事件的数量除以事件的总数
对用户重要服务能力的评估,与测量方式无关例如:接口在100ms内返回的比例
•状态码200的请求数/总请求数•小于100ms返回的请求数/总请求数•成功下单数/总下单数
•移动端上报•网关指标•服务指标、日志
选择SLI的原则
•直接体现出目标对象的稳定性•优先选择和用户体验强相关的指标
结合实际情况,多纬度、多指标
SLO工程实践-应用SLI
部分内网服务不过负载均衡,只通过负载均衡上的一条指标无法覆盖全部故障场景
实施过程中遇到的问题
整个系统架构按层级划分
•各语言框架上报指标不统一•少数应用没接入框架,自上报指标
SLB Metrics:SLB侧上报的指标数据•5xx错误量、QPS、延时、可用率
如何解决?
APIGW Metrics:APIGW侧上报的指标数据•5xx错误量、QPS、延时、可用率
•每个框架独立模板,模板关联SLI•自定义SLI
HTTP Server Metrics:应用HTTP Server上报的指标数据•-5xx错误量、QPS、延时、可用率
gRPC Server Metrics:应用HTTP Server上报的指标数据•-5xx错误量、QPS、延时、可用率
完整覆盖所有应用不可用的场景
SLO工程实践-核心场景SLI
应用的API是业务功能的直接体现,通过度量API的SLI就能反映出业务某个功能的情况
核心场景实施
核心场景制定
•梳理公司级核心业务,选择能代表业务功能的API•度量可用率、错误数、延时、吞吐
SLO工程实践-业务SLI
技术指标发现服务所有不可用问题,业务指标补位核心场景(逻辑)异常
常见业务指标异常导致的线上case
•用户频繁掉登录,最后发现是APP上误踢登录•用户充值失败,排查后发现是业务逻辑BUG•.....
业务指标度量方法
大数据流式实时计算
•APP:DAU、PV、PCU等•服务端:发送弹幕、评论、登录、动态等
数据库Binlog订阅
•直 播 营 收 、 消 费•电 商 订 单•用 户 支 付
SLO工程实践-组件SLI
服务的可用性大部分强依赖中间件或底层基础设施的稳定性,组件异常通常导致线上大规模业务故障
组件SLI类型
组件类型
流量接入
•可用率•延时•偏离度(基线/偏离值)
•DCDN、SLB、APIGW存储•MySQL、Redis、KV流水线•消息队列、离线任务
SLO工程实践-SLO
定义: Service Level Objective(服务等级目标)
重要程度
•指定了服务可靠性的目标水平,是衡量可靠性的工具•错误预算是平衡可靠性和其他工程工作的工具•SLO对SRE工作的开展有指导性意义,没有SLO,就没有SRE
时间窗口选择,滚动窗口还是自然窗口?
•滚动窗口与用户体验更加接近(例如过去30天),四个星期的滚动窗口是一个很好的通用间隔•自然窗口与业务工作计划更加紧密集合(一个月第一天到第二月第一天)•滚动窗口+自然窗口
目标怎么制定
•基于时间窗口的历史周期数据计算出推荐值•SRE和产品研发共同制定,并不断优化改进
G O P S全 球 运 维 大 会2 0 2 3 ·上 海 站
SLO工程实践-SLO
错误预算
燃烧率
•错误预算的消耗速度•燃烧率=当前错误率/基准错误率(1-SLO)•消耗速率越高,越严重
•用于测量实际性能和预期性能之间的差异•对风险识别、故障定级和稳定性决策至关重要•会按照滚动窗口进行更新
案例
99.9%的SLO,30d窗口的错误预算,基准错误率:0.1%,此时燃烧率为1
当错误率达到1%,燃烧率为10,只需要3d消耗完全部预算
SLO工程实践-告警
1⼩ 时 消 耗 掉 当 ⽉3 6 h的 错 误 预 算
多 次 消 耗 率 报 警
严 重 故 障 :1⼩ 时 消 耗 ⽉ 度2%( 1 4 . 4 h )的预 算 消 耗 , 发 出 紧 急 报 警轻 微 故 障 :6⼩ 时 消 耗 ⽉ 度5%( 3 6 h )的错 误 预 算 , 发 出 紧 急 报 警兜 底 策 略 :3天 消 耗 ⽉ 度1 0%( 3 d )的 预 算 ,发 出 故 障 ⼯ 单
S L O低 于 阈 值1 0分 钟 后 报 警
•服 务0 .2%不 可 ⽤ 时1 0分 钟 发 出 报 警•服 务1 0 0 %不 可 ⽤ 时 也 在1 0分 钟 后 发 出报 警•报 警 灵 敏 度 跟 服 务 错 误 率 ⽆ 关
G O P S全 球 运 维 大 会2 0 2 3 ·上 海 站
SLO工程实践-告警
告警触达
基于错误预算燃烧率的告警
•企微卡片•群事件协同
快速消耗(SLO=99.99%,10分钟平均可用率<99.9%)
•燃烧率:0.1/(1-SLO)=10•10分钟消耗了100分钟的错误预算发出告警,需要立即接入处理
慢速消耗
•一天平均可用率