トレース
トレースは、リクエストがアプリケーションの異なるコンポーネントを通過する際の全体的な経路を表します。
ログやメトリクスとは異なり、トレース は複数のアプリケーションやサービスからのイベントで構成され、応答遅延、サービス障害、リクエストパラメータ、メタデータなど、サービス間の接続に関するコンテキストを含んでいます。
ログ とトレースには概念的な類似性がありますが、トレースはクロスサービスのコンテキストで考慮されることを意図しているのに対し、ログは通常、単一のサービスやアプリケーションの実行に限定されています。
今日の開発者は、モジュール化された分散アプリケーションの構築に傾倒しています。これらを サービス指向アーキテクチャ と呼ぶ人もいれば、マイクロサービス と呼ぶ人もいます。名称に関わらず、これらの疎結合されたアプリケーションで何か問題が発生した場合、ログやイベントを見るだけでは、インシデントの根本原因を追跡するのに十分でない場合があります。リクエストフローの完全な可視性を持つことが不可欠であり、ここでトレースが価値を発揮します。トレースは、因果関係のある一連のイベントを通じてエンドツーエンドのリクエストフローを描き出し、その可視性を得るのに役立ちます。
トレースは、システムに入ってくるリクエストの流れに関する基本的な情報を提供するため、オブザーバビリティの重要な柱です。
トレースの一般的なユースケースには、パフォーマンスのプロファイリング、本番環境の問題のデバッグ、障害の根本原因分析などがあります。
すべての統合ポイントを計装する
ワークロードの機能とコードがすべて一箇所にある場合、ソースコードを見るだけでリクエストが異なる関数間でどのように渡されるかを簡単に理解できます。 システムレベルでは、アプリケーションがどのマシンで実行されているかがわかり、何か問題が発生した場合でも、根本原因をすぐに特定できます。 異なるコンポーネントが疎結合で分散環境で実行されているマイクロサービスベースのアーキテクチャでこれを行うことを想像してみてください。 相互接続されたリクエストごとに、多数のシステムにログインしてログを確認することは、不可能でなくとも非現実的でしょう。
ここでオブザーバビリティが役 立ちます。 計装は、オブザーバビリティを向上させるための重要なステップです。 広義では、計装とはコードを使用してアプリケーション内のイベントを測定することです。
典型的な計装アプローチは、システムに入る各リクエストに一意のトレース識別子を割り当て、そのトレース ID を異なるコンポーネントを通過する際に追加のメタデータを付加しながら伝播させることです。
あるサービスから別のサービスへのすべての接続は、中央のコレクターにトレースを発行するように計装されるべきです。 このアプローチは、ワークロードの不透明な側面を可視化するのに役立ちます。
自動計装エージェントやライブラリを使用することで、アプリケーションの計装は大部分を自動化できます。