Exporters

发送遥测数据到 OpenTelemetry Collector,以确保其正确导出。在生产环境中使用 Collector 是一种最佳实践。要可视化您的遥测数据,请将其导出到后端,例如 JaegerZipkinPrometheus特定厂商 的后端。

可用导出器

注册表包含一个Ruby exporter 列表

在导出器中,OpenTelemetry Protocol (OTLP) 导出器是按照 OpenTelemetry 数据模型设计的,可以无损地发出 OTel 数据。此外,许多处理遥测数据的工具都支持 OTLP(例如 PrometheusJaeger 和大多数 厂商),为您提供高度的灵活性。要了解更多关于 OTLP 的信息,请参阅 OTLP 规范

此页面介绍了主要的 OpenTelemetry Ruby exporter 及其设置方法。

OTLP 端点

要将跟踪数据发送到 OTLP 端点(例如Collector或 Jaeger),您需要使用 exporter 包,例如 opentelemetry-exporter-otlp

bundle add opentelemetry-exporter-otlp
gem install opentelemetry-exporter-otlp

接下来,配置 exporter 指向 OTLP 端点。例如,您可以更新入门指南中的 config/initializers/opentelemetry.rb 文件,并在代码中添加 require 'opentelemetry-exporter-otlp'

# config/initializers/opentelemetry.rb
require 'opentelemetry/sdk'
require 'opentelemetry/instrumentation/all'
require 'opentelemetry-exporter-otlp'
OpenTelemetry::SDK.configure do |c|
  c.service_name = 'dice-ruby'
  c.use_all() # enables all instrumentation!
end

如果您现在运行应用程序,它将使用 OTLP 导出跟踪。

rails server -p 8080

默认情况下,跟踪会发送到监听在 localhost:4318 上的 OTLP 端点。您可以通过相应地设置 OTEL_EXPORTER_OTLP_ENDPOINT 来更改端点。

env OTEL_EXPORTER_OTLP_ENDPOINT="https://:4318" rails server -p 8080

要快速试用 OTLP exporter 并查看接收端的可视化跟踪,您可以在 Docker 容器中运行 Jaeger。

docker run -d --name jaeger \
  -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
  -e COLLECTOR_OTLP_ENABLED=true \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 4317:4317 \
  -p 4318:4318 \
  -p 14250:14250 \
  -p 14268:14268 \
  -p 14269:14269 \
  -p 9411:9411 \
  jaegertracing/all-in-one:latest

您可以通过浏览器访问 localhost:16686 来通过 Jaeger 跟踪 UI 可视化跟踪。

Zipkin

要尽快设置 Zipkin,请在 Docker 容器中运行它。

docker run --rm -d -p 9411:9411 --name zipkin openzipkin/zipkin

将导出器包安装为应用程序的依赖项。

bundle add opentelemetry-exporter-zipkin
gem install opentelemetry-exporter-zipkin

更新您的 OpenTelemetry 配置以使用该导出器并将数据发送到您的 Zipkin 后端

# config/initializers/opentelemetry.rb
require 'opentelemetry/sdk'
require 'opentelemetry/instrumentation/all'

require 'opentelemetry-exporter-zipkin'
OpenTelemetry::SDK.configure do |c|
  c.service_name = 'dice-ruby'
  c.use_all() # enables all instrumentation!
end

如果您现在运行应用程序,请将环境变量 OTEL_TRACES_EXPORTER 设置为 Zipkin。

env OTEL_TRACES_EXPORTER=zipkin rails server

默认情况下,跟踪会发送到监听在 localhost:9411 端口上的 Zipkin 端点。您可以通过相应地设置 OTEL_EXPORTER_ZIPKIN_ENDPOINT 来更改端点。

env OTEL_EXPORTER_OTLP_ENDPOINT="https://:9411" rails server

最后修改于 2025 年 12 月 1 日:Clarify how to visualize traces on Jaeger (#8316) (5a3937c4)