2. 可观测性基础:三大支柱(日志、指标、链路追踪)的概念与关系,可观测性与监控的区别
2.1 从监控到可观测性:思维模式的转变
在发布工程与微服务架构中,传统监控(Monitoring)与可观测性(Observability)常被混用,但二者存在本质区别。监控回答“已知的已知”——你预先定义了故障模式(如 CPU > 90%),系统告警;可观测性回答“未知的未知”——系统行为异常但无预设规则时,你仍能通过数据推断根因。
| 维度 | 监控(Monitoring) | 可观测性(Observability) |
|---|---|---|
| 核心问题 | 系统是否在运行? | 系统为什么这样运行? |
| 数据来源 | 预定义的指标与阈值 | 日志、指标、链路追踪的关联分析 |
| 故障处理 | 已知故障模式的告警 | 未知故障模式的探索与根因定位 |
| 依赖条件 | 需要提前编写规则 | 需要高基数、高维度的数据 |
| 典型工具 | Prometheus + Alertmanager | OpenTelemetry + Jaeger + Grafana |
关键认知: 可观测性不是监控的替代品,而是监控的进化。监控告诉你“出事了”,可观测性告诉你“为什么出事”。
2.2 可观测性三大支柱
业界公认的可观测性数据模型包含三大支柱(Three Pillars):日志(Logs)、指标(Metrics)、链路追踪(Traces)。三者各自独立又相互补充,共同构成系统可观测性的数据基础。
2.2.1 日志(Logs)
- 定义: 离散的、带时间戳的事件记录,描述系统在某个时刻发生了什么。
- 特点: 高信息密度,包含错误堆栈、业务上下文;但非结构化或半结构化,检索成本高。
- 典型场景: 错误排查、审计追踪、业务行为记录。
- OpenTelemetry 中的日志: 通过
LogRecordAPI 采集,支持与 Trace 关联(trace_id/span_id)。
2.2.2 指标(Metrics)
- 定义: 可聚合的数值型时间序列数据,描述系统在某个时间段的统计特征。
- 特点: 低存储成本,支持预聚合与告警;但丢失了单个请求的细节。
- 典型场景: 服务 QPS、延迟 P99、错误率、资源利用率。
- OpenTelemetry 中的指标: 支持 Counter、Histogram、Gauge、UpDownCounter 等 Instrument 类型。
2.2.3 链路追踪(Traces)
- 定义: 端到端的请求执行路径,由多个 Span 组成,描述请求在分布式系统中的流转过程。
- 特点: 保留请求级上下文,支持跨服务关联;但数据量大,需要采样策略。
- 典型场景: 分布式请求延迟分析、依赖关系发现、瓶颈定位。
- OpenTelemetry 中的链路追踪: 通过
Tracer创建 Span,支持父子关系与 Context Propagation。
实践建议: 在发布工程自助门户中,日志用于记录发布操作的每一步结果;指标用于监控发布速率与成功率;链路追踪用于追踪一次发布请求从用户点击到后端执行的全路径。
2.3 三大支柱的关系:关联而非孤立
三大支柱并非各自为政,而是通过关联机制形成统一的数据视图。OpenTelemetry 的核心价值之一就是建立这种关联。
2.4 三大支柱在发布工程中的协作场景
以一次“发布新版本”操作为例,展示三大支柱如何协同工作:
- 用户发起发布请求 → 链路追踪创建一个 Root Span,记录请求开始。
- 后端执行发布流水线 → 每个步骤(拉取镜像、更新配置、滚动重启)生成子 Span,记录耗时。
- 发布过程中产生日志 → 每个 Span 关联的日志记录具体错误信息(如“镜像拉取超时”)。
- 发布完成后更新指标 → 发布成功率计数器 +1,发布延迟 Histogram 记录本次耗时。
- 故障排查 → 通过指标发现发布失败率突增 → 通过链路追踪找到失败集中在“滚动重启”步骤 → 通过关联日志定位到“健康检查端口未就绪”。
常见误区: 不要只采集三大支柱中的一种或两种。缺少日志,你无法知道错误详情;缺少指标,你无法感知趋势;缺少链路追踪,你无法在分布式系统中定位瓶颈。三者缺一不可。
2.5 可观测性成熟度模型
团队在建设可观测性时,通常会经历以下阶段:
| 阶段 | 特征 | 典型表现 |
|---|---|---|
| L1:基础监控 | 只有指标,无日志关联 | 收到告警后需要手动登录服务器查日志 |
| L2:数据采集 | 三大支柱均已采集,但各自独立 | 日志、指标、链路追踪在不同系统中查看 |
| L3:关联分析 | 三大支柱通过 trace_id 关联 | 从指标下钻到链路,从链路跳转到日志 |
| L4:主动洞察 | 基于关联数据的自动化根因分析 | 系统自动推荐可能的故障根因 |
课程目标: 本课程将帮助你的发布工程自助门户达到 L3 甚至 L4 成熟度,实现三大支柱的深度关联与自动化分析。
2.6 本章小结
- 可观测性 ≠ 监控;可观测性解决“未知的未知”,监控解决“已知的已知”。
- 三大支柱(日志、指标、链路追踪)各自独立,但通过 OpenTelemetry 的 Context Propagation 实现关联。
- 在发布工程中,三大支柱协作覆盖“发布前-发布中-发布后”全生命周期。
- 可观测性成熟度从 L1 到 L4,本课程聚焦 L3 关联分析能力的构建。