OpenTelemetry 概述

2025-11-11T14:11:02+08:00 | 3分钟阅读 | 更新于 2025-11-11T14:11:02+08:00

@

可观测性三大支柱

可观测性(Observability)是指通过系统的外部输出推断其内部状态的能力。现代分布式系统的可观测性通常围绕三大支柱展开:

指标(Metrics)

指标是对系统状态的聚合度量,通常是数值型时间序列数据。例如:

  • CPU 使用率、内存占用
  • 请求 QPS、错误率、P99 延迟
  • 队列深度、连接数

指标的特点是低维度、可聚合、适合告警和趋势分析。

链路(Traces)

链路追踪记录一次请求在分布式系统中的完整路径。每个请求被拆分为多个 Span,Span 之间通过 TraceID 关联,形成调用树。

链路数据的价值在于:

  • 定位性能瓶颈
  • 分析服务依赖
  • 理解请求在微服务间的流转

日志(Logs)

日志是离散的事件记录,包含时间戳、级别、消息和上下文。日志适合记录详细的业务事件和错误信息,是故障排查的重要依据。

支柱数据形态典型问题存储特点
Metrics时间序列数值系统是否健康?数据量小、保留时间长
Traces请求调用链请求慢在哪里?数据量大、采样存储
Logs离散事件具体发生了什么?数据量大、需索引

OpenTelemetry 简介

OpenTelemetry(简称 OTel)是 CNCF 孵化的开源项目,旨在为可观测性数据提供统一的采集、导出和传输标准。它由 OpenTracing 和 OpenCensus 合并而来,是目前云原生可观测性领域的事实标准。

OpenTelemetry 的核心理念:

  • 统一标准:一套 API、SDK 和协议覆盖 Metrics、Traces、Logs。
  • 供应商无关:采集端与后端存储解耦,可自由切换 Prometheus、Jaeger、Grafana、Datadog 等。
  • 自动仪表化:支持多种语言的自动埋点,降低接入成本。

OpenTelemetry 架构

OpenTelemetry 的整体架构可分为四层:

应用层(Instrumentation)
    |
    v
SDK 层(API / SDK)
    |
    v
采集层(Collector)
    |
    v
后端存储(Backend)

Instrumentation

Instrumentation 是指对应用程序进行埋点,生成可观测数据。方式包括:

  • 自动埋点:通过 Agent 或库自动注入,如 OpenTelemetry Java Agent。
  • 手动埋点:在代码中显式创建 Span、记录 Metric。

SDK

SDK 负责管理数据的生成、处理和导出。关键组件:

  • TracerProvider:管理 Tracer 实例。
  • MeterProvider:管理 Metric 采集。
  • Exporter:将数据发送到 Collector 或后端。
  • Processor:对 Trace 数据进行批处理、采样。

OpenTelemetry Collector

Collector 是一个独立进程,负责接收、处理和导出可观测数据。其核心组件:

组件作用
Receiver接收来自应用或其他 Collector 的数据
Processor对数据进行过滤、转换、批处理、采样
Exporter将数据导出到后端存储
Extension提供健康检查、性能分析等辅助能力

Collector 配置示例:

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318

processors:
  batch:

exporters:
  prometheusremotewrite:
    endpoint: http://prometheus:9090/api/v1/write
  otlp/jaeger:
    endpoint: jaeger:4317
    tls:
      insecure: true

service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [prometheusremotewrite]
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp/jaeger]

后端存储

常见后端组合:

  • Metrics:Prometheus、Thanos、VictoriaMetrics、Mimir
  • Traces:Jaeger、Tempo、Zipkin
  • Logs:Loki、ELK、ClickHouse

基于可观测数据的 AIOps 实践

可观测数据是 AIOps 的"燃料"。基于 Metrics、Traces、Logs 可以实现:

  1. 异常检测:利用时序算法检测指标突变、周期性异常。
  2. 根因定位:通过 Trace 分析调用链,定位延迟或错误来源。
  3. 日志聚类:对海量日志进行模式识别,发现未知错误。
  4. 容量预测:基于历史指标预测资源需求。
  5. 智能告警:降低告警噪音,实现告警收敛与关联。

总结

OpenTelemetry 为云原生应用提供了一套统一、开放、可扩展的可观测性方案。掌握其架构与三大支柱数据,是进行 AIOps 异常检测、根因分析和自动化运维的基础。下一篇笔记将深入 OpenTelemetry 的开发实战。

About Me

没什么想介绍的,一个很大众的码农…

喜欢代码,车,马,真的是 🐎

讨厌别人让我给自己的代码写注释 最厌烦别人的程序没有写注释

目标

学AI,加油!加油!