Skip to content

NH-2313 adjust CompositePropagator config with OTEL_PROPAGATORS #15

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

tammy-baylis-swi
Copy link
Contributor

This adjusts how customers can specify OTEL_PROPAGATORS while using NH Python. This PR is pointed at the NH-12018 branch where distro setup is split between Distro and new Configurator.

Manual test results on the lower half of the table in this doc: https://swicloud.atlassian.net/wiki/spaces/NIT/pages/2909569037/2022-04-27+to+28+propagators+combinations+testing

The below info is also on the customer documentation draft: https://swicloud.atlassian.net/wiki/spaces/NIT/pages/2867726621/NH+Python+Troubleshooting#Customizing-OTel-Propagators


The custom-distro uses tracecontext,baggage,solarwinds_propagator propagators by default in composite for regular OTel headers and custom SolarWinds headers.

Or, the customer can specify the exact propagators they want for extract/inject behaviour in trace context propagation while using our custom-distro. This is done on customer service side as follows:

  1. Install additional propagators. For example, install the Jaeger propagator with pip install opentelemetry-propagator-jaeger
  2. Set OTEL_PROPAGATORS environment variable as a comma-delimited string, e.g. jaeger,tracecontext,solarwinds_propagator,dummy_external_propagator

OTEL_PROPAGATORS must be a comma-delimited string of valid propagator entry point names, which is sort-of checked by opentelemetry-python at propagator init: opentelemetry-python/init.py at main · open-telemetry/opentelemetry-python Additionally, for our custom-distro:

  1. Both tracecontext and solarwinds_propagator must be included
  2. tracecontext must be before solarwinds_propagator

This is because solarwinds_propagator depends on tracecontext (TraceContextTextMapPropagator) injecting tracestate header into the carrier for update before re-injection. Meanwhile the other propagators can be in any order so a customer can specify their own to run extract/inject before or after ours.

Copy link
Contributor

@cheempz cheempz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks for the writeup and testing @tammy-baylis-swi!

@tammy-baylis-swi tammy-baylis-swi merged commit 02bde11 into NH-12018-distro-and-configurator-setup May 2, 2022
@tammy-baylis-swi tammy-baylis-swi deleted the NH-2313-adjust-propagator-config-by-customer branch May 2, 2022 21:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants