エクスポーター
OpenTelemetryコレクターにテレメトリーを送信し、正しくエクスポートされることを確認してください。 本番環境でコレクターを使用することはベストプラクティスです。 テレメトリーを可視化するために、Jaeger、Zipkin、 Prometheus、またはベンダー固有のようなバックエンドにエクスポートしてください。
使用可能なエクスポーター
レジストリには、Ruby 用のエクスポーターのリストが含まれています。
エクスポーターの中でも、OpenTelemetry Protocol (OTLP)エクスポーターは、OpenTelemetryのデータモデルを考慮して設計されており、OTelデータを情報の損失なく出力します。 さらに、多くのテレメトリーデータを扱うツールがOTLPに対応しており(たとえば、Prometheus、Jaegerやほとんどのベンダー)、必要なときに高い柔軟性を提供します。 OTLPについて詳細に学習したい場合は、OTLP仕様を参照してください。
このページでは、主要なOpenTelemetry Ruby エクスポーターとその設定方法について説明します。
OTLPエンドポイント
OTLPエンドポイント(コレクターやJaegerなど)にトレースデータを送信するには、opentelemetry-exporter-otlp
のようなエクスポーターパッケージを使用します。
bundle add opentelemetry-exporter-otlp
gem install opentelemetry-exporter-otlp
次に、OTLPエンドポイントを指定するようにエクスポーターを設定します。
たとえば、Getting Startedの 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() # すべての計装を有効化します!
end
アプリケーションを実行すると、OTLPを使用してトレースがエクスポートされます。
rails server -p 8080
デフォルトでは、トレースはlocalhost:4318でリッスンしているOTLPエンドポイントに送信されます。
OTEL_EXPORTER_OTLP_ENDPOINT
を適切に設定することで、エンドポイントを変更できます。
env OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318" rails server -p 8080
すぐにOTLPエクスポーターを試して、受信側でトレースが視覚化されていることを確認するには、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
Zipkin
可能な限り早くZipkinをセットアップするには、Dockerコンテナで実行します。
docker run --rm -d -p 9411:9411 --name zipkin openzipkin/zipkin
アプリケーションの依存関係としてエクスポーターパッケージをインストールします。
bundle add opentelemetry-exporter-zipkin
gem install opentelemetry-exporter-zipkin
エクスポーターを使用してZipkinバックエンドにデータを送信するようにOpenTelemetry構成を更新します。
# 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() # すべての計装を有効化します!
end
アプリケーションを実行する場合は、環境変数 OTEL_TRACES_EXPORTER
をZipkinに設定します。
env OTEL_TRACES_EXPORTER=zipkin rails server
デフォルトでは、トレースはlocalhost:9411でリッスンしているZipkinエンドポイントに送信されます。
OTEL_EXPORTER_ZIPKIN_ENDPOINT
を適切に設定することで、エンドポイントを変更できます。
env OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:9411" rails server
フィードバック
このページは役に立ちましたか?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!