📝

Cloud Run への通信のトレースが繋がるようになってた

2024/06/01に公開

"旧"課題

Cloud Runへの通信が絡むサービス間通信の分散トレーシングでTraceが繋がらなくなってしまう

原因

Cloud Runでは、外部からの通信に対して、自動的にトレースを発行してくれる。

トレースの情報はtraceparentヘッダに入れてくれるので、OpenTelemetryなどでSpanを発行して紐づければCloud Traceで見れて便利。

Incoming requests to Cloud Run services automatically generate traces that you can view in Cloud Trace. You can use these traces to identify sources of any latency issues in your implementation without needing to add further instrumentation in Cloud Trace. The standard W3C trace context propagation header traceparent is automatically populated for Cloud Run requests.

https://cloud.google.com/run/docs/trace

しかし、例えば以下のようにCloud Runの前段に何かしらサービスがいて、前段のサービスのトレースがtraceparentヘッダに乗っかって後段のサービスにリクエストされる時

後段のサービスでもトレースを発行してそれでtraceparentヘッダを書き換えてしまうため、Cloud Traceで見たときにトレースが分かれてしまって関連したリクエストとしてみることができなかった。

サービス構成概要図

現状

中の人が開発してくれたみたいで、いつの間にかトレースが繋がるようになってた
Traceが繋がっている

まとめ

繋がるようになった!ありがとう!

繋がってないとめっちゃ困るみたいなことはないけど、見やすいので助かる。
もし繋がってるのを必須にしてくれとかなったら b3 使って回避するかー?とか色々考えていたので良かった。

実は、自分へのメモと周囲の人への説明用に記事を書きかけていたので、完成したあとじゃなくて良かった。
書きかけ記事

Discussion