Live:CloudOps Webinars & Hands-on Workshops ·Register ↗
メインコンテンツまでスキップ

トレース

トレースは、リクエストがアプリケーションのさまざまなコンポーネントを横断する際の全体的な経路を表します。

ログやメトリクスとは異なり、トレースは複数のアプリケーションまたはサービスからのイベントで構成されており、レスポンスのレイテンシー、サービスの障害、リクエストパラメータ、メタデータなど、サービス間の接続に関するコンテキストも含まれています。

ヒント

ログとトレースの間には概念的な類似性がありますが、トレースはクロスサービスのコンテキストで考慮されることを意図しているのに対し、ログは通常、単一のサービスまたはアプリケーションの実行に限定されています。

今日の開発者は、モジュール式で分散したアプリケーションの構築に傾いています。これらをサービス指向アーキテクチャと呼ぶ人もいれば、マイクロサービスと呼ぶ人もいます。名称に関わらず、これらの疎結合アプリケーションで何か問題が発生した場合、インシデントの根本原因を追跡するためにログやイベントを見るだけでは不十分な場合があります。リクエストフローへの完全な可視性を持つことは不可欠であり、ここでトレースが価値を発揮します。エンドツーエンドのリクエストフローを描写する因果関係のある一連のイベントを通じて、トレースはその可視性を得るのに役立ちます。

トレースは、リクエストがシステムに入り、システムから出るまでのフローに関する基本的な情報を提供するため、オブザーバビリティの重要な柱です。

ヒント

トレースの一般的なユースケースには、パフォーマンスプロファイリング、本番環境の問題のデバッグ、および障害の根本原因分析が含まれます。

すべての統合ポイントをインストルメント化する

すべてのワークロード機能とコードが一か所にまとまっている場合、ソースコードを見ることでリクエストがさまざまな関数をどのように渡されるかを簡単に確認できます。システムレベルでは、アプリがどのマシンで実行されているかを把握でき、何か問題が発生した場合でも、根本原因を迅速に特定できます。異なるコンポーネントが疎結合で分散環境で実行されているマイクロサービスベースのアーキテクチャでそれを行うことを想像してみてください。相互接続された各リクエストのログを確認するために多数のシステムにログインすることは、不可能とは言わないまでも、非現実的です。

ここでオブザーバビリティが役立ちます。インストルメンテーションは、そのオブザーバビリティを高めるための重要なステップです。広い意味でのインストルメンテーションとは、コードを使用してアプリケーション内のイベントを計測することです。

一般的なインストルメンテーションのアプローチは、システムに入る各リクエストに一意のトレース識別子を割り当て、そのトレース ID をさまざまなコンポーネントを通過する際に引き継ぎながら、追加のメタデータを付加することです。

備考

あるサービスから別のサービスへのすべての接続は、トレースを中央コレクターに送信するようにインストルメント化する必要があります。このアプローチにより、ワークロードの不透明な側面を可視化できます。

備考

自動インストルメンテーションエージェントまたはライブラリを使用する場合、アプリケーションのインストルメンテーションは大部分を自動化できるプロセスです。

トランザクションの時間とステータスは重要です。測定しましょう!

適切にインストルメント化されたアプリケーションは、エンドツーエンドのトレースを生成でき、次のようなウォーターフォールグラフとして表示できます。

WaterFall Trace

またはサービスマップ:

servicemap Trace

すべてのインタラクションにおけるトランザクション時間とレスポンスコードを計測することが重要です。これにより、全体的な処理時間を算出し、SLA、SLO、またはビジネス KPI への準拠状況を追跡することができます。

備考

インタラクションのレスポンスタイムとステータスコードを把握して記録することによってのみ、全体的なリクエストパターンとワークロードの健全性に寄与する要因を確認できます。

メタデータ、アノテーション、ラベルは最良の友

トレースは永続化され、一意の ID が割り当てられます。各トレースは、リクエストのパス内の各ステップを記録する スパン または セグメント(使用するツールによって異なります)に分解されます。スパンは、トレースが相互作用するエンティティを示し、親トレースと同様に、各スパンには一意の ID とタイムスタンプが割り当てられ、追加のデータやメタデータを含めることもできます。この情報は、問題が発生した正確な時刻と場所を示すため、デバッグに役立ちます。

これは実際の例を通じて最もよく説明できます。EC サイトのアプリケーションは、認証、認可、配送、在庫、決済処理、フルフィルメント、商品検索、レコメンデーションなど、多くのドメインに分割される場合があります。しかし、これらすべての相互接続されたドメインのトレースを検索するのではなく、トレースに顧客 ID のラベルを付けることで、この特定の人物に関連するインタラクションのみを検索できます。これにより、運用上の問題を診断する際に、検索範囲を即座に絞り込むことができます。

備考

命名規則はベンダーによって異なる場合がありますが、各トレースにはメタデータ、ラベル、またはアノテーションを追加することができ、これらはワークロード全体で検索可能です。追加にはコードの実装が必要ですが、ワークロードのオブザーバビリティを大幅に向上させます。

警告

トレースはログではないため、トレースに含めるメタデータは必要最小限にしてください。また、サンプリングレートが高い場合でも、トレースデータはフォレンジックや監査を目的としたものではありません。