open-webui/backend/open_webui/utils/telemetry/setup.py

33 lines
1.1 KiB
Python
Raw Normal View History

from fastapi import FastAPI
2025-03-10 22:27:31 +08:00
from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
from opentelemetry.sdk.trace import TracerProvider
from sqlalchemy import Engine
2025-03-10 22:27:31 +08:00
2025-03-12 02:55:30 +08:00
from open_webui.utils.telemetry.exporters import LazyBatchSpanProcessor
from open_webui.utils.telemetry.instrumentors import Instrumentor
from open_webui.utils.telemetry.metrics import setup_metrics
from open_webui.env import (
OTEL_SERVICE_NAME,
OTEL_EXPORTER_OTLP_ENDPOINT,
ENABLE_OTEL_METRICS,
)
2025-03-10 22:27:31 +08:00
def setup(app: FastAPI, db_engine: Engine):
# set up trace
2025-03-10 22:27:31 +08:00
trace.set_tracer_provider(
TracerProvider(
resource=Resource.create(attributes={SERVICE_NAME: OTEL_SERVICE_NAME})
2025-03-10 22:27:31 +08:00
)
)
# otlp export
exporter = OTLPSpanExporter(endpoint=OTEL_EXPORTER_OTLP_ENDPOINT)
2025-03-10 22:27:31 +08:00
trace.get_tracer_provider().add_span_processor(LazyBatchSpanProcessor(exporter))
Instrumentor(app=app, db_engine=db_engine).instrument()
# set up metrics only if enabled
if ENABLE_OTEL_METRICS:
setup_metrics(app)