Cloud Run への通信のトレースが繋がるようになってた
"旧"課題
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.
しかし、例えば以下のようにCloud Runの前段に何かしらサービスがいて、前段のサービスのトレースがtraceparentヘッダに乗っかって後段のサービスにリクエストされる時
後段のサービスでもトレースを発行してそれでtraceparentヘッダを書き換えてしまうため、Cloud Traceで見たときにトレースが分かれてしまって関連したリクエストとしてみることができなかった。
現状
中の人が開発してくれたみたいで、いつの間にかトレースが繋がるようになってた
まとめ
繋がるようになった!ありがとう!
繋がってないとめっちゃ困るみたいなことはないけど、見やすいので助かる。
もし繋がってるのを必須にしてくれとかなったら b3 使って回避するかー?とか色々考えていたので良かった。
実は、自分へのメモと周囲の人への説明用に記事を書きかけていたので、完成したあとじゃなくて良かった。
Discussion