分散トレースのスパンとは?

分散トレースのスパンとは?

分散トレーシングは、現代において不可欠なプロセスです クラウドベースのアプリケーションの世界. トレースは、アプリケーションが分散システム全体で行う各サービス リクエストを追跡して観察します。 開発者は、望ましい結果を提供する前にユーザー要求が複数のサービスを通過するマイクロサービス アーキテクチャで、分散トレースが最も一般的であることに気付くかもしれません。  

内容

分散トレース 

開発者は、分散されたトレース、メトリック、イベント、およびログを組み合わせてエンドツーエンドの監視と運用を最適化することにより、ソフトウェア環境の包括的な視点を得ることができます。 スパンは、分散トレーシングの基本ブロックとして機能し、システム内の最小の作業量を表します。 

DevOps エンジニアは、分散システム全体に適用される必要なデータ収集および相関ツールをデジタル インフラストラクチャに装備することで、運用全体に分散トレースを設定できます。 

収集されたシステム データは洞察に富んだ情報を提供すると同時に、異常なイベント (例: 異常に高い遅延) の最も早い兆候を提供して、応答を高速化します。  

分散トレーシングにおけるスパンの詳細

トレースはスパンの組み合わせで構成され、各スパンはワークフローの一部として時限操作として機能します。 トレースは、各スパンのタイムスタンプを表示し、その開始と完了を記録します。 タイムスタンプにより、ユーザーはソフトウェア内で実行されるイベントのタイムラインを理解しやすくなります。 スパンには、各スパン間の潜在的に複雑な相関関係を含む、実行されたリクエストに関する特定のタグと情報が含まれます。 

親スパン 

親またはルート スパンは、最初のサービス リクエストのトレースの開始時に発生し、ユーザー リクエストにかかった合計時間を示します。 親スパンには、Web リクエスト全体のエンドツーエンドのレイテンシが含まれます。 たとえば、親スパンは、ユーザーがニュースレターを購読するためのオンライン ボタン (つまり、ユーザー リクエスト) をクリックするのにかかる時間を測定できます。 処理中にエラーやミスが発生し、親スパンが停止する可能性があります。 これらのスパンは子スパンに分岐し、分散システム全体で独自の子スパンに分割される場合があります。 非同期シナリオでは、子スパンの後に親スパンが終了する可能性があることに注意することが重要です。  

親子参照の詳細な視覚化により、スパン間の依存関係とすべての実行のタイムラインを明確に分析できます。

開発者は、分散トレースですべてのスパン (親/ルートおよび後続の子スパン) を参照して、ライフサイクル全体でリクエスト パフォーマンスの包括的な内訳を取得する必要があります。 

スパン構成

すべてのスパンには、システムで実行される論理作業の機能と詳細を構成する特定の記述子が含まれています。 分散トレーシングの標準スパンには次が含まれます。

  • 操作/サービス名 - 実行された作業のタイトル
  • タイムスタンプ – システム プロセスの開始から終了までの参照 
  • key:value スパン タグのセット
  • key:value スパン ログのグループ
  • SpanContext には、複数のプロセス境界にまたがるスパンを識別および監視する ID が含まれています。 手荷物 プロセスの境界を越えるキー:値のペアなど 
  • ゼロ値または因果関係のあるスパンへの言及

スパンタグ

基本的に、span タグを使用すると、ユーザーは、クエリ、フィルタリング、およびトレース データに関連するその他の機能を容易にするカスタマイズされた注釈を定義できます。 span タグの例には、データ ホスト、serverID、userID、および HTTP 応答コードを識別する db.instances が含まれます。 

開発者は、データベース タイプを参照する db.type (文字列タグ) やリモート ポートを参照する peer.service (整数タグ) など、一般的なシナリオに標準タグを適用できます。 Key:value ペアは、追跡する特定の操作など、追加のコンテキストを含むスパンを提供します。 

タグは、トレースを分析する多次元クエリを監視するために必要な特定の情報を開発者に提供します。 たとえば、スパン タグを使用すると、開発者はエラーに直面しているデジタル ユーザーをすばやく特定したり、パフォーマンスが最も遅い API エンドポイントを特定したりできます。 

開発者は、操作を簡単かつ最小限の混乱で実行できるように、span タグの単純な命名規則を維持することを検討する必要があります。  

スパンログ

Key:value スパン ログにより、ユーザーはスパン固有のメッセージやアプリケーションからのその他のデータ入力をキャプチャできます。 ユーザーはスパン ログを参照して、正確なイベントとタイムラインをトレースに記録します。 タグはスパン全体に適用されますが、ログはトレースの「スナップショット」を参照します。  

スパンコンテキスト

SpanContext は、プロセス内のさまざまなポイント/境界を越えてデータを運びます。 論理的には、SpanContext は XNUMX つの主要なコンポーネントに分割されます。ユーザー レベルのバゲージと、関連付けられたスパン インスタンスのコンテキストを提供する実装固有のフィールドです。 

基本的に、バゲージ アイテムは、分散システム全体でプロセスの境界を越えるキーと値のペアです。 荷物アイテムの各インスタンスには、ユーザーがトレース全体でアクセスできる貴重なデータが含まれています。 開発者は、コンテキスト メトリック (サービス リクエストや期間など) の SpanContext を便利に参照して、トラブルシューティングとデバッグ プロセスを容易にできます。   

スパンとトレースの違い

本質的に、トレースは、分散トレース構造の下でのサービスまたはトランザクションを表します。 スパンは、特定のトレース内の単一の論理構造を表します。 トレース コンテキストは、一意の ID を使用してコンポーネントを簡単に識別できるようにするため、分散システム内のトレースにとって重要なコンポーネントです。 

通常、トレース コンテキストの実装には、次の XNUMX つの手順が含まれます。

  1. 分散システム内のすべてのユーザー要求に一意の ID を割り当てる
  2. トレース内の各ステップに一意の識別を適用する
  3. ID のコンテキスト情報のエンコード
  4. アプリ環境内のシステム間でエンコードされた情報を転送または伝達する

トレースは、エラー、カスタム属性、各イベントのタイムラインなど、ユーザー サービス リクエストのデータをキャプチャします。 スパン (つまり、タグ付けされた時間間隔) には、論理作業の詳細なメタデータが含まれています。 したがって、トレースは分散システム内の実行パスを参照し、スパンはその実行パス内の単一の要求を表します。  

分散トレースのスパンの概要

分散トレースを使用すると、開発者は、複数のシステム間を流れるサービス リクエストを追跡および観察できます。 トレースは、関数、アプリケーション、またはマイクロサービスの特定のユーザー リクエストにリンクされたパフォーマンス データとして機能します。 各トレースは、論理データの最小測定値を表すスパンで構成され、ユーザーを特定のイベントに誘導するメトリックが含まれています。 

具体的には、トレースとは、ユーザー要求が分散システムのすべてのポイント (つまり、離れた場所にある複数のエンドポイント/コンポーネント) を移動する際の完全な処理です。

分散トレースのスパンにより、IT スペシャリストは、複数のエンド ユーザー間で転送されるデータをきめ細かく制御できるようになり、IT 運用の監視と診断が改善されます。 

スパンと分散トレースの利点 

最新のデジタル オペレーションには、次のような複雑なテクノロジーが含まれます。 、サイト信頼性エンジニアリング (SRE)、およびサーバーレス機能。 通常、単一サービスの管理に慣れているソフトウェア管理者やエンジニアには、そのような規模でシステム パフォーマンスを監視する技術的能力がありません。 

そのため、リモートのオンライン プロセスでは、複数のユーザー リクエストが分散トレースを介してさまざまな機能やマイクロサービスに渡されるため、システム速度が向上し、コードを製品に変換する際の遅延が減少します。 

分散トレーシング (およびこれらの関数内の作業の本質的な論理測定として機能するスパン) は、複雑なリモート アプリ環境内の開発者のオブザーバビリティ戦略を最適化します。 

分散トレースとスパンの十分な理解と実装を組み合わせることで、ソフトウェア チームは迅速なトラブルシューティングのために複数のエンドポイントからのユーザー リクエストを管理する際に課題や障害を特定できます。 分散トレースとスパンベースのアプローチの直接的な利点には、次のようなものがあります。

  • より有利なビジネスの評判と結果につながる改善されたユーザー エクスペリエンス
  • ダウンタイムを最小限に抑えて効率を最大化するソフトウェア システムの総合的な管理
  • ますます競争が激化するデジタル環境において、他社より優位に立つためのプロアクティブなソフトウェア環境の構築 
  • ユーザーの優先事項を正確かつ迅速に特定できるため、システム管理者は、デジタル ユーザー/顧客の満足度を維持するための手順と手段を迅速に決定できます。 

開発者は、さまざまな困難を伴うさまざまな方法で分散トレーシングを実装できます。 メソッドの選択は、ユーザーの現在のプログラミング知識、インフラストラクチャ、およびスキル セットによって異なります。 分散トレーシング システムをゼロから構築すると、柔軟性とカスタマイズ性が最大になります。 

LogicMonitor では、企業が次に何を変革し、並外れた従業員と顧客体験を提供できるよう支援します。 さらに詳しい情報をご希望の方はこちらへ