Registry / observability / opentelemetry-propagator-jaeger

opentelemetry-propagator-jaeger

JSON →
library1.44.0pypypi✓ verified 23d ago

The `opentelemetry-propagator-jaeger` library provides a `TextMapPropagator` implementation for context propagation using the Jaeger trace context format. It enables OpenTelemetry applications to send and receive trace context information to/from services that use Jaeger's native propagation format. It is part of the broader OpenTelemetry Python project, which releases frequently, typically every few weeks, bringing updates to API, SDK, and contrib packages.

pip install opentelemetry-propagator-jaeger
INSTALL
IMPORT
SIG · OPENTELEMETRY-PROP
O
opentelemetry-propagator-jaeger
observabilitypythonv1.44.0
Install
3.1s avg
Import
107ms
Disk
49MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v1.44.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.910 runs
installs and imports cleanly · install 0.0s · import 0.104s · 18.8MB
glibc
py 3.103.910 runs
installs and imports cleanly · install 3.1s · import 0.110s · 19MB
49MB installed
● package 49MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

JaegerPropagator
from opentelemetry.propagators.jaeger import JaegerPropagator

This quickstart demonstrates how to initialize the `JaegerPropagator` and register it as the global text map propagator. This tells OpenTelemetry to use Jaeger's specific header format (e.g., `uber-trace-id` or `jaeger-trace-id`) when injecting and extracting trace context from HTTP headers or other text-based carriers. It includes a basic setup for a `TracerProvider` to make the example runnable and illustrate how context would be injected.

from opentelemetry import trace from opentelemetry.propagate import set_global_textmap from opentelemetry.propagators.jaeger import JaegerPropagator from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor # 1. Set up a TracerProvider (required for actual tracing) resource = Resource.create({"service.name": "my-jaeger-service"}) tracer_provider = TracerProvider(resource=resource) simple_processor = SimpleSpanProcessor(ConsoleSpanExporter()) tracer_provider.add_span_processor(simple_processor) trace.set_tracer_provider(tracer_provider) # 2. Register the JaegerPropagator globally set_global_textmap(JaegerPropagator()) # 3. Get a tracer tracer = trace.get_tracer(__name__) # 4. Create a span and demonstrate context propagation (conceptually) with tracer.start_as_current_span("my-jaeger-span") as span: print(f"Current span ID: {span.context.span_id:x}") print(f"Current trace ID: {span.context.trace_id:x}") # In a real application, context would be injected/extracted over network requests. # For example, injecting into a dictionary for a mock HTTP request: carrier = {} JaegerPropagator().inject(carrier) print(f"Injected context: {carrier}") print("JaegerPropagator registered and used for context injection.")
Debug
Known issues
gotchaForgetting to register the propagator globally. The `JaegerPropagator` must be registered using `set_global_textmap(JaegerPropagator())` for it to be used automatically by OpenTelemetry's context propagation mechanisms (e.g., in HTTP instrumentations). If not set, OpenTelemetry will default to using `W3CTraceContextPropagator` and `W3CBaggagePropagator`.
fix
Ensure `from opentelemetry.propagate import set_global_textmap; set_global_textmap(JaegerPropagator())` is called early in your application's startup process.
affects: All versions
gotchaMixing Jaeger and W3C Trace Context. Jaeger uses a specific header format (`uber-trace-id`, `jaeger-trace-id`). W3C Trace Context uses `traceparent` and `tracestate`. If your system interacts with services using both, you'll need to use a `CompositePropagator` to handle multiple formats.
fix
Use `from opentelemetry.propagate import CompositePropagator, set_global_textmap; set_global_textmap(CompositePropagator([JaegerPropagator(), W3CTraceContextPropagator(), W3CBaggagePropagator()]))` to support multiple propagation formats.
affects: All versions
breakingChanges to `NoOpTracer` behavior in `opentelemetry-sdk` v1.40.0. The `start_span` and `start_as_current_span` methods in `NoOpTracer` no longer strictly return an `INVALID_SPAN` if there is a valid span context as the current span context. Instead, they propagate the span context properly even without the SDK installed. While this is a core SDK change, it's relevant if your application logic or testing relies on the previous `NoOpTracer` behavior when no SDK is configured, which could subtly impact how propagators perceive the 'current' context.
fix
Review any code that explicitly checks for `INVALID_SPAN` when no SDK is installed or that relies on `NoOpTracer` not propagating context. Adjust logic to account for context propagation even without an SDK if a valid context is present.
affects: >=1.40.0
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'opentelemetry.propagators.jaeger'
The `opentelemetry-propagator-jaeger` package is not installed in the Python environment, or the import path used is incorrect due to updates in the OpenTelemetry Python library structure.
fix
Install the package using `pip install opentelemetry-propagator-jaeger`. Ensure the import statement is `from opentelemetry.propagators.jaeger import JaegerPropagator`.
OpenTelemetry Jaeger traces not showing
Traces from OpenTelemetry-instrumented applications are not appearing in the Jaeger UI. This can stem from misconfiguration of the `JaegerPropagator` (e.g., not setting it globally), issues with the trace exporter not successfully sending data to the Jaeger collector/agent, network problems, or Jaeger's own sampling configuration dropping spans.
fix
Ensure `JaegerPropagator` is set as the global text map propagator (e.g., `set_global_textmap(CompositePropagator([JaegerPropagator(), W3CTraceContextPropagator()]))`). Verify that the OpenTelemetry exporter (preferably `OtlpSpanExporter` as Jaeger natively supports OTLP) is correctly configured and pointing to the Jaeger agent/collector. Check Jaeger's sampling settings or configure OpenTelemetry's sampler to `AlwaysOn` for testing to ensure all spans are recorded.
JaegerPropagator fails on missing uber-trace-id header
Some older versions or specific implementations of `JaegerPropagator` might not gracefully handle incoming requests that lack the expected `uber-trace-id` header, potentially leading to errors or the creation of invalid span contexts rather than starting a new trace.
fix
Upgrade the `opentelemetry-propagator-jaeger` package to its latest version to benefit from bug fixes and improved error handling. Consider using a `CompositePropagator` that includes `W3CTraceContextPropagator` as a primary and `JaegerPropagator` as a fallback for better robustness in mixed environments or when headers might be inconsistent.
Jaeger propagator deprecated OpenTelemetry Python
The Jaeger native propagation format is officially deprecated in OpenTelemetry in favor of the W3C Trace Context standard, leading users to inquire about its status and potential issues.
fix
For new applications or services that do not need to interoperate with existing legacy Jaeger-instrumented services, it is recommended to use the `W3CTraceContextPropagator`. If interoperability with existing Jaeger services is necessary, `JaegerPropagator` can still be used, but note that the long-term recommendation is to migrate to W3C Trace Context. When exporting traces, use the OpenTelemetry Protocol (OTLP) exporter as Jaeger backends natively support OTLP since version 1.35.
Upgrade
Version history
1.44.0latest on PyPI · released Jul 16, 2026
Audit
Dependencies
opentelemetry-apirequiredRequired by all OpenTelemetry components for core API interfaces.
opentelemetry-sdkoptionalNeeded for a functional OpenTelemetry setup (TracerProvider, etc.).
Agent activity
10 hits · last 30 days
node
8
OpenAI (training)
1
Resources
opentelemetry-propagator-jaeger — pip install opentelemetry-propagator-jaeger · libregistry