OpenTelemetry(OTel)介绍(开源可观测性框架,统一采集和导出指标、日志、链路追踪)OTLP协议、自动埋点、采集标准、三层架构:APISDK、Collector、Backend
OTLP协议OTLPOpenTelemetry Protocol 是 OpenTelemetry 协议的缩写是 OpenTelemetry 项目定义的原生数据传输协议。文章目录OpenTelemetry 入门与实践指南一、什么是 OpenTelemetry二、为什么需要 OpenTelemetry三、核心架构1. API SDK2. Collector核心组件3. Backend后端系统四、三大核心数据模型1. Traces分布式追踪2. Metrics指标3. Logs日志五、数据流核心流程六、实际接入示例以 Go 为例1. 安装依赖2. 初始化 Tracer3. 创建 Span4. 添加属性七、部署模式1. Agent 模式推荐2. Gateway 模式八、与 Prometheus / Jaeger 的关系九、最佳实践1. 优先使用自动埋点Auto Instrumentation2. 控制采样率3. 标准化标签Attributes4. 使用 Collector 做数据治理十、常见问题Q1性能影响大吗Q2可以只用其中一部分吗Q3是否适合中小团队十一、总结OpenTelemetry 入门与实践指南在云原生与微服务架构中系统复杂度迅速提升单靠日志已经难以定位问题。如何统一地采集、分析、关联不同服务的运行数据成为可观测性Observability的核心问题。这正是 OpenTelemetry 出现的背景。本文将带你系统了解 OpenTelemetry 的核心概念、架构以及实践方式。一、什么是 OpenTelemetryOpenTelemetry简称 OTel是一个开源的可观测性框架用于统一采集和导出以下三类数据Metrics指标如 QPS、延迟、错误率Logs日志系统运行日志Traces链路追踪请求在分布式系统中的调用路径它由 Cloud Native Computing FoundationCNCF孵化是目前事实上的可观测性标准之一。 一句话总结OpenTelemetry 统一的数据采集标准 可插拔的数据导出机制二、为什么需要 OpenTelemetry在没有统一标准之前不同工具各自为政MetricsPrometheusTracingJaeger / ZipkinLoggingELK问题在于接入成本高多个 SDK数据割裂难以关联维护复杂多套体系OpenTelemetry 的目标是一次埋点多处复用Write once, export anywhere三、核心架构OpenTelemetry 的架构可以分为三层1. API SDKAPI定义标准接口如 span、counterSDK具体实现采样、处理、导出 你在代码中使用的就是 SDK2. Collector核心组件OpenTelemetry Collector是一个独立服务负责接收数据OTLP、Jaeger、Zipkin 等处理数据过滤、采样、转换导出数据Prometheus、Kafka、Elastic 等 优点解耦应用与后端统一数据管道支持多种协议3. Backend后端系统常见后端包括MetricsPrometheusTracesJaegerLogsElasticSearch / Loki四、三大核心数据模型1. Traces分布式追踪Trace 是一次完整请求链路由多个 Span 组成用户请求 → API Gateway → 服务A → 服务B → 数据库关键概念Trace一次完整调用Span一个操作单元Context跨服务传递信息 用于解决请求慢在哪里2. Metrics指标常见类型Counter计数器Gauge瞬时值Histogram分布示例requestCounter.Add(ctx,1) 用于解决系统整体健康状态3. Logs日志虽然 OTel 支持日志但目前很多公司仍使用独立日志系统。趋势是Logs Metrics Traces 三者融合Correlation五、数据流核心流程典型流程如下应用 → SDK → Collector → Backend详细过程应用埋点生成 trace / metricSDK 收集数据发送到 CollectorOTLP 协议Collector 处理并转发后端系统存储与展示六、实际接入示例以 Go 为例1. 安装依赖go get go.opentelemetry.io/otel2. 初始化 Tracertracer:otel.Tracer(example-service)3. 创建 Spanctx,span:tracer.Start(ctx,my-operation)deferspan.End()4. 添加属性span.SetAttributes(attribute.String(user.id,123))七、部署模式1. Agent 模式推荐应用 → 本地 Collector → 中央 Collector → Backend优点降低网络开销提高可靠性2. Gateway 模式应用 → 中央 Collector → Backend适合小规模系统八、与 Prometheus / Jaeger 的关系组件是否被替代Prometheus❌ 不替代负责存储 metricsJaeger❌ 不替代负责 tracing 可视化OpenTelemetry✅ 统一采集 关系总结OpenTelemetry 是“采集标准”不是“存储系统”九、最佳实践1. 优先使用自动埋点Auto Instrumentation减少侵入HTTPgRPC数据库2. 控制采样率避免数据爆炸sampling:probability:0.13. 标准化标签Attributes统一字段命名service.namehttp.methoddb.system4. 使用 Collector 做数据治理例如过滤敏感数据聚合 metrics路由不同后端十、常见问题Q1性能影响大吗一般 5%合理采样Collector 可缓冲和批处理Q2可以只用其中一部分吗可以例如只用 tracing或只用 metricsQ3是否适合中小团队是的尤其是微服务架构云原生环境K8s十一、总结OpenTelemetry 的核心价值在于✅ 统一标准避免工具割裂✅ 解耦采集与存储✅ 支持多语言、多后端✅ 成为可观测性基础设施如果你正在构建微服务系统Kubernetes 平台高可用架构那么 OpenTelemetry 几乎是必选项。