12 トレース
分散トレースを使用して、MicroTxとマイクロサービスの間でのリクエストのフローを理解します。KialiやJaegerなどのツールを使用して、MicroTxの分散トランザクションを追跡およびトレースします。
Istioは、サービス間通信を処理するために個別のインフラストラクチャ・レイヤーを提供するサービス・メッシュです。ネットワーク通信がサービスそのものから取り出されて、プロキシによって処理されます。Istioではサイドカー設計が使用されています。つまり、通信プロキシは各サービス・コンテナ外部の独自のコンテナ内で実行されます。Envoyは、マイクロサービス・コンテナ内にサイドカーとしてデプロイされるプロキシです。サービス・メッシュ内のすべての通信は、Envoyプロキシを介して行われます。Envoyプロキシでは、プロキシ対象のマイクロサービスにかわってトレース・スパンが自動的に生成され、サービスは適切なリクエスト・コンテキストを転送することだけが求められます。https://istio.io/latest/docs/concepts/observability/を参照してください。Istioでは、Zipkin、Jaeger、Lightstep、Datadogなど、多くのトレース・バックエンドがサポートされます。
ノート:
この項で説明するステップは、MicroTxおよびIstioがKubernetesクラスタにデプロイされた環境に固有です。この項で説明する手順は、テスト環境や開発環境のみで使用してください。これらの手順は本番環境向けではありません。詳細は、KialiとJaegerのドキュメントを参照してください。
- Jaegerのインストール
ダウンロードしたIstioインストール・バンドルには、Jaegerをすぐに起動して実行するために基本のサンプル・インストールとしてjaeger.yaml
が含まれています。jaeger.yaml
ファイルは、Istioインストール・ファイルをダウンロードした場所のsamples/addons
フォルダにあります。 - Jaegerを使用した分散トレースの実行
- Kialiのインストール
ダウンロードしたIstioインストール・バンドルには、Kialiをすぐに起動して実行するために基本のサンプル・インストールとしてkiali.yaml
が含まれています。kiali.yaml
ファイルは、Istioインストール・ファイルをダウンロードした場所のsamples/addon
フォルダにあります。 - トレース・ヘッダーのリスト
トランザクションを全面的にトレースする場合は、oracle.tmm.PropagateTraceHeaders
をtrue
に設定します。これにより、すべての受信リクエストおよび送信リクエストのトレース・ヘッダーが伝播されます。
12.1 Jaegerのインストール
ダウンロードしたIstioインストール・バンドルには、Jaegerをすぐに起動して実行するために基本のサンプル・インストールとしてjaeger.yaml
が含まれています。jaeger.yaml
ファイルは、Istioインストール・ファイルをダウンロードした場所のsamples/addons
フォルダにあります。
または、Jaegerを別途インストールします。https://istio.io/latest/docs/ops/integrations/jaeger/を参照してください。
親トピック: トレース
12.2 Jaegerを使用した分散トレースの実行
Jaegerを使用して分散トレースを実行する方法を理解するために、XAのサンプル・アプリケーションについて考えてみましょう。
サンプル・アプリケーションによって実装されるシナリオでは、口座部門アプリケーションがXAトランザクションを作成して部門から部門に送金します。組織内の2つの部門は、部門1と部門2です。インストール・バンドルで提供されているサンプルXAアプリケーションの詳細は、「XAトランザクション・プロトコル」を参照してください。
親トピック: トレース
12.3 Kialiのインストール
ダウンロードしたIstioインストール・バンドルには、Kialiをすぐに起動して実行するために基本のサンプル・インストールとしてkiali.yaml
が含まれています。kiali.yaml
ファイルは、Istioインストール・ファイルをダウンロードした場所のsamples/addon
フォルダにあります。
または、Kialiを別途インストールします。https://kiali.io/docs/installation/を参照してください。
親トピック: トレース
12.4 トレース・ヘッダーのリスト
トランザクションを全面的にトレースする場合は、oracle.tmm.PropagateTraceHeaders
をtrue
に設定します。これにより、すべての受信リクエストおよび送信リクエストのトレース・ヘッダーが伝播されます。
次の表に示すのは、伝播されるトレース・ヘッダーの一部です。
ヘッダーの名前 | 説明 |
---|---|
|
すべてのアプリケーションがこのヘッダーを伝播する必要があります。このヘッダーはアクセス・ログ文に含まれ、Istioでの一貫性のあるトレース・サンプリングおよびログ・サンプリングの決定に使用されます。 |
|
これらのMicroTx固有のヘッダーは、ライブラリからMicroTx APIコールを実行するために伝播する必要があります。 |
|
このヘッダーはアプリケーションに固有です。このヘッダーは転送できます。 |
|
IstioでLightstepトレースを使用している場合は、このヘッダーを伝播します。https://istio.io/latest/docs/tasks/observability/distributed-tracing/lightstep/を参照してください。 |
|
Datadogトレースを使用している場合は、これらのヘッダーを伝播します。 |
|
これらは、W3Cトレース・コンテキスト・ヘッダーです。これらは、IstioのOpenCensusエージェントおよびStackdriver構成と互換性があります。 |
|
Cloud Traceコンテキスト・ヘッダーです。これは、IstioのOpenCensus AgentおよびStackdriverの構成と互換性があります。 |
|
これはgRPCライブラリ・トレース・コンテキスト・ヘッダーです。これは、IstioのOpenCensus AgentおよびStackdriverの構成と互換性があります。 |
|
これらは、B3トレース・コンテキスト・ヘッダーです。これらは、IstioのZipkin、OpenCensus AgentおよびStackdriverの構成と互換性があります。 |
親トピック: トレース