メインコンテンツまでスキップ

トレース

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

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

ヒント

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

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

トレースは、システムに入ってくるリクエストの流れに関する基本的な情報を提供するため、オブザーバビリティの重要な柱です。

ヒント

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

すべての統合ポイントを計装する

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

ここでオブザーバビリティが役立ちます。 計装は、オブザーバビリティを向上させるための重要なステップです。 広義では、計装とはコードを使用してアプリケーション内のイベントを測定することです。

典型的な計装アプローチは、システムに入る各リクエストに一意のトレース識別子を割り当て、そのトレース ID を異なるコンポーネントを通過する際に追加のメタデータを付加しながら伝播させることです。

備考

あるサービスから別のサービスへのすべての接続は、中央のコレクターにトレースを発行するように計装されるべきです。 このアプローチは、ワークロードの不透明な側面を可視化するのに役立ちます。

備考

自動計装エージェントやライブラリを使用することで、アプリケーションの計装は大部分を自動化できます。

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

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

WaterFall Trace

またはサービスマップとして表示できます:

servicemap Trace

すべての相互作用のトランザクション時間とレスポンスコードを測定することが重要です。これにより、全体的な処理時間を計算し、SLA、SLO、またはビジネス KPI との適合性を追跡するのに役立ちます。

備考

相互作用のレスポンス時間とステータスコードを理解し記録することでのみ、全体的なリクエストパターンとワークロードの健全性に寄与する要因を把握できます。

メタデータ、アノテーション、ラベルは最高の味方です

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

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

備考

ベンダー間で命名規則が異なる場合がありますが、各トレースにはメタデータ、ラベル、またはアノテーションを追加でき、これらはワークロード全体で検索可能です。これらを追加するにはコードが必要ですが、ワークロードの観測可能性を大幅に向上させます。

警告

トレースはログではないので、トレースに含めるメタデータは慎重に選択してください。また、高いサンプリングレートであっても、トレースデータはフォレンジックや監査を目的としたものではありません。