teoat
deploy: sync from main Sun Jan 11 18:43:53 WIT 2026
4a2ab42
from opentelemetry import trace
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
from opentelemetry.instrumentation.logging import LoggingInstrumentor
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter
def setup_opentelemetry(app):
"""
Sets up OpenTelemetry tracing for the application.
"""
provider = TracerProvider()
# In a real deployment, we'd use OTLPSpanExporter to send to Jaeger/Tempo
# exporter = OTLPSpanExporter(endpoint="http://localhost:4317")
exporter = ConsoleSpanExporter() # For demo/local debugging
processor = BatchSpanProcessor(exporter)
provider.add_span_processor(processor)
trace.set_tracer_provider(provider)
# Instrument FastAPI
FastAPIInstrumentor.instrument_app(app)
# Instrument Logging
LoggingInstrumentor().instrument(set_logging_format=True)
return provider