Skip to content

可观测性概述 ​

最后更新: February 20, 2026

简介 ​

在现代分布式系统中,尤其是在基于 Kubernetes 的微服务架构中,通过外部输出观察和理解系统内部状态的能力至关重要。这称为可观测性(Observability)。

可观测性与监控 ​

可观测性和监控常被混用,但二者存在根本区别:

方面监控可观测性
方法基于预定义指标和阈值通过系统输出推断内部状态
问题类型“出了什么问题?”(What)“为什么会出问题?”(Why)
数据范围检测已知问题探索未知问题
灵活性预定义仪表板动态查询和探索
复杂性适用于简单系统对复杂分布式系统至关重要

可观测性的三大支柱 ​

可观测性由三种核心数据类型构成:

1. 日志 ​

日志是系统中发生的各个事件的记录。

特征:

  • 离散且不可变的事件记录
  • 包含时间戳和上下文信息
  • 结构化(JSON)或非结构化格式
  • 对调试和审计至关重要

使用场景:

  • 错误和异常追踪
  • 安全审计
  • 合规性
  • 详细调试

工具: Loki、Elasticsearch、CloudWatch Logs、Fluent Bit

2. 指标 ​

指标是随时间变化的数值测量值。

特征:

  • 以时间序列数据形式存储
  • 支持聚合和数学运算
  • 存储效率高
  • 适用于趋势分析

主要指标类型:

  • Counter:累计递增值(例如,请求数)
  • Gauge:当前状态值(例如,CPU 使用率)
  • Histogram:分布测量值(例如,响应时间)
  • Summary:分位数计算

工具: Prometheus、VictoriaMetrics、CloudWatch Metrics、Datadog

3. 链路追踪 ​

链路追踪可跟踪请求在分布式系统中的完整路径。

特征:

  • 可视化服务之间的请求流
  • 测量每个步骤的延迟
  • 识别瓶颈
  • 依赖关系分析

组件:

  • Trace:单个请求的完整旅程
  • Span:单个工作单元
  • SpanContext:在服务之间传播的上下文

工具: Tempo、Jaeger、X-Ray、Zipkin、Datadog APM

三大支柱之间的关联 ​

三大支柱并非相互独立,而是彼此关联,可提供强大的分析能力:

Trace 到日志的关联 ​

在日志中包含 TraceID,以跟踪与特定请求相关的所有日志:

json
{
  "timestamp": "2025-02-15T10:30:00Z",
  "level": "ERROR",
  "message": "Payment processing failed",
  "traceId": "abc123def456",
  "spanId": "789xyz",
  "service": "payment-service"
}

指标到 Trace 的关联(Exemplar) ​

将 TraceID 关联到指标,以便在出现异常时追踪请求:

yaml
# Prometheus Exemplar
http_request_duration_seconds_bucket{le="0.5"} 1000 # {traceID="abc123"}

OpenTelemetry 和标准化 ​

OpenTelemetry(OTel)是可观测性数据采集的行业标准:

OpenTelemetry 的优势:

  • 与供应商无关的标准
  • 支持多种语言的 SDK
  • 自动插桩能力
  • 支持多个后端
  • 活跃的社区

EKS 环境的可观测性策略 ​

在 Amazon EKS 中实施有效可观测性的策略:

1. 基于层的可观测性 ​

2. 推荐工具栈 ​

功能开源AWS 原生商业
指标Prometheus, VictoriaMetricsCloudWatch, AMPDatadog, New Relic
日志Loki, ElasticsearchCloudWatch LogsSplunk, Datadog
链路追踪Tempo, JaegerX-RayDatadog APM, Dynatrace
可视化GrafanaCloudWatch DashboardsDatadog, Dynatrace

3. 成本优化策略 ​

  • 采样:通过对 Trace 数据采样降低成本
  • 保留策略:优化数据保留期限
  • 分层存储:将较旧的数据移至更廉价的存储
  • 聚合:存储聚合数据而非详细数据

可观测性成熟度模型 ​

级别特征示例工具
级别 1基础日志/指标采集kubectl logs, CloudWatch
级别 2集中式可观测性Loki, Prometheus, Grafana
级别 3三大支柱关联Tempo, Exemplars, TraceID
级别 4AIOps、自动异常检测Datadog Watchdog, Dynatrace Davis

章节指南 ​

本可观测性章节的组织如下:

日志 ​

日志采集、存储和分析的工具与策略:

  • Loki:轻量级日志聚合系统
  • Fluent Bit:高性能日志采集器
  • CloudWatch Logs:AWS 原生日志记录

指标 ​

时间序列指标采集和分析:

  • Prometheus:行业标准指标系统
  • VictoriaMetrics:高性能 Prometheus 替代方案
  • CloudWatch Metrics:AWS 原生指标

链路追踪 ​

分布式链路追踪和请求流分析:

  • Tempo:Grafana 的分布式链路追踪后端
  • X-Ray:AWS 原生分布式链路追踪
  • OpenTelemetry:标准化插桩
  • Dynatrace:AI 驱动的 APM

Grafana(仪表板) ​

统一可视化和仪表板:

  • 数据源集成
  • 仪表板设计模式
  • 告警配置

开始使用 ​

要开始实施可观测性,建议按以下顺序进行:

  1. 设置指标采集:部署 Prometheus 或 VictoriaMetrics
  2. 设置日志采集:部署 Loki 和 Fluent Bit
  3. 设置链路追踪:部署 Tempo 或 X-Ray
  4. 可视化:在 Grafana 中连接所有数据源
  5. 关联:配置基于 TraceID 的链接

参考资料 ​

向文档提问

按 Enter 发送,按 Shift+Enter 换行。