分散トレーシングは、現代において不可欠なプロセスです クラウドベースのアプリケーションの世界トレースは、分散システム全体でアプリケーションが行う各サービス要求を追跡および監視します。 開発者は、ユーザー要求が複数のサービスを通過してから目的の結果が得られるようなマイクロサービス アーキテクチャで、分散トレースが最も普及していることに気付くかもしれません。
このブログでは、分散トレースにおけるスパンの概念を探り、監視におけるスパンの構成と役割を詳しく調べ、スパン トレースを効果的に実装してクラウドベースのアプリケーションのパフォーマンスと信頼性を最適化するためのベスト プラクティスについて説明します。
主要な取り組み
スパンのトレースの概要
スパンのトレースは分散トレースの重要なコンポーネントであり、最新のクラウドベースのアプリケーションのパフォーマンスを監視および管理するために不可欠です。分散システム、特にマイクロサービス アーキテクチャを利用するシステムでは、ユーザー リクエストは、目的の結果をもたらす前に複数のサービスを通過することがよくあります。
スパンは、トレース内の個々の作業単位を表す、このトレース プロセスの基本要素として機能します。各サービス リクエストをより小さな時間測定された個別の操作に分割することにより、スパン トレースは、分散環境全体のリクエスト フローを詳細に可視化して開発者に提供します。
スパンは、パフォーマンスのボトルネックを診断し、リクエストのフローを追跡し、最終的には分散アプリケーションの信頼性と効率を最適化するために必要な詳細な洞察を提供するため、理解することが重要です。
「スパン トレーシングは、分散システムのパフォーマンスに関する深い洞察を得るための鍵です。」
分散トレースを理解する
開発者は、分散トレース、メトリック、イベント、ログを組み合わせてエンドツーエンドの監視と操作を最適化することで、ソフトウェア環境の包括的な視点を得ることができます。スパンは、 分散トレーシング システム内の作業の最小の尺度を表します。
DevOps エンジニアは、分散システム全体に適用される必要なデータ収集および相関ツールをデジタル インフラストラクチャに装備することで、運用全体に分散トレースを設定できます。
収集されたシステム データは洞察に富んだ情報を提供すると同時に、異常なイベント (例: 異常に高い遅延) の最も早い兆候を提供して、応答を高速化します。
分散トレースにおけるスパンの詳細
トレースはスパンの組み合わせで構成され、各スパンはワークフローの一部として時間指定の操作として機能します。トレースは各スパンのタイムスタンプを表示し、その開始時間と完了時間をログに記録します。タイムスタンプにより、ユーザーはソフトウェア内で実行されるイベントのタイムラインを理解しやすくなります。スパンには、実行されたリクエストに関する特定のタグと情報が含まれており、各スパン属性間の潜在的に複雑な相関関係も含まれます。
親スパン
親またはルート スパンは、最初のサービス要求のトレースの開始時に発生し、ユーザー要求にかかった合計時間を示します。親スパンには、Web 要求全体のエンドツーエンドのレイテンシが含まれます。たとえば、親スパンは、ユーザーがニュースレターを購読するためのオンライン ボタン (つまり、ユーザー要求) をクリックするのにかかる時間を測定できます。プロセス中にエラーや間違いが発生し、親スパンが停止することがあります。これらのスパンは子スパンに分岐し、分散システム全体で独自の子スパンに分割される場合があります。非同期シナリオでは、親スパンが子スパンの後に終了する可能性があることに注意することが重要です。
親子参照の詳細な視覚化により、スパン間の依存関係とすべての実行のタイムラインを明確に分析できます。
開発者は、分散トレースですべてのスパン (親/ルートおよび後続の子スパン) を参照して、ライフサイクル全体でリクエスト パフォーマンスの包括的な内訳を取得する必要があります。
「すべてのスパンがストーリーを伝えます。マイクロサービス アーキテクチャ全体のリクエストの経路を追跡します。」
スパンの主要構成要素
すべてのスパンには、システムで実行される論理作業の機能と詳細を構成する特定の記述子が含まれています。 分散トレーシングの標準スパンには次が含まれます。
- サービス/操作名 – 実行される作業のタイトル
- タイムスタンプ – システム プロセスの開始から終了までの参照
- key:value スパン タグのセット
- key:value スパン ログのグループ
- SpanContext には、複数のプロセス境界にまたがるスパンを識別および監視する ID と、プロセス境界を越えるキーと値のペアなどのバゲッジ項目が含まれます。
- ゼロ値または因果関係のあるスパンへの言及
スパンタグ
基本的に、スパンタグを使用すると、ユーザーは、トレースデータに関連するクエリ、フィルタリング、その他の機能を容易にするカスタマイズされた注釈を定義できます。スパンタグの例には、データホスト、サーバーID、ユーザーIDを識別するdb.instancesなどがあります。 HTTP 応答コード。
開発者は、データベース タイプを参照する db.type (文字列タグ) やリモート ポートを参照する peer.service (整数タグ) など、一般的なシナリオに標準タグを適用できます。 Key:value ペアは、追跡する特定の操作など、追加のコンテキストを含むスパンを提供します。
タグは、トレースを分析する多次元クエリを監視するために必要な特定の情報を開発者に提供します。 たとえば、スパン タグを使用すると、開発者はエラーに直面しているデジタル ユーザーをすばやく特定したり、パフォーマンスが最も遅い API エンドポイントを特定したりできます。
開発者は、操作を簡単かつ最小限の混乱で実行できるように、span タグの単純な命名規則を維持することを検討する必要があります。
スパンログ
Key:value スパン ログにより、ユーザーはスパン固有のメッセージやアプリケーションからのその他のデータ入力をキャプチャできます。 ユーザーはスパン ログを参照して、正確なイベントとタイムラインをトレースに記録します。 タグはスパン全体に適用されますが、ログはトレースの「スナップショット」を参照します。
スパンコンテキスト
SpanContext は、プロセス内のさまざまなポイント/境界を越えてデータを運びます。論理的には、SpanContext は、ユーザー レベルのバゲッジと、関連するスパン インスタンスのコンテキストを提供する実装固有のフィールドという 2 つの主要コンポーネントに分かれています。
本質的に、バゲッジ アイテムは、分散システム全体のプロセス境界を越えるキーと値のペアです。バゲッジ アイテムの各インスタンスには、トレースを通じてユーザーがアクセスできる貴重なデータが含まれています。開発者は、SpanContext を参照してコンテキスト メトリック (サービス リクエストや期間など) を簡単に参照し、トラブルシューティングやデバッグのプロセスを容易に行うことができます。
効果的なスパントレースのベストプラクティス
スパンのトレースのメリットを最大限に引き出すには、開発者は、可観測性の取り組みの精度と効率を高めるベスト プラクティスに従う必要があります。重要なプラクティスの 1 つは、各スパンに適切なタグを選択し、意味のある実用的な洞察を確実に提供することです。http.method、db.type、error などの標準化されたタグは、データベース クエリとフィルタリングを合理化し、分散システム全体の問題の診断を容易にします。
スパン ボリュームの管理も重要な側面です。大規模な環境では、スパン データが多すぎるとパフォーマンスのオーバーヘッドが発生し、トレースの分析が難しくなります。開発者は、クリティカル パスと影響の大きい操作を優先し、最も関連性の高いスパンとデータ ポイントのみをキャプチャすることに重点を置く必要があります。不要なスパンを戦略的に削減することで、チームはトレース システムのパフォーマンスを維持しながら、重要なメトリックを収集できます。
スパン データの最適化には、操作とサービスに簡潔で一貫性のある命名規則を使用するなど、慎重なインストルメンテーションが必要です。古いスパンと新しいスパンのそれぞれに、それが表す操作を正確に反映するキーと値のペアが含まれていることを確認すると、より正確な監視とトラブルシューティングが可能になります。さらに、開発者はスパンのトレース設定を定期的に確認して改良し、システムの進化に合わせて調整して、最適な観測性とパフォーマンスを維持する必要があります。
スパンとトレースの違いは何ですか?
本質的に、トレースは、分散トレース構造の下でのサービスまたはトランザクションを表します。 スパンは、特定のトレース内の単一の論理構造を表します。 トレース コンテキストは、一意の ID を使用してコンポーネントを簡単に識別できるようにするため、分散システム内のトレースにとって重要なコンポーネントです。
通常、トレース コンテキストの実装には、次の XNUMX つの手順が含まれます。
- 分散システム内のすべてのユーザーリクエストに一意の識別子を割り当てる
- トレース内の各ステップに一意の識別を適用する
- ID のコンテキスト情報のエンコード
- アプリ環境内のシステム間でエンコードされた情報を転送または伝達する
トレースは、エラー、カスタム属性、各イベントのタイムライン、論理作業の詳細なメタデータを含むスパン (つまり、タグ付けされた時間間隔) など、ユーザー サービス要求のデータをキャプチャします。したがって、トレース ID は分散システム内の実行パスを参照し、スパンはその実行パス内の単一の要求を表します。
分散トレースにおけるスパンの概要
分散トレースを使用すると、開発者は、複数のシステム間を流れるサービス リクエストを追跡および観察できます。 トレースは、関数、アプリケーション、またはマイクロサービスの特定のユーザー リクエストにリンクされたパフォーマンス データとして機能します。 各トレースは、論理データの最小測定値を表すスパンで構成され、ユーザーを特定のイベントに誘導するメトリックが含まれています。
具体的には、トレースは、分散システムのすべてのポイント (つまり、別々のリモートの場所にある複数のエンドポイント/コンポーネント) を通過するユーザー要求の完全な処理です。
分散トレースのスパンにより、IT スペシャリストは、複数のエンド ユーザー間で転送されるデータをきめ細かく制御できるようになり、IT 運用の監視と診断が改善されます。
スパンのメリットと分散トレース
最新のデジタル オペレーションには、次のような複雑なテクノロジーが含まれます。 、サイト信頼性エンジニアリング (SRE)、およびサーバーレス機能。 通常、単一サービスの管理に慣れているソフトウェア管理者やエンジニアには、そのような規模でシステム パフォーマンスを監視する技術的能力がありません。
そのため、リモートオンラインプロセスでは、複数のユーザーリクエストが分散トレースを経由してさまざまな機能に渡され、 マイクロサービスその結果、システム速度が向上し、コードを製品に変換する際の遅延が短縮されました。
分散トレーシング (およびこれらの関数内の作業の本質的な論理測定として機能するスパン) は、複雑なリモート アプリ環境内の開発者のオブザーバビリティ戦略を最適化します。
分散トレースとスパンの十分な理解と実装を組み合わせることで、ソフトウェア チームは迅速なトラブルシューティングのために複数のエンドポイントからのユーザー リクエストを管理する際に課題や障害を特定できます。 分散トレースとスパンベースのアプローチの直接的な利点には、次のようなものがあります。
- より有利なビジネスの評判と結果につながる改善されたユーザー エクスペリエンス
- ダウンタイムを最小限に抑えて効率を最大化するソフトウェア システムの総合的な管理
- ますます競争が激化するデジタル環境において、他社より優位に立つためのプロアクティブなソフトウェア環境の構築
- ユーザーの優先事項を正確かつ迅速に特定できるため、システム管理者は、デジタル ユーザー/顧客の満足度を維持するための手順と手段を迅速に決定できます。
開発者は、さまざまな困難を伴うさまざまな方法で分散トレーシングを実装できます。 メソッドの選択は、ユーザーの現在のプログラミング知識、インフラストラクチャ、およびスキル セットによって異なります。 分散トレーシング システムをゼロから構築すると、柔軟性とカスタマイズ性が最大になります。
LogicMonitorで監視能力を次のレベルに引き上げましょう
LogicMonitor では、企業が次の段階に進み、従業員と顧客に優れたエクスペリエンスを提供できるよう支援しています。当社のソリューションにより、包括的な監視と合理化された運用を実現できます。
私たちのブログを購読する
このような記事をあなたの受信箱に直接お届けします