トレースを送るだけでは、特定ユーザーだけで起きる遅延や失敗を説明しきれません。request contextに相関情報を載せ、構造化ログとスパンを同じIDで結びます。
個別条件を持つログと、処理時間を持つトレースを同じ一回へ結ぶ。

user_id=42の遅延ログからtrace_idを開き、DB spanだけが長いと確認できれば、特定データ量に依存する遅延を調べられる。
user_idや時刻だけの近似検索では、並行リクエストを取り違える。リクエスト単位のIDをログへ確実に含める。
入口で作った観測情報を、処理の全レイヤーへ同じcontextで渡す。

DB問い合わせ時は受け取ったcontextから子spanを作り、同じcontext由来のloggerでquery名や対象IDを構造化出力する。
contextを新規作成して親を捨てると、子spanが別traceになり、キャンセルやdeadlineの伝搬も切れる。
ネットワーク境界を越えても、親リクエストとの関係を保つ。

Service Aがtrace contextをHTTPヘッダーへ注入し、Service Bが抽出して子spanを開始すると、一つの分散トレースとして見える。
RESTでは伝搬処理の実装・middleware設定を確認する。送信側か受信側のどちらかが欠けると、traceは境界で分断される。