Jaeger Protobuf gRPC Exporter for OpenTelemetry

1.21.0 · active · verified Mon Apr 13

This library provides an OpenTelemetry trace exporter for Jaeger, specifically utilizing the Protobuf format over gRPC. It's part of the OpenTelemetry Python Contrib project. The current version is 1.21.0. New releases are frequent and typically align with the broader OpenTelemetry Python SDK release cycle.

Warnings

Install

Imports

Quickstart

This example demonstrates how to configure the OpenTelemetry SDK with the Jaeger Protobuf gRPC exporter. It sets up a TracerProvider, creates a JaegerExporter targeting a specified endpoint (defaulting to localhost:14250), and exports two simple spans. Ensure a Jaeger agent or collector is running and accessible at the configured endpoint.

import os

from opentelemetry import trace
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.jaeger.proto.grpc import JaegerExporter

# Configure tracing
resource = Resource.create({"service.name": os.environ.get("SERVICE_NAME", "my-python-app")})
tracer_provider = TracerProvider(resource=resource)

# Configure Jaeger Exporter (default endpoint: localhost:14250 for gRPC)
# Use OTEL_EXPORTER_JAEGER_ENDPOINT environment variable or endpoint param
jaeger_endpoint = os.environ.get("OTEL_EXPORTER_JAEGER_ENDPOINT", "localhost:14250")
jaeger_exporter = JaegerExporter(endpoint=jaeger_endpoint)

# Add the exporter to a BatchSpanProcessor and set it as the global tracer provider
span_processor = BatchSpanProcessor(jaeger_exporter)
tracer_provider.add_span_processor(span_processor)
trace.set_tracer_provider(tracer_provider)

# Get a tracer and create a span
tracer = trace.get_tracer(__name__)

with tracer.start_as_current_span("my-first-span"):
    with tracer.start_as_current_span("my-nested-span"):
        print("Hello from OpenTelemetry with Jaeger!")

# Manually shut down the tracer provider to ensure all spans are exported
tracer_provider.shutdown()
print(f"Traces exported to Jaeger endpoint: {jaeger_endpoint}")

view raw JSON →