第22章 Introducing distributed tracing
分散トレースは、分散システム内のアプリケーション間のトランザクションの進行状況を追跡します。マイクロサービスのアーキテクチャーでは、トレースがサービス間のトランザクションの進捗を追跡します。トレースデータは、アプリケーションのパフォーマンスを監視し、ターゲットシステムおよびエンドユーザーアプリケーションの問題を調べるのに有用です。
Streams for Apache Kafka では、トレースによってメッセージのエンドツーエンドの追跡が容易になります。これは、ソースシステムから Kafka、さらに Kafka からターゲットシステムおよびアプリケーションへのメッセージの追跡です。分散トレーシングは、Grafana ダッシュボードおよびコンポーネントロガーでのメトリクスの監視を補完します。
トレースのサポートは、以下の Kafka コンポーネントに組み込まれています。
- ソースクラスターからターゲットクラスターへのメッセージをトレースする MirrorMaker
- Kafka Connect が使用して生成したメッセージをトレースする Kafka Connect
- Kafka と HTTP クライアントアプリケーション間のメッセージをトレースする Kafka Bridge
トレースは Kafka ブローカーではサポートされません。
カスタムリソースを使用して、これらのコンポーネントのトレースを有効にして設定します。spec.template
プロパティーを使用してトレース設定を追加します。
spec.tracing.type
プロパティーを使用してトレースタイプを指定することにより、トレースを有効にします。
opentelemetry
-
type: opentelemetry
を指定して、OpenTelemetry を使用します。デフォルトでは、OpenTelemetry は OTLP (OpenTelemetry Protocol) エクスポーターとエンドポイントを使用してトレースデータを取得します。Jaeger トレースなど、OpenTelemetry でサポートされている他のトレースシステムを指定できます。これを行うには、トレース設定で OpenTelemetry エクスポーターとエンドポイントを変更します。
Streams for Apache Kafka は OpenTracing をサポートしなくなりました。これまでに type: jaeger
オプションを指定して OpenTracing を使用していた場合は、代わりに OpenTelemetry の使用に移行することを推奨します。
22.1. トレースオプション
OpenTelemetry を Jaeger トレースシステムとともに使用します。
OpenTelemetry は、トレースまたは監視システムから独立した API 仕様を提供します。
API を使用して、トレース用にアプリケーションコードをインストルメント化します。
- インストルメント化されたアプリケーションは、分散システム全体で個別のリクエストの トレース を生成します。
- トレースは、時間軸の中で特定の作業単位を定義する スパン で構成されます。
Jaeger はマイクロサービスベースの分散システムのトレースシステムです。
- Jaeger ユーザーインターフェイスを使用すると、トレースデータをクエリー、フィルター、および分析できます。
簡単なクエリーを表示する Jaeger ユーザーインターフェイス