【とれーしんぐ】

トレーシング とは?

最終更新:
💡 リクエストの旅路を追いかける探偵術
📌 このページのポイント
トレーシング — リクエストの経路を追跡する ユーザー API Gateway Span A 認証サービス Span B 注文サービス Span C DB Span D キャッシュ Span E Trace ID: abc-123-xyz(全Spanを紐づける共通ID) トレース表示: A B E C D
分散トレーシングのイメージ
ひよこ ひよこ
マイクロサービスにしたらエラーの原因がどこかわからなくなっちゃったよ〜。ログを見てもサービスごとにバラバラで…
ペンギン先生 ペンギン先生
そういうときこそトレーシングの出番だよ。リクエストにトレースIDっていう追跡番号をつけて、サービス間をまたいで引き継ぐんだ。荷物の追跡番号みたいなものだね。
ひよこ ひよこ
おお!配送追跡みたいに『今ここを通過しました』ってわかるの?
ペンギン先生 ペンギン先生
そのとおり!例えばユーザーがAPIを叩くと、認証サービス→注文サービス→決済サービス→在庫サービスと流れるよね。トレーシングならその全経路と各サービスの処理時間が一目でわかるんだ。
ひよこ ひよこ
どこで時間がかかってるかも見えるの?
ペンギン先生 ペンギン先生
見えるよ!JaegerやZipkinみたいなツールを使えば、ウォーターフォール図で各スパン(処理区間)の所要時間が表示される。『決済サービスで500ms もかかってる!』なんてすぐ気づけるわけだね。
ひよこ ひよこ
OpenTelemetryって最近よく聞くけど、何がすごいの?
ペンギン先生 ペンギン先生
トレース・メトリクス・ログを統一的なAPISDKで扱える標準仕様なんだ。以前はトレーシングツールごとにSDKが違ったから、JaegerからZipkinに乗り換えるとコードの書き直しが必要だった。OpenTelemetryならエクスポーター(出力先)を変えるだけで切り替えられるよ。CNCFのプロジェクトとして急速に普及していて、今後の標準になるのは間違いないね。
ひよこ ひよこ
トレーシングを導入するのって大変なの?
ペンギン先生 ペンギン先生
最近は自動インストルメンテーション(Auto Instrumentation)があって、コードをほとんど変更せずにトレースを取れるようになったよ。Java/Python/Node.jsなどの主要言語にはOpenTelemetryのエージェントがあって、HTTPリクエストやDB呼び出しを自動的にトレースしてくれる。最初は自動計装で始めて、より詳細な情報が必要な部分だけカスタムスパンを追加するのが現実的なアプローチだよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「トレーシング」って出てきたら「分散システムでリクエストがどのサービスを通ったか追跡する技術」と思えればだいたいOK!
📖 おまけ:英語の意味
「Tracing」 = 追跡、たどること
💬 trace(跡をたどる)から派生。分散トレーシング(Distributed Tracing)として使われることが多い
← 用語集にもどる