diff --git a/backend/open_webui/utils/telemetry/exporters.py b/backend/open_webui/utils/telemetry/exporters.py deleted file mode 100644 index 4bf166e655..0000000000 --- a/backend/open_webui/utils/telemetry/exporters.py +++ /dev/null @@ -1,31 +0,0 @@ -import threading - -from opentelemetry.sdk.trace import ReadableSpan -from opentelemetry.sdk.trace.export import BatchSpanProcessor - - -class LazyBatchSpanProcessor(BatchSpanProcessor): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.done = True - with self.condition: - self.condition.notify_all() - self.worker_thread.join() - self.done = False - self.worker_thread = None - - def on_end(self, span: ReadableSpan) -> None: - if self.worker_thread is None: - self.worker_thread = threading.Thread( - name=self.__class__.__name__, target=self.worker, daemon=True - ) - self.worker_thread.start() - super().on_end(span) - - def shutdown(self) -> None: - self.done = True - with self.condition: - self.condition.notify_all() - if self.worker_thread: - self.worker_thread.join() - self.span_exporter.shutdown() diff --git a/backend/open_webui/utils/telemetry/setup.py b/backend/open_webui/utils/telemetry/setup.py index 4eed64dec4..80beec0bbb 100644 --- a/backend/open_webui/utils/telemetry/setup.py +++ b/backend/open_webui/utils/telemetry/setup.py @@ -1,15 +1,16 @@ from fastapi import FastAPI from opentelemetry import trace + from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter from opentelemetry.exporter.otlp.proto.http.trace_exporter import ( OTLPSpanExporter as HttpOTLPSpanExporter, ) from opentelemetry.sdk.resources import SERVICE_NAME, Resource from opentelemetry.sdk.trace import TracerProvider +from opentelemetry.sdk.trace.export import BatchSpanProcessor from sqlalchemy import Engine from base64 import b64encode -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 ( @@ -50,7 +51,7 @@ def setup(app: FastAPI, db_engine: Engine): insecure=OTEL_EXPORTER_OTLP_INSECURE, headers=headers, ) - trace.get_tracer_provider().add_span_processor(LazyBatchSpanProcessor(exporter)) + trace.get_tracer_provider().add_span_processor(BatchSpanProcessor(exporter)) Instrumentor(app=app, db_engine=db_engine).instrument() # set up metrics only if enabled