OpenTelemetry、SLI 与 SLO

OpenTelemetry、SLI 与 SLO

这篇笔记还在编辑中,内容可能会继续补充、调整或重写。

从信号到目标

日志、指标和 Trace 只有与用户任务关联才产生治理价值。SLI 是被测量的服务指标,SLO 是一个时间窗口内希望达到的目标,错误预算则描述允许偏离目标的空间。

前端 SLI 可以是:

  • 任务创建成功率
  • 有效页面加载成功率
  • 满足 INP 或 LCP 目标的访问比例
  • 无崩溃会话比例
  • 从点击发布到用户看到成功结果的端到端耗时

不要把“前端接口返回 200”直接当成任务成功,用户可能仍看到解析错误或无法继续操作。

OpenTelemetry 的作用

OpenTelemetry 提供生成、传播和导出 Trace、Metric、Log 上下文的通用约定。浏览器可以创建页面与交互 Span,并通过标准 Trace Context 把请求连接到网关和后端服务。

自动埋点能快速建立基础,但容易产生高基数 URL、敏感属性和大量无价值 Span。业务关键事件仍需经过设计,并限制属性集合、采样和保留时间。

前后端关联

用户点击提交
  → browser interaction span
  → fetch request + trace context
  → gateway / BFF
  → downstream service
  → response
  → UI success or error state

浏览器跨源传播 Trace Header 前,需要正确配置 CORS,并评估是否向第三方泄露内部关联信息。

SLO 与告警

告警应针对持续消耗错误预算、影响足够多用户的问题,而不是每一条异常。按快慢两个窗口观察燃烧率,可以同时捕捉严重突发和缓慢恶化。

每条告警应包含影响、版本、主要维度、负责人、仪表盘和 Runbook。SLO 不是个人绩效指标,也不能通过降低采样或改变口径“修好”。

实践任务

  1. 为“创建任务”定义端到端成功 SLI 和四周 SLO。
  2. 将浏览器请求与后端 Trace 关联,并在 UI 最终状态结束 Span。
  3. 注入后端超时和前端解析错误,确认两者都影响 SLI。
  4. 检查属性中的令牌、用户输入和高基数数据。

验收标准

  • SLI 描述用户完成任务,而不是单个技术组件
  • Trace 可从浏览器关联到自有后端
  • 采样、属性和保留策略符合隐私与成本要求
  • 告警基于用户影响或错误预算消耗
  • SLO 口径和变更经过版本化评审

参考资料