第15章 分散トレーシング
分散トレーシングを使用すると、分散システムのアプリケーション間で実行されるトランザクションの進捗を追跡できます。マイクロサービスのアーキテクチャーでは、トレーシングはサービス間のトランザクションの進捗を追跡します。トレースデータは、アプリケーションのパフォーマンスを監視し、ターゲットシステムおよびエンドユーザーアプリケーションの問題を調べるのに役立ちます。
AMQ Streams on Red Hat Enterprise Linux では、トレーシングによってメッセージのエンドツーエンドで、ソースシステムから Kafka、さらに Kafka からターゲットシステムおよびアプリケーションへのメッセージの追跡が容易になります。トレースは利用可能な JMX メトリクスを補完します。
AMQ Streams によるトレーシングのサポート方法
トレーシングのサポートは、以下のクライアントおよびコンポーネントに対して提供されます。
Kafka クライアント:
- Kafka プロデューサーおよびコンシューマー
- Kafka Streams API アプリケーション
Kafka コンポーネント:
- Kafka Connect
- Kafka Bridge
- MirrorMaker
- MirrorMaker 2.0
トレースを有効にするには、4 つのハイレベルなタスクを実行します。
- Jaeger トレーサーを有効にします。
インターセプターを有効にします。
- Kafka クライアントの場合は、OpenTracing Apache Kafka Client Instrumentation ライブラリー(AMQ Streams に含まれる) を使用してアプリケーションコードをインストルメント化します。
- Kafka コンポーネントでは、各コンポーネントに設定プロパティーを設定します。
- トレーシング環境変数を設定します。
- クライアントまたはコンポーネントをデプロイします。
インストルメント化されると、クライアントはトレースデータを生成します。たとえば、メッセージを生成したり、ログへのオフセットを書き込む場合などです。
トレースは、サンプリングストラテジーに従いサンプル化され、Jaeger ユーザーインターフェースで可視化されます。
トレーシングは Kafka ブローカーではサポートされません。
AMQ Streams 以外のアプリケーションおよびシステムにトレーシングを設定する方法については、本章の対象外となります。この件についての詳細は、OpenTracing ドキュメント を参照し、「inject and extrac」を検索してください。
手順の概要
AMQ Streams のトレーシングを設定するには、以下の手順を順番に行います。
クライアントのトレーシングを設定します。
MirrorMaker、MirrorMaker 2.0、および Kafka Connect のトレースを設定します。
- Kafka Bridge のトレースの有効化
前提条件
- Jaeger バックエンドコンポーネントがホストオペレーティングシステムにデプロイされます。デプロイメント手順の詳細は、Jaeger デプロイメントのドキュメントを参照してください。
15.1. OpenTracing および Jaeger の概要
AMQ Streams では OpenTracing および Jaeger プロジェクトが使用されます。
OpenTracing は、トレーシングまたは監視システムに依存しない API 仕様です。
- OpenTracing API は、アプリケーションコードを インストルメント化 するために使用されます。
- インストルメント化されたアプリケーションは、分散システム全体で個別のトランザクションの トレース を生成します。
- トレースは、特定の作業単位を定義する スパン で構成されます。
Jaeger はマイクロサービスベースの分散システムのトレーシングシステムです。
- Jaeger は OpenTracing API を実装し、インストルメント化のクライアントライブラリーを提供します。
- Jaeger ユーザーインターフェースを使用すると、トレースデータをクエリー、フィルター、および分析できます。
その他のリソース