以 SLI/SLO 为驱动的可观测性:从定义到告警策略 — 写给在值班室里泡过夜的你

简介: 以 SLI/SLO 为驱动的可观测性:从定义到告警策略 — 写给在值班室里泡过夜的你

以 SLI/SLO 为驱动的可观测性:从定义到告警策略 — 写给在值班室里泡过夜的你

作者 | Echo_Wish(运维那点儿事儿,接地气讲清楚)

最近跟不少公司聊架构和监控,发现一个常见误区:监控只是“报警器”,做得越多越好。但真正能稳定产线的,不是盲目堆指标,而是把业务目标用可度量的指标(SLI)表示出来,用SLO去约束期望,再把告警策略与这些目标绑定——这才是“可观测性成熟度”的核心。我把从概念到落地的思路拆成几步,顺手给代码示例,确保你回去就能撸一版出来。


先把概念说清楚(别糊弄自己)

  • SLI(Service Level Indicator):服务质量的度量指标。比如请求成功率、请求延迟 P95、图像处理错误率等。SLI 要聚焦用户感知的关键路径,不要把数据库连接池指标当作 SLI(除非连接池直接影响用户体验)。
  • SLO(Service Level Objective):对 SLI 的期望值,比如“请求 95th 延迟 < 300ms” 或者“可用性 ≥ 99.95%(30 天)”。SLO 是产品/业务与运维之间的契约。
  • Error Budget(误差预算):1 - SLO 的那部分允许的失败比例。比如 99.9% SLO → 0.1% error budget。它是“创新投入”和“稳定性”之间的货币——花完就要减速、修 Bug。

从 SLI 到 SLO:如何设定(实操派)

  1. 拆业务场景:把产品按用户路径拆出来(登录、下单、支付、检索、流媒体播放)。每条路径定义 1-2 个 SLI。
  2. 选择度量方式:对成功率用计数(requests_total / requests_successful),对延迟用分位数(p50/p95/p99)。
  3. 设定 SLO:结合历史数据、业务可接受成本与法律合规设目标。初期可以用历史 90 天的表现做参考,不要盲目定 99.999%。
  4. 定义评估窗口:SLO 一定要有窗口(如 30 天、7 天、1 天实时监测)。长期 SLO 和短期 SLO 可以并存(长期保证业务目标,短期指导运维响应)。

举个例子:电商下单服务

  • SLI1(成功率) = 成功下单数 / 下单请求数
  • SLO1 = 成功率 ≥ 99.95%(30 天)
  • SLI2(延迟) = p95(order_submit_latency)
  • SLO2 = p95 ≤ 500ms(7 天)

告警策略:别靠“阈值炸弹”吓醒同事

很多团队把 Prometheus/Datadog 里拉满阈值,一有波动就是 paging——结果大家对告警免疫了。SLO 驱动的告警策略应该区分紧急告警(Page)运营告警(Ticket/Slack),并以 Error Budget 为核心。

关键告警类型:

  1. SLO Burn Rate 警报(紧急):如果短期内 error budget 被以很高的速率消耗,需要立即 paging。例如 1 小时内的 burn rate 超过 14x(即如果以当前速率持续会在 1 小时内耗尽 1 天的预算)就立刻通知值班工程师。
  2. SLO Remaining Budget 警告(运营):当剩余预算低于某阈值(比如剩余 ≤ 25%)发送团队通知,让 PM 决策是否触发缓减新功能发布。
  3. 系统健康指标(辅助):比如数据库连接数、队列积压,但这些只作为辅助线索,不直接 Paging,除非关联到 SLO 降低。

下面给个 Prometheus AlertRule 的示例(简化版):

groups:
- name: slo.rules
  rules:
  - alert: OrderService_HighBurnRate
    expr: |
      (
        increase(order_failures_total[1h]) 
        / increase(order_requests_total[1h])
      ) / (0.001) > 14
    for: 5m
    labels:
      severity: page
    annotations:
      summary: "OrderService 高速消耗 error budget"
      description: "过去1小时失败率按当前速率会在24小时内耗尽预算,立即处理"

  - alert: OrderService_LowErrorBudget
    expr: |
      (sum_over_time(order_failures_total[30d]) / sum_over_time(order_requests_total[30d])) < 0.001 and
      (1 - (sum_over_time(order_failures_total[30d]) / sum_over_time(order_requests_total[30d]))) < 0.9975
    for: 30m
    labels:
      severity: ticket
    annotations:
      summary: "OrderService 剩余 error budget 低于25%"
      description: "请PM与SRE做是否降级发布/修复策略"

注:上面表达式只是示意,实际要用 SLO 计算库或者把 error budget 的计算预先做成 recording rule,避免在 alert 里做复杂计算。


实战建议与流程(别光写文档,要落地)

  1. 把 SLO 写进团队协议:明确谁负责 SLO,SLO 达不到时的流程(谁 page?谁评估?是否冻结发布?)。
  2. 把指标埋好:在应用端埋点确保 SLI 的原子性(能追溯到 request id、部署版本)。
  3. 模拟演练:定期做 chaos 或故障演练,验证告警能把对的人叫醒、流程顺畅。
  4. 可视化看板:把 SLO、burn rate、剩余预算放在看板上,业务方也能一目了然。
  5. 数据质量门槛:ETL/metrics pipeline 也要做 SLO(指标可靠性本身就是 SLI),否则你看到的都是假象。

我的一点个人感受(接地气的结尾)

我见过太多团队把注意力放在“监控工具有多漂亮”,而忽略了“监控要服务于决策”。SLO 把监控从技术细节拉回到业务目标上:我们要的是用户能下单、能看视频、能搜索到商品——把这些体验做成可以量化的目标,再围绕它来设计告警和流程,整个组织的反应会更快、更有方向感。别把告警当作噪音,把它当成团队决策的传感器。

目录
相关文章
|
5月前
|
Prometheus Kubernetes 调度
Kubernetes 调度策略深度拆解:我如何帮团队省下 90% 的资源成本
Kubernetes 调度策略深度拆解:我如何帮团队省下 90% 的资源成本
308 8
|
5月前
|
人工智能 前端开发 算法
大厂CIO独家分享:AI如何重塑开发者未来十年
在 AI 时代,若你还在紧盯代码量、执着于全栈工程师的招聘,或者仅凭技术贡献率来评判价值,执着于业务提效的比例而忽略产研价值,你很可能已经被所谓的“常识”困住了脚步。
3454 90
大厂CIO独家分享:AI如何重塑开发者未来十年
|
Go
【go 语言】PProf 的使用——CPU和内存占用分析(二)
PProf 的使用——CPU和内存占用分析(二)
1853 0
【go 语言】PProf 的使用——CPU和内存占用分析(二)
|
开发工具 git
git基于tag创建分支
git基于tag创建分支
|
6月前
|
存储 人工智能 缓存
运维智能体(SRE Agent)技术分级能力要求
本标准规范了运维智能体在场景应用、协同能力、能力建设及底座构建方面的技术要求,适用于公共与私有环境下的服务与产品。依据AI技术发展,定义了从初始级到优秀级的三级能力框架,涵盖感知、控制、行动等核心能力,推动运维智能化升级。
运维智能体(SRE Agent)技术分级能力要求
|
3月前
|
存储 运维 Kubernetes
Kubernetes 多租户到底怎么隔离?命名空间、独立集群、虚拟集群,别再拍脑袋选了
Kubernetes 多租户到底怎么隔离?命名空间、独立集群、虚拟集群,别再拍脑袋选了
200 10
|
4月前
|
搜索推荐 数据库 索引
广告引擎的整体架构和工作过程
广告引擎核心是匹配用户与广告。通过用户标签、广告位信息及广告主定向条件,构建倒排索引,实现高效召回与排序,0.1秒内完成广告返回,并实时监测展现、点击与计费,确保精准投放与预算控制。
|
4月前
|
存储 人工智能 图形学
阿里云无影 GPU 云电脑(NVIDIA RTX 5880 显卡)收费价格表:月付与年付费用详解
阿里云无影 GPU 云电脑凭借搭载的 NVIDIA RTX 5880 专业显卡,成为高性能计算场景的热门选择 —— 无论是 3D 建模、工业设计这类图形密集型任务,还是 AI 推理、机器人仿真等计算需求,都能依靠其强劲的硬件配置高效完成。对有这类需求的用户来说,最关心的就是不同配置的具体收费标准,尤其是月付和年付的费用差异,以及如何根据自身场景选择性价比最高的方案。本文结合最新的价格信息和配置细节,用通俗的语言拆解各规格的收费情况,同时补充适用场景和计费方式说明,帮大家清晰掌握成本构成与选型逻辑。
|
8月前
|
人工智能 JSON 边缘计算
从零开始学MCP(1)| MCP 协议核心原理解析
MCP 协议统一 AI 工具调用标准,解决碎片化、高耦合与上下文丢失问题,采用 Client/Server 架构,支持上下文传递与 SSE 流式响应,提升工具调用效率与灵活性。
|
机器学习/深度学习 XML 人工智能
我是如何基于 DeepSeek-R1 构建出高效学习Agent的?
我是如何基于 DeepSeek-R1 构建出高效学习Agent的?

热门文章

最新文章