跳到主要内容

可观测性三大支柱

1. 三支柱

支柱回答的问题数据形态
Metrics(指标)"发生了什么"——QPS 跌了 50%时间序列数字
Logs(日志)"细节是什么"——具体哪个用户结构化文本事件
Traces(链路)"慢/错在哪"——哪个微服务父子 span 树

三者协作:

  • 指标告警 → 日志 / 链路定位 → 修复

2. Metrics

详见 Prometheus / Grafana 监控体系

核心方法论:

2.1 RED(针对请求的服务)

  • Rate:请求量
  • Error:错误率
  • Duration:延迟(P50/P95/P99)

2.2 USE(针对资源)

  • Utilization:使用率
  • Saturation:饱和度(队列长度)
  • Error:错误数

2.3 SLO / SLI / SLA

  • SLI(指标):99.9% 请求 < 1s
  • SLO(目标):本月 SLI 达 99.5%
  • SLA(合同):达不到给客户赔偿

错误预算(Error Budget)= (1 - SLO) 的服务时间。每月 99.9% = 43 分钟可挂。用完了停止 risky 变更。

3. Logs

详见 日志体系(ELK/Loki) 和模块 01 系统日志。

核心要求:

  • 结构化:JSON,字段化,可检索
  • 关联:每条日志带 traceId / requestId
  • 分级:error / warn / info / debug
  • 脱敏:不写密码、token、信用卡

4. Traces

详见 链路追踪与 OpenTelemetry

核心:跨服务传递 traceId,构建 span 树。

5. 关联:黄金三角

工业级实践:用 traceId 串联三者。

用户报障 → 找时间 → 看 Grafana 错误率指标
↓ 异常
查 Loki 日志
↓ 看到 ERROR + traceId
Tempo 查 trace
↓ 看到具体哪个微服务
定位代码

Grafana 现在原生支持三者无缝跳转。

6. 实施路径(前端项目)

第 1 步:日志结构化

// pino 一行搞定
const logger = require('pino')()
logger.info({ userId, requestId }, '用户登录')

部署到 K8s → stdout → promtail → Loki。

第 2 步:基础指标

应用暴露 /metrics → Prometheus 抓取 → Grafana 看板。

最小集:

  • HTTP RPS / 错误率 / P95 延迟
  • Pod CPU / 内存
  • Node CPU / 内存 / 磁盘

第 3 步:错误监控

接 Sentry。

第 4 步:链路追踪

OTel SDK + Collector + Tempo。

第 5 步:告警

Prometheus Alertmanager + 飞书 / Slack。

第 6 步:SLO

定义关键 SLO,按错误预算决策变更节奏。

7. 工具栈对比

7.1 全开源(自建)

Loki + Promtail + Grafana (logs)
Prometheus + Grafana + Alertmanager (metrics)
Tempo + OTel Collector (traces)
+ Sentry self-hosted (errors)

部署 Helm 一键,运维成本中等。

7.2 Grafana Stack

  • Loki(logs)
  • Prometheus / Mimir(metrics)
  • Tempo(traces)
  • Pyroscope(profiling)
  • Alloy(统一 agent)

一站式 Grafana 全家桶。

7.3 商业 SaaS

厂商特点
Datadog最全,最贵
New Relic中位
Honeycomb高基数追踪强
阿里 ARMS国内 SaaS
字节火山 APM国内云

省心但贵。中小团队 SaaS 快速上手 → 量大了自建。

8. 前端可观测性特殊点

后端三支柱 + 前端独有:

  • RUM(Real User Monitoring):真实用户性能、错误(Sentry / 自建)
  • Web Vitals:LCP / INP / CLS
  • Session Replay:用户操作录制(Sentry / FullStory)
  • API 调用追踪:fetch / XHR 自动 trace
  • 路由切换性能

9. 数据保留策略

数据推荐保留成本
高分辨率指标15 天
聚合指标1-2 年
INFO 日志7-14 天
ERROR 日志30-90 天
Trace(采样)7 天
审计日志1-7 年(合规)

10. 常见反模式

  • 只有指标:错误率涨了 5%,但不知道是哪个用户哪个接口
  • 只有日志:grep 一上午
  • 只有错误监控:性能问题看不见
  • 三者数据不互通:每个工具单独看,效率差
  • 告警不可执行:发了警报但没说怎么处理
  • SLO 拍脑袋:和业务无关
  • 采样率拍脑袋:100% 烧钱,1% 漏

11. 延伸阅读