OpenTelemetry
opentelemetry、标准化采集。
35 分钟
OpenTelemetry 统一采集
Metrics、Logs、Traces 若各用一套 SDK 与 Agent,升级与关联成本极高。OpenTelemetry(OTel) 提供 vendor-neutral 的 API、SDK 与 Collector,一次插桩可导出到 Jaeger、Prometheus、Datadog 等后端。本课讲 Collector 架构与 Spring Boot 接入;三支柱理论见 obs-telemetry,指标落地见 prometheus-essentials,DevOps 节点见 /roadmaps/devops。
学习目标
- 理解 SDK(应用内) 与 Collector(网关聚合) 的分工
- 配置 OTLP 导出:traces → Jaeger,metrics → Prometheus
- 知道 W3C
traceparent与日志traceId对齐方式
架构概览
Spring Boot (OTel Java Agent / SDK)
│ OTLP gRPC :4317
▼
OTel Collector
├─ exporters → jaeger
├─ exporters → prometheusremotewrite
└─ processors → batch, memory_limiter
Collector 典型 Receivers → Processors → Exporters 流水线:接收 OTLP,批处理降采样,再 fan-out 到多个后端。
# otel-collector-config.yaml(概念示例)
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
processors:
batch:
timeout: 5s
memory_limiter:
limit_mib: 512
exporters:
otlp/jaeger:
endpoint: jaeger:4317
tls:
insecure: true
prometheusremotewrite:
endpoint: http://prometheus:9090/api/v1/write
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [otlp/jaeger]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [prometheusremotewrite]
Spring Boot 接入要点
- 自动插桩:
-javaagent:opentelemetry-javaagent.jar,环境变量OTEL_SERVICE_NAME=coderoadmap-backend - 与 Micrometer 共存:指标仍可走
/actuator/prometheus(见 prom-spring),trace 走 OTLP - 日志关联:Logback MDC 注入
trace_id、span_id,与 obs-logs 一致
K8s 部署 Collector 为 DaemonSet 或 Sidecar,见后续 dob-practice。