什么是 OpenTelemetry?

OpenTelemetry 是一个开源可观测性框架,提供统一的 API、SDK 和工具集,用于从分布式系统中生成、收集和导出遥测数据(链路追踪、指标和日志),帮助开发者监控和排查应用程序问题。

快速了解

全称OpenTelemetry 开源可观测性框架
创建时间OpenTelemetry 于 2019 年由 OpenTracing 和 OpenCensus 项目合并而成
规范文档官方规范

工作原理

OpenTelemetry(通常缩写为 OTel)是由云原生计算基金会(CNCF)托管的厂商中立开源可观测性框架。它提供了标准化的方式来对应用程序和基础设施进行埋点,以收集遥测数据——链路追踪、指标和日志——不受后端可观测性平台的限制。在 OpenTelemetry 出现之前,开发者需要在 OpenTracing 和 OpenCensus 等竞争标准之间做选择,导致厂商锁定和碎片化的埋点方案。OpenTelemetry 将这些项目合并为一个统一的综合标准。该框架支持流行库和框架的自动埋点、通过一致 API 的手动埋点,以及接收、处理和导出数据到 Jaeger、Prometheus、Grafana 和商业 APM 工具等各种后端的 Collector 组件。

主要特点

  • 厂商中立的遥测数据收集和导出标准
  • 支持可观测性三大支柱:链路追踪、指标和日志
  • 提供自动埋点和手动埋点两种方式
  • 提供 Go、Java、Python、JavaScript、.NET 等语言的 SDK
  • Collector 组件作为代理接收、处理和路由数据
  • 上下文传播实现跨服务边界的分布式追踪

常见用途

  1. 分布式追踪:跟踪请求在微服务间的路径,识别延迟瓶颈
  2. 应用性能监控:收集响应时间、错误率和吞吐量等指标
  3. 日志关联:将日志与特定的链路和 Span 关联,实现上下文化调试
  4. 基础设施监控:从容器、主机和云服务收集系统级指标
  5. SLO 追踪:使用标准化遥测数据定义和监控服务级别目标
  6. 迁移灵活性:在不重新埋点的情况下切换可观测性后端

示例

loading...
Loading code...

常见问题

OpenTelemetry 和 OpenTracing 有什么区别?

OpenTelemetry 是 OpenTracing(和 OpenCensus)的继任者。OpenTracing 只提供追踪 API 规范,而 OpenTelemetry 提供覆盖链路追踪、指标和日志的完整可观测性框架,包含完整的 SDK、自动埋点和 Collector 组件。OpenTracing 已归档,所有开发工作已转移到 OpenTelemetry。

OpenTelemetry 中可观测性的三大支柱是什么?

三大支柱是链路追踪(记录请求在分布式系统中的路径)、指标(随时间变化的系统行为数值度量,如延迟、错误率和吞吐量)和日志(带时间戳的离散事件文本记录)。OpenTelemetry 为三者提供统一的 API,并通过上下文传播将它们关联起来。

使用 OpenTelemetry 需要修改代码吗?

不一定。OpenTelemetry 为许多流行的框架和库(Express、Spring、Django 等)提供自动埋点,只需极少的代码改动——通常只需添加一个配置文件。对于自定义业务逻辑的埋点,则需要使用手动 API 在代码的特定位置创建 Span 和记录指标。

什么是 OpenTelemetry Collector?

Collector 是一个厂商无关的代理,用于接收遥测数据、处理数据(过滤、批处理、丰富)并将其导出到一个或多个后端。它将埋点与后端选择解耦,允许在不修改应用代码的情况下切换可观测性平台。可以作为 Sidecar、Daemon 或独立服务运行。

OpenTelemetry 可以用于生产环境吗?

可以。OpenTelemetry 的链路追踪和指标在大多数语言 SDK 中已达到稳定状态,可用于生产环境。日志信号较晚达到稳定。主要云厂商(AWS、GCP、Azure)和可观测性供应商(Datadog、New Relic、Grafana)都完全支持 OpenTelemetry,使其成为遥测收集的行业标准。

相关工具

相关术语

相关文章