入門
ローカル環境でJaegerを起動して実行する
分散トレーシングを初めて使用する場合は、はじめにページをご確認ください。
計測
アプリケーションがJaegerにトレーシングデータを送信できるようにするには、事前に計測を行う必要があります。OpenTelemetry の計測機能とSDKを使用することをお勧めします。
従来、JaegerプロジェクトはOpenTracing APIを実装する独自のSDK(別名トレーサー、クライアントライブラリ)をサポートしていました。2022年現在、Jaeger SDKはサポートされなくなり、すべてのユーザーはOpenTelemetryに移行することをお勧めします。
オールインワン
all-in-oneは、ローカルでの迅速なテスト用に設計された実行可能ファイルです。Jaeger UI、jaeger-collector、jaeger-query、およびjaeger-agentが含まれており、メモリ内ストレージコンポーネントを使用します。
オールインワンを起動する最も簡単な方法は、DockerHubに公開されているプリビルドイメージを使用することです(1つのコマンドライン)。
docker run --rm --name jaeger \
-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
-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:1.62.0
または、バイナリ配布アーカイブからjaeger-all-in-one(.exe)
実行可能ファイルを実行します。
jaeger-all-in-one --collector.zipkin.host-port=:9411
その後、http://localhost:16686
に移動してJaeger UIにアクセスできます。
コンテナは次のポートを公開します
ポート | プロトコル | コンポーネント | 機能 |
---|---|---|---|
6831 | UDP | agent | Thrift-compactプロトコル経由でjaeger.thrift を受け入れます(ほとんどのSDKで使用)。 |
6832 | UDP | agent | Thrift-binaryプロトコル経由でjaeger.thrift を受け入れます(Node.js SDKで使用)。 |
5775 | UDP | agent | (非推奨)compact Thriftプロトコル経由でzipkin.thrift を受け入れます(レガシークライアントでのみ使用)。 |
5778 | HTTP | agent | 構成(サンプリングなど)を提供します。 |
16686 | HTTP | query | フロントエンドを提供します。 |
4317 | HTTP | collector | gRPC経由でOpenTelemetryプロトコル(OTLP)を受け入れます。 |
4318 | HTTP | collector | HTTP経由でOpenTelemetryプロトコル(OTLP)を受け入れます。 |
14268 | HTTP | collector | クライアントから直接jaeger.thrift を受け入れます。 |
14250 | HTTP | collector | model.proto を受け入れます。 |
9411 | HTTP | collector | Zipkin互換のエンドポイント(オプション) |
サービスパフォーマンスモニタリング(SPM)を使用する場合
サービスパフォーマンスモニタリング(SPM)を参照してください。
Kubernetes上
Kubernetes Operatorを参照してください:https://github.com/jaegertracing/jaeger-operator
サンプルアプリ:HotROD
HotROD(Rides on Demand)は、いくつかのマイクロサービスで構成され、OpenTelemetry と分散トレーシングの使用例を示すデモアプリケーションです。チュートリアル/ウォークスルーは、ブログ記事「JaegerでHotRODに乗る 」で利用できます。
HotRODアプリはスタンドアロンで実行できますが、トレースを表示するにはJaegerバックエンドが必要です。
機能
- データ駆動型の依存関係図を介して、システム全体のアーキテクチャを発見します。
- リクエストのタイムラインとエラーを表示し、アプリがどのように機能するかを理解します。
- レイテンシーと同時実行性の欠如の原因を見つけます。
- 高度にコンテキスト化されたロギング。
- バッグの伝播を使用して、リクエスト間の競合(キューイング)とサービスで費やされた時間を診断します。
opentelemetry-contrib
のオープンソースライブラリを使用して、ベンダーニュートラルな計測を無料で入手します。
実行
docker compose
を介してJaegerとHotRODを一緒に実行することをお勧めします。
Docker Composeを使用する場合
git clone git@github.com:jaegertracing/jaeger.git jaeger
cd jaeger/examples/hotrod
docker compose up
# Ctrl-C to stop
Dockerを使用する場合
docker run --rm -it --link jaeger \
-p8080-8083:8080-8083 \
-e OTEL_EXPORTER_OTLP_ENDPOINT="http://jaeger:4318" \
jaegertracing/example-hotrod:1.62.0 \
all --otel-exporter=otlp
ソースから
ソースから実行するには、次が必要です
- マシンにGoツールチェーン がインストールされている必要があります(必要な最小Goバージョンについては、go.mod ファイルを参照してください)。
- トレースを表示するための実行中のJaegerバックエンド。
git clone git@github.com:jaegertracing/jaeger.git jaeger
cd jaeger
go run ./examples/hotrod/main.go all
バイナリ配布から
バイナリ配布アーカイブからexample-hotrod(.exe)
実行可能ファイルを実行します。
example-hotrod all
次に、http://localhost:8080
に移動します。
Zipkinからの移行
jaeger-collectorサービスは、ThriftとJSONの両方を受け入れるZipkin互換のREST API /api/v1/spans
を公開します。また、JSONおよびProto用の/api/v2/spans
もあります。デフォルトでは無効になっています。--collector.zipkin.host-port=:9411
で有効にできます。
Zipkin Thrift IDL および Zipkin Proto IDL ファイルは、jaegertracing/jaeger-idl リポジトリにあります。これらは、openzipkin/zipkin-api の Thrift および Proto と互換性があります。