【とれーしんぐ】

トレーシング とは?

最終更新:
💡 処理の区間をつなぎ、経路と時間を調べる

処理の経路や区間を記録して調査する技術。このページではリクエストのトレーシングを中心に、スパン、サービス間の文脈伝搬、記録の範囲と限界を解説します。

📌 このページのポイント
トレーシング:処理区間をたどる同じトレースに属するスパンの例時間が進む方向親注文処理子DB問合せ子結果整形子区間の時間は、親区間に含まれる単純に足すと、同じ時間を二重に数えるサービス間では文脈を引き継いでつなぐ
横は時間、縦は処理区間で、二つの子が親の中で順番に動く例です。幅と位置は説明用で実測ではなく、並行処理もあります。計測や保存をしていない処理は見えません。
ひよこ ひよこ
注文の処理が遅い時、何が分かる?
ペンギン先生 ペンギン先生
アプリが記録した処理の区間をつないで、どこを通り、どの区間に時間がかかったかを調べられるよ。一つのアプリでも使えるし、複数サービスをまたぐ調査にも使う。記録の対象にした処理が見えるんだ。
ひよこ ひよこ
トレースと、スパンはどう違う?
ペンギン先生 ペンギン先生
一つの要求などに関連する処理のまとまりがトレース。スパンは開始・終了時刻などを持つ一つの処理区間だよ。注文処理の中にDBへの問い合わせがあれば、親スパンと子スパンとして表せる。サービス一つにつき必ず一スパンではないんだ。
ひよこ ひよこ
別のサービスの記録は、どうつなぐ?
ペンギン先生 ペンギン先生
トレースIDや親となるスパンの情報など、追跡に必要な文脈を次の処理へ引き継ぐよ。各サービスでも計測して、関係のあるスパンを収集する。IDを付けただけで、未計測の処理まで見えるわけではないんだ。
ひよこ ひよこ
記録は、全部残る?
ペンギン先生 ペンギン先生
サンプリングなどで、残すトレースを選ぶ場合があるよ。計測や収集の設定、文脈の引き継ぎが欠ければ、全体がつながらないこともある。何を計測し、何を保存しているかも確認しよう。
ひよこ ひよこ
OpenTelemetryを入れたら、原因まで分かる?
ペンギン先生 ペンギン先生
OpenTelemetryは、トレースなどの情報を計測・収集・出力するための仕組みだよ。保存や表示は別のツール等と組み合わせる。遅い区間が分かっても原因が確定するとは限らないので、ログやメトリクスなども照合して調べるんだ。
もっと詳しく知りたい人へ

スパンの所要時間を足せば、全体の時間になる?

親区間の中に子区間が含まれたり、複数の処理が並行して動いたりします。単純に合計すると同じ時間を二重に数えることがあります。開始・終了と親子関係、処理の重なりを確認します。

ログやメトリクスとの違いは?

ログは出来事の記録、メトリクスは件数や時間等の測定値、トレースは処理区間とその関係をたどるための記録として使います。情報を関連付けると調査に役立ちますが、三つあれば必ず全状況を説明できるという意味ではありません。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「トレーシング」って出てきたら「処理の区間を記録して、経路やかかった時間をたどる技術」と思えばだいたいOK!
📖 おまけ:英語の意味
「Tracing」 = 跡をたどる、追跡すること
💬 プログラムの実行等を追跡する広い呼び方です。ここではアプリへの要求を中心に説明し、サービスをまたぐ場合を分散トレーシングと呼びます。

参考資料

← 用語集にもどる