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 不是个人绩效指标,也不能通过降低采样或改变口径“修好”。
实践任务
- 为“创建任务”定义端到端成功 SLI 和四周 SLO。
- 将浏览器请求与后端 Trace 关联,并在 UI 最终状态结束 Span。
- 注入后端超时和前端解析错误,确认两者都影响 SLI。
- 检查属性中的令牌、用户输入和高基数数据。
验收标准
- SLI 描述用户完成任务,而不是单个技术组件
- Trace 可从浏览器关联到自有后端
- 采样、属性和保留策略符合隐私与成本要求
- 告警基于用户影响或错误预算消耗
- SLO 口径和变更经过版本化评审