Skip to content

NH-2313 adjust CompositePropagator config with OTEL_PROPAGATORS#15

Merged
tammy-baylis-swi merged 1 commit intoNH-12018-distro-and-configurator-setupfrom
NH-2313-adjust-propagator-config-by-customer
May 2, 2022
Merged

NH-2313 adjust CompositePropagator config with OTEL_PROPAGATORS#15
tammy-baylis-swi merged 1 commit intoNH-12018-distro-and-configurator-setupfrom
NH-2313-adjust-propagator-config-by-customer

Conversation

@tammy-baylis-swi
Copy link
Copy Markdown
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
Copy Markdown
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