open-telemetry / opentelemetry-cpp

The OpenTelemetry C++ Client
https://opentelemetry.io/
Apache License 2.0
811 stars 391 forks source link

Support for Cloud Trace old propagation headers #2683

Closed bambuchaAdm closed 1 month ago

bambuchaAdm commented 1 month ago

Is your feature request related to a problem? GCP as platform use Cloud Trace. Currently most of service are able to consume correctly WC3 propagation headers. Notable exception of this is Load Balancer that supports only old header X-Cloud-Trace-Context and looks like it would not change in very fast according to reported issue

This comes out when we enable opentelemetry support for ingress-nginx and integration with LB request logs breaks. Ingress open-telemetry support only WC3 and B3 headers as they are implemented here and because of it breaks propagation of trace over this request. We would like to add support of Cloud Trace legacy headers to ingress nginx specially for request that are made via GCLB and it would be nice that Importer would comes from same way as B3 and WC3 headers.

Describe the solution you'd like Implementation of Importer/Exporter in API of legacy Cloud Trace propagation headers. Of course named as deprecated but have global ability to "consume" those traces in uniform way.

Describe alternatives you've considered If not in main API to not propagate legacy solution in new SDK put that implementation to 3rd party repository.

Additional context Specification of X-Cloud-Trace-Context header: https://cloud.google.com/trace/docs/trace-context#legacy-http-header

I can try prepare pull request for those changes but asking first is usual preferred

marcalff commented 1 month ago

Official (W3C trace context) propagators are implemented in the opentelemetry-cpp repository.

Vendors opentelemetry propagators should be placed in the opentelemetry-cpp-contrib repository.

Closing, duplicate with: