MCPcopy Create free account
hub / github.com/promptfoo/promptfoo / _init_tracing

Function _init_tracing

src/python/persistent_wrapper.py:40–81  ·  view source on GitHub ↗

Initialize OpenTelemetry tracing if enabled and packages are available.

()

Source from the content-addressed store, hash-verified

38
39
40def _init_tracing():
41 """Initialize OpenTelemetry tracing if enabled and packages are available."""
42 global _tracer, _tracing_enabled
43
44 if os.getenv("PROMPTFOO_ENABLE_OTEL", "").lower() not in ("true", "1", "yes"):
45 return
46
47 try:
48 from opentelemetry import trace
49 from opentelemetry.exporter.otlp.proto.http.trace_exporter import (
50 OTLPSpanExporter,
51 )
52 from opentelemetry.sdk.trace import TracerProvider
53 from opentelemetry.sdk.trace.export import SimpleSpanProcessor
54
55 # Get endpoint from environment or use default Promptfoo OTLP receiver
56 base_endpoint = os.getenv(
57 "OTEL_EXPORTER_OTLP_ENDPOINT", "http://localhost:4318"
58 )
59 endpoint = f"{base_endpoint.rstrip('/')}/v1/traces"
60
61 provider = TracerProvider()
62 exporter = OTLPSpanExporter(endpoint=endpoint)
63 provider.add_span_processor(SimpleSpanProcessor(exporter))
64 trace.set_tracer_provider(provider)
65
66 _tracer = trace.get_tracer("promptfoo.python.provider")
67 _tracing_enabled = True
68
69 except ImportError:
70 print(
71 "[PythonProvider] OpenTelemetry packages not installed, tracing disabled. "
72 "Install with: pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-http",
73 file=sys.stderr,
74 flush=True,
75 )
76 except Exception as e:
77 print(
78 f"[PythonProvider] Failed to initialize tracing: {e}",
79 file=sys.stderr,
80 flush=True,
81 )
82
83
84# Initialize tracing at module load

Callers 1

Calls 2

getenvMethod · 0.80
add_span_processorMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…