第11章 分散トレーシング
本章では、Jaeger を使用した AMQ Streams での分散トレーシングのサポートについて説明します。
分散トレーシングの設定方法は、AMQ Streams クライアントとコンポーネントによって異なります。
- OpenTracing クライアントライブラリーを使用して、Kafka Producer、Consumer、および Streams API の各アプリケーションを分散トレーシング向けに インストルメント化 します。これには、インストルメント化コードをこれらのクライアントに追加することが含まれ、レースデータを生成するために個々のトランザクションの実行が監視されます。
- 分散トレーシングのサポートは、AMQ Streams の Kafka Connect、MirrorMaker、および Kafka Bridge コンポーネントに組み込まれています。これらのコンポーネントを分散トレーシング向けに設定するには、関連するカスタムリソースを設定および更新します。
AMQ Streams クライアントおよびコンポーネントで分散トレーシングを設定する前に、Kafka クライアント用の Jaeger トレーサーの初期化 の手順に従い、最初に Kafka クラスターで Jaeger トレーサーを初期化して設定する必要があります。
分散トレーシングは Kafka ブローカーではサポートされません。
11.1. AMQ Streams での分散トレーシングの概要
分散トレーシングを使用すると、開発者およびシステム管理者は、分散システム内のアプリケーション (およびマイクロサービスアーキテクチャー内のサービス) 間のトランザクションの進捗を追跡できます。この情報は、アプリケーションのパフォーマンスを監視し、ターゲットシステムおよびエンドユーザーアプリケーションの問題を調べるのに役立ちます。
AMQ Streams およびデータストリーミングのプラットフォームでは、通常、分散トレーシングによって、メッセージのエンドツーエンドでの追跡 (ソースシステムから Kafka クラスターへ、さらにターゲットシステムおよびアプリケーションへ) が容易になります。
分散トレーシングは、システムの可観測性の要素として、Grafana ダッシュボード で表示可能なメトリクスと各コンポーネントで利用可能なロガーを補完します。
OpenTracing の概要
AMQ Streams の分散トレーシングは、オープンソースの OpenTracing および Jaeger プロジェクトを使用して実装されます。
OpenTracing 仕様では、分散トレーシングのアプリケーションをインストルメント化するために開発者が使用する API が定義されます。これは、トレーシングシステムに依存しません。
アプリケーションがインストルメント化されると、個々のトランザクションの トレース が生成されます。トレースは、特定の作業単位を定義する スパン で設定されます。
Kafka Bridge と、Kafka Producer、Consumer、および Streams API アプリケーションのインストルメンテーションを簡素化するために、AMQ Streams には OpenTracing Apache Kafka Client Instrumentation ライブラリーが含まれています。
OpenTracing プロジェクトは OpenCensus プロジェクトと統合されました。新たに統合されたプロジェクトの名前は OpenTelemetry です。OpenTelemetry は、OpenTracing API を使用してインストルメント化されたアプリケーションの互換性を維持します。
Jaeger の概要
Jaeger はトレーシングシステムで、マイクロサービスベースの分散システムの監視およびトラブルシューティングに使用される OpenTracing API の実装です。4 つの主要コンポーネントで設定され、アプリケーションのインストルメント化するためのクライアントライブラリーが提供されます。Jaeger ユーザーインターフェイスを使用すると、トレースデータを視覚化、クエリー、フィルターリング、および分析できます。
Jaeger ユーザーインターフェイスのクエリー例
11.1.1. AMQ Streams での分散トレーシングのサポート
AMQ Streams では、分散トレーシングは以下でサポートされます。
- Kafka Connect (Source2Image がサポートされる Kafka Connect を含む)
- MirrorMaker
- AMQ Streams Kafka Bridge
これらのコンポーネントの分散トレーシングを有効化および設定するには、関連するカスタムリソース (KafkaConnect
、KafkaBridge
など) でテンプレート設定プロパティーを設定します。
Kafka Producer、Consumer、および Streams API の各アプリケーションで分散トレーシングを有効にするには、OpenTracing Apache Kafka Client Instrumentation ライブラリーを使用してアプリケーションコードをインストルメント化します。インストルメント化されると、クライアントはメッセージのトレースを生成します (メッセージの作成時やログへのオフセットの書き込み時など)。
トレースは、サンプリングストラテジーに従いサンプル化され、Jaeger ユーザーインターフェイスで可視化されます。このトレースデータは、Kafka クラスターのパフォーマンスの監視や、ターゲットシステムおよびアプリケーションの問題のデバッグに便利です。
手順の概要
AMQ Streams の分散トレーシングを設定するには、以下の手順に従います。
本章では、AMQ Streams クライアントおよびコンポーネントの分散トレーシングの設定についてのみ説明します。AMQ Streams 以外のアプリケーションおよびシステムに分散トレーシングを設定する方法については、本章の対象外となります。この件についての詳細は、OpenTracing ドキュメント を参照し、inject and extrac を検索してください。
作業を開始する前の注意事項
AMQ Streams の分散トレーシングを設定する前に、以下を理解しておくと便利です。
- OpenTracing の基本として、トレース、スパン、トレーサーなどの主な概念。OpenTracing ドキュメント を参照してください。
- Jaeger アーキテクチャー のコンポーネント。
前提条件
- Jaeger バックエンドコンポーネントが OpenShift クラスターにデプロイされている必要があります。デプロイメント手順の詳細は、Jaeger デプロイメントのドキュメント を参照してください。