第14章 分散トレース
Red Hat Enterprise Linux の AMQ Streams は、Jaeger による分散トレースをサポートします。
- Kafka プロデューサー、Kafka コンシューマー、および Kafka Streams アプリケーション (Kafka クライアント と呼ばれる)
- MirrorMaker と Kafka Connect
- Kafka Bridge
分散トレースを設定する手順は、クライアントとコンポーネントによって異なります。ただし、次の 3 つの高レベルのタスクが関係しています。
- クライアントまたはコンポーネントの Jaeger トレーサを有効にします。
クライアントまたはコンポーネントのインターセプターを有効にします。
- Kafka クライアントの場合、インターセプターを有効にするには、OpenTracing 用にアプリケーションコードを インストルメント化 する必要があります。
- MirrorMaker、Kafka Connect、および Kafka Bridge の場合、インターセプターを有効にするには、各コンポーネントの設定プロパティーを設定する必要があります。
- クライアントまたはコンポーネントをデプロイする前に、トレース環境変数を設定します。
この章では、分散トレースの概要と、サポートされているクライアントとコンポーネントを設定する手順について説明します。AMQ Streams 以外のアプリケーションおよびシステムに分散トレーシングを設定する方法については、本章の対象外となります。この件についての詳細は、OpenTracing ドキュメント を参照し、inject and extrac を検索してください。
分散トレーシングは Kafka ブローカーではサポートされません。
前提条件
- Jaeger バックエンドコンポーネントがホストオペレーティングシステムにデプロイされている。デプロイメント手順の詳細は、Jaeger デプロイメントのドキュメント を参照してください。
14.1. 分散トレースの概要
分散トレーシングを使用すると、開発者およびシステム管理者は、分散システム内のアプリケーション (およびマイクロサービスアーキテクチャー内のサービス) 間のトランザクションの進捗を追跡できます。この情報は、アプリケーションのパフォーマンスを監視し、ターゲットシステムおよびエンドユーザーアプリケーションの問題を調べるのに役立ちます。
AMQ Streams では、分散トレースにより、ソースシステムから Kafka クラスター、さらにターゲットシステムやアプリケーションまで、メッセージのエンドツーエンドの追跡が容易になります。
分散トレーシングは、システムの可観測性の要素として、Grafana ダッシュボードで表示可能なメトリクスと各コンポーネントで利用可能なロガーを補完します。
14.1.1. OpenTracing と Jaeger
OpenTracing および Jaeger プロジェクトは、AMQ Streams で分散トレースを実装するために使用されます。
OpenTracing
OpenTracing 仕様では、分散トレーシングのアプリケーションをインストルメント化するために開発者が使用する API が定義されます。アプリケーションを計測するときは、個々のトランザクションの実行を監視するために計測コードを追加します。インストルメント化されている場合、アプリケーションは個々のトランザクションが発生したときに トレース を生成します。トレースは、特定の作業単位を定義する スパン で設定されます。
Kafka クライアントのインストルメンテーションを簡素化するために、AMQ Streams には OpenTracing Apache Kafka Client Instrumentation ライブラリーが含まれています。
OpenTracing プロジェクトは OpenCensus プロジェクトと統合され、OpenTelemetry プロジェクトを形成しています。OpenTelemetry は、OpenTracing API を使用してインストルメント化されたアプリケーションの互換性を維持します。
Jaeger
トレースシステムである Jaeger は、OpenTracing API の実装です。Jaeger は、マイクロサービスベースの分散システムのモニタリングとトラブルシューティングに使用され、アプリケーションを計測するためのクライアントライブラリーを提供します。
Jaeger は、設定されたサンプリング戦略に基づいて、アプリケーションによって生成されたトータルトレースをサンプリングし、ユーザーインターフェイスで視覚化します。これにより、トレースデータを視覚化、クエリー、フィルター処理、および分析できます。
Jaeger ユーザーインターフェイスのクエリー例