1. 课程导论:云原生可观测性三支柱概述
在云原生架构中,微服务、容器化与动态编排带来了前所未有的弹性与复杂度。传统的“登录机器查日志”模式已无法应对分布式系统的故障定位与性能分析需求。可观测性(Observability) 成为现代运维的核心能力,其理论基石由三大支柱构成:日志(Logs)、指标(Metrics) 与 链路(Traces)。
1.1 三支柱定义与核心价值
| 支柱 | 定义 | 核心价值 | 典型数据示例 |
|---|---|---|---|
| 日志(Logs) | 离散的、带时间戳的事件记录,描述系统在特定时刻发生了什么。 | 提供故障根因分析的“最后一公里”细节,支持关键词检索与模式匹配。 | 2025-03-21 10:00:00 ERROR [order-svc] DB connection timeout |
| 指标(Metrics) | 可聚合的、数值型的时序数据,反映系统在时间维度上的状态与趋势。 | 快速发现异常、设置告警阈值、进行容量规划与长期趋势分析。 | http_requests_total{status="500"} 120 |
| 链路(Traces) | 端到端的请求执行路径,记录请求在分布式系统中的完整流转过程。 | 定位跨服务性能瓶颈、识别依赖关系、分析请求延迟分布。 | span: /checkout → 320ms → span: /payment → 180ms |
关键认知: 三支柱并非孤立存在。一个高延迟的指标告警(Metrics)可以驱动你查看对应的链路(Traces),再通过链路中的 Span ID 关联到具体的错误日志(Logs),形成“告警 → 定位 → 根因”的闭环。
1.2 三支柱协同关系图
下图展示了在云原生环境中,日志、指标、链路如何围绕一个用户请求协同工作,共同构建完整的可观测性视图。
1.3 OpenTelemetry 与 Prometheus 的角色定位
在云原生生态中,OpenTelemetry(OTel) 与 Prometheus 分别扮演着“数据采集与标准化”和“指标存储与告警”的核心角色。两者并非竞争关系,而是互补协同。
1.3.1 OpenTelemetry:可观测性数据的事实标准
- 定位: 一个厂商中立的、开源的可观测性框架,用于生成、采集、导出日志、指标和链路数据。
- 核心能力:
- 统一 API 与 SDK: 提供跨语言的 instrumentation 库,开发者只需接入一次,即可同时输出三支柱数据。
- 协议与格式: 定义 OTLP(OpenTelemetry Protocol),支持 gRPC/HTTP 传输,是云原生计算基金会(CNCF)的孵化项目。
- Collector: 一个独立的代理或网关,负责接收、处理、转发遥测数据,支持过滤、采样、增强等中间处理逻辑。
- 在生态中的角色: 作为“数据源”与“标准化层”,将异构系统的遥测数据转化为统一格式,向下游的存储与分析系统(如 Prometheus、Jaeger、Elasticsearch)投递。
1.3.2 Prometheus:云原生指标监控的事实标准
- 定位: 一个开源的系统监控和告警工具包,专注于指标(Metrics) 的采集、存储、查询与告警。
- 核心能力:
- Pull 模型: 主动从目标端点(/metrics)拉取指标数据,天然适合 Kubernetes 动态环境。
- PromQL: 强大的查询语言,支持多维数据聚合、计算与预测。
- Alertmanager: 处理告警路由、去重、静默与通知。
- 在生态中的角色: 作为“指标存储与告警引擎”,接收来自 OpenTelemetry Collector 或其他 Exporter 的指标数据,提供长期存储、可视化(Grafana)与告警能力。
1.4 OpenTelemetry 与 Prometheus 协同架构图
下图展示了在 Kubernetes 集群中,OpenTelemetry 与 Prometheus 如何协同工作,覆盖从数据采集到告警通知的完整链路。
协同要点:
- 数据流: 应用通过 OTel SDK 产生 Logs、Metrics、Traces → OTel Collector 统一接收、处理 → 将 Metrics 导出到 Prometheus,Logs 导出到 Elasticsearch/Loki,Traces 导出到 Jaeger/Tempo。
- 告警闭环: Prometheus 对存储的指标进行规则评估,触发告警后发送给 Alertmanager,最终通过多渠道通知运维人员。
- 优势: OTel 解决了数据标准化与多后端适配问题,Prometheus 则专注于指标领域的极致性能与生态成熟度。两者结合,避免了厂商锁定,同时保留了 Prometheus 在指标监控领域的统治地位。