1. Golden Signals 概述:定义四大黄金信号

在可观测性工程中,Golden Signals(黄金信号)是由 Google SRE 团队提炼出的四个核心指标类别,用于衡量用户侧与系统侧的真实健康状态。它们不是简单的监控项,而是从海量日志、指标、链路数据中抽象出的最小完备集——只要这四个信号完整,就能快速定位绝大多数生产故障。

1.1 四大黄金信号定义

信号 英文 核心含义 日志/指标典型来源
延迟 Latency 请求从发出到收到响应所消耗的时间 访问日志中的响应时间字段、APM 链路耗时
流量 Traffic 系统承载的请求量或数据吞吐量 HTTP 请求计数、消息队列积压量、网络带宽
错误 Errors 显式错误(5xx)与隐式错误(慢响应、错误业务码) 日志中的 status >= 500、业务异常堆栈、超时记录
饱和度 Saturation 系统资源被消耗的程度,越接近上限越危险 CPU/内存/磁盘使用率、连接池占用、goroutine 数
关键认知: 四个信号必须同时观察。只看延迟可能漏掉流量突增导致的排队;只看错误可能忽略即将饱和的资源。Golden Signals 的威力在于交叉验证。

1.2 在可观测性中的核心地位

可观测性三大支柱——日志(Logs)、指标(Metrics)、链路(Traces)——各自产生海量数据。Golden Signals 的作用是降维:将分散的观测数据映射到四个业务/系统维度,让 SRE 团队在告警风暴中快速找到根因。

  • 日志 → 错误与延迟:通过结构化日志提取 status、duration、error_code,直接计算错误率与 p99 延迟。
  • 指标 → 流量与饱和度:通过计数器(Counter)和仪表盘(Gauge)聚合 QPS、CPU 使用率、磁盘 IO 等待。
  • 链路 → 延迟分解:通过 Trace 的 Span 耗时,定位延迟是发生在网关、业务逻辑还是数据库。
实践建议: 在日志采集阶段就为每条日志打上 golden_signal_type 标签(latency/traffic/error/saturation),后续压缩与存储策略可以按信号类别差异化处理——例如错误日志保留更久,饱和度指标采样率更高。

1.3 Golden Signals 关系图

下图展示了四大黄金信号如何从原始日志/指标中提取,并汇聚到可观测性平台进行故障定位:

Golden Signals 数据流与故障定位关系图 Golden Signals 数据流与故障定位 日志 (Logs) 指标 (Metrics) 链路 (Traces) 信号提取与映射 status → 错误 duration → 延迟 count → 流量 usage → 饱和度 标签化:golden_signal_type 延迟 (Latency) 流量 (Traffic) 错误 (Errors) 饱和度 (Saturation) 交叉验证 → 快速故障定位 延迟高?流量大?错误多?资源满?

1.4 为什么日志工程必须关注 Golden Signals

本课程的核心主题是日志指标数据压缩与存储优化。理解 Golden Signals 是优化策略的前提:

  1. 差异化保留策略:错误信号日志需要全量保留 30 天以上;饱和度信号可以降采样后只保留趋势;延迟信号需要保留 p50/p95/p99 分位值而非全量。
  2. 压缩优先级:流量信号通常数据量最大(每条请求一条日志),优先采用列式压缩(如 Parquet + ZSTD);错误信号数据量小但价值高,采用低压缩比高保真存储。
  3. 存储成本控制:通过 Golden Signals 分类,可以将热数据(最近 7 天)与冷数据(7 天以上)的存储引擎分离——热数据用 SSD + 高 IOPS,冷数据用 HDD + 高压缩比。
常见误区: 不要试图对所有日志使用相同的压缩算法和保留周期。错误日志的压缩比可能只有 2:1,而流量日志可以达到 10:1。统一策略会导致存储浪费或数据丢失。Golden Signals 分类是精细化存储设计的第一步。

1.5 四大信号在日志中的典型字段映射

信号 日志字段示例 聚合方式 典型告警阈值
延迟 response_time_ms, upstream_latency p50 / p95 / p99 分位 p99 > 500ms 持续 5 分钟
流量 request_count, bytes_sent QPS / RPS / 吞吐量 QPS 突增 > 200% 基线
错误 status_code, error_type, exception_class 错误率 = 错误数 / 总请求数 错误率 > 1% 持续 3 分钟
饱和度 cpu_usage, mem_usage, disk_io_wait 均值 / 最大值 / 趋势斜率 CPU > 85% 或磁盘 IO 等待 > 50ms