第14章 分散トレース

Red Hat Enterprise Linux の AMQ Streams は、Jaeger による分散トレースをサポートします。

  • Kafka プロデューサー、Kafka コンシューマー、および Kafka Streams アプリケーション (Kafka クライアント と呼ばれる)
  • MirrorMaker と Kafka Connect
  • Kafka Bridge

分散トレースを設定する手順は、クライアントとコンポーネントによって異なります。ただし、次の 3 つの高レベルのタスクが関係しています。

  1. クライアントまたはコンポーネントの Jaeger トレーサを有効にします。
  2. クライアントまたはコンポーネントのインターセプターを有効にします。

    • Kafka クライアントの場合、インターセプターを有効にするには、OpenTracing 用にアプリケーションコードを インストルメント化 する必要があります。
    • MirrorMaker、Kafka Connect、および Kafka Bridge の場合、インターセプターを有効にするには、各コンポーネントの設定プロパティーを設定する必要があります。
  3. クライアントまたはコンポーネントをデプロイする前に、トレース環境変数を設定します。

この章では、分散トレースの概要と、サポートされているクライアントとコンポーネントを設定する手順について説明します。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 ユーザーインターフェイスのクエリー例

Simple Jaeger query