Verrazzanoのアプリケーション・トレース・コンポーネントの理解

Verrazzanoでアプリケーション・トレース・コンポーネントが動作する仕組み

Verrazzanoは、マイクロサービスのモニタリングおよびトラブルシューティングに使用される分散トレーシング・システムであるJaegerを提供します。

分散トレーシングについて

分散トレーシングとは、分散システムを介して伝播されるアプリケーションの動作をトラッキングする方法です。フロント・エンド・デバイスからバック・エンドのサービスやデータベースに流れるアプリケーション・リクエストをトラッキングできます。

分散トレーシングは、一般に、トラッキングや可観測性に有効ですが、複雑なアーキテクチャでエラーが発生した正確な行を特定するのにも役立ちます。分散トレーシングを使用すると、待機時間が長いリクエストやエラーをトラブルシューティングできます。

分散トレーシングでは、アプリケーション・トランザクションはリクエスト・ヘッダーおよびレスポンス・ヘッダーを使用して取得されます。元のリクエストから後続のリクエストにトレース・ヘッダーが追加されるため、元のリクエストまでさかのぼってトレースできるリンクがトランザクション全体を通じて作成されます。単一のトレースは通常、モニタリング対象のアプリケーションにおける個々のトランザクションまたはリクエストについて、ブラウザまたはモバイル・デバイスからデータベースまで、またその逆方向のアクティビティを示します。

分散トレーシングでは、単一のトレースにスパンと呼ばれる一連のタグ付き時間間隔が含まれます。スパンは、単一の作業単位と考えることができます。スパンには開始時間と終了時間があり、オプションでタグやイベントのようなその他のメタデータを含めることができます。複数のスパンの間には、親子関係などの関係があります。この関係は、特定のトランザクションが、アプリケーションを構成する多数のサービスやコンポーネントを経由しながらたどる特定のパスを示すために使用されます。

  • トレースは、エンドツーエンドのリクエストを表し、1つまたは複数のスパンで構成されます。
  • スパンは、時間間隔とタグやイベントなどの関連メタデータを持つ単一サービスによって実行される作業を表します:
    • タグを使用すると、トレースを問い合せて結果をフィルタすることができ、コラボレーションやデバッグ作業に役立ちます。
    • イベントは、イベントを追加したスパンに関連付けられたログとして表示されます。

Jaegerトレーシングについて

他のほとんどの分散トレーシング・システムと同様に、Jaegerは、OpenTracing仕様に定義されている方法でスパンおよびトレースを処理します。

Verrazzanoでは、Jaegerは次のコンポーネントで構成されています:

  • コレクタ・サービス。クライアントからトレースを受信して処理し、ストレージ・バック・エンドに格納します。
  • 問合せサービス。ストレージからトレースを取得するためのAPIを公開し、トレースの検索および分析用のJaegerコンソールをホストします。
  • ストレージ。エフェメラル、またはOpenSearchベースです。
    • Jaegerは、ストレージ・バック・エンドとしていくつかの選択肢のいずれかを使用するように構成できます。
    • Verrazzanoでは、トレース・レコードはOpenSearchに格納されます。これが機能するには、VerrazzanoでOpenSearchを有効にする必要があります。

Jaegerは、きわめて柔軟な構成が可能です。Jaegerの機能およびアーキテクチャの詳細は、Jaegerのドキュメントを参照してください。Verrazzanoでは、Ingesterサービス、KafkaまたはSparksジョブはJaegerに含まれません。

次のステップ