Trace
背景
分散トレース、一般的にはトレースと呼ばれるものは、マイクロサービスやサーバーレスアプリケーションのようなマルチサービスアーキテクチャを通じて、アプリケーションやエンドユーザーによって行われたリクエストがどのように伝播するかを記録します。トレースがないと、分散システムでのパフォーマンス問題の原因を特定するのは困難です。トレースは、アプリケーションやシステムの健康状態の可視性を向上させ、ローカルで再現が難しい動作をデバッグするのに役立ちます。分散システムは、 非決定的な問題を抱えていることが多く、ローカルで再現するには複雑すぎるため、トレースは不可欠です。 トレースは、分散システム内でリクエストがどのように流れるかを分解することで、デバッグや理解を容易にします。トレースは1つ以上のスパンで構成されます。最初のスパンはルートスパンを表します。各ルートスパンは、リクエストの開始から終了までを表します。親の下にあるスパンは、リクエスト中に何が起こるか(またはリクエストを構成するステップ)についてのより詳細なコンテキストを提供します。多くの観測バックエンドは、トレースをウォーターフォールダイアグラムとして視覚化し、次のような図になることがあります。

ウォーターフォールダイアグラムは、ルートスパンとその子スパンとの親子関係を示します。スパンが別のスパンをカプセル化するとき、これはネストされた関係も表します。 最近、SR はトレースフレームワークを追加しました。これは、opentelemetry と jaeger を活用して、システム内の分散イベントをトレースします。
- Opentelemetry は、インストルメンテーション/トレース SDK です。開発者はこれを使用してコードにインストルメントを追加し、観測バックエンドにトレースデータを送信できます。多くの言語をサポートしています。SR では java と CPP SDK を使用しています。
- 現在、Jaeger が観測バックエンドとして使用されています。