コンテキスト伝搬

分散トレーシングを可能にする概念について学ぶ

コンテキスト伝搬により、シグナルは、それらが生成された場所に関係なく、互いを相関させられます。 トレースに限ったことではありませんが、コンテキスト伝搬によって、トレースは、プロセスやネットワークの境界を越えて任意に分散しているサービス間で、システムに関する因果情報を構築できます。

コンテキストの伝播を理解するには、コンテキストと伝搬(プロパゲーション)という、2つの別々の概念を理解する必要があります。

コンテキスト

コンテキストは、送受信サービスまたは実行ユニットが、あるシグナルと別のシグナルを関連付けるための情報を含むオブジェクトです。

たとえば、サービスAがサービスBを呼び出した場合、IDがコンテキスト内にあるサービスAのスパンは、サービスBで次に作成されるスパンの親スパンとして使用されます。 コンテキスト内にあるトレースIDは、サービスBで次に作成されるスパンにも使用されるため、そのスパンはサービスAのスパンと同じトレースの一部であることを意味します。

伝搬(プロパゲーション)

伝搬は、サービスとプロセス間でコンテキストを移動させる仕組みです。 コンテキストオブジェクトをシリアライズまたはデシリアライズし、あるサービスから別のサービスに伝搬される関連情報を提供します。

伝播は通常、計装ライブラリによって処理され、ユーザーには透過的です。 手動でコンテキストを伝播する必要がある場合は、伝搬APIを使用できます。

OpenTelemetryはいくつかの公式プロパゲーターを保守しています。 デフォルトのプロパゲーターはW3C TraceContext仕様で指定されたヘッダーを使用しています。

仕様

コンテキスト伝搬の詳細については、コンテキストの仕様を参照してください。