From 16fb9006143fa6d94d626fc9def0e99ecb75227f Mon Sep 17 00:00:00 2001 From: MKamel <151730767+MKamelEJ@users.noreply.github.com> Date: Thu, 19 Jun 2025 01:10:01 +0300 Subject: [PATCH 1/3] Add Ability to use OTEL http exporter --- backend/open_webui/utils/telemetry/setup.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/utils/telemetry/setup.py b/backend/open_webui/utils/telemetry/setup.py index 62632cff5..23dbc4683 100644 --- a/backend/open_webui/utils/telemetry/setup.py +++ b/backend/open_webui/utils/telemetry/setup.py @@ -1,6 +1,7 @@ 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 sqlalchemy import Engine @@ -12,6 +13,7 @@ from open_webui.env import ( OTEL_SERVICE_NAME, OTEL_EXPORTER_OTLP_ENDPOINT, ENABLE_OTEL_METRICS, + USE_OTEL_HTTP_EXPORTER ) @@ -23,7 +25,7 @@ def setup(app: FastAPI, db_engine: Engine): ) ) # otlp export - exporter = OTLPSpanExporter(endpoint=OTEL_EXPORTER_OTLP_ENDPOINT) + exporter = if USE_OTEL_HTTP_EXPORTER HttpOTLPSpanExporter(endpoint=OTEL_EXPORTER_OTLP_ENDPOINT) else OTLPSpanExporter(endpoint=OTEL_EXPORTER_OTLP_ENDPOINT) trace.get_tracer_provider().add_span_processor(LazyBatchSpanProcessor(exporter)) Instrumentor(app=app, db_engine=db_engine).instrument() From 0f24fbb78e000dd8766a5cfa738bcbb7e477b449 Mon Sep 17 00:00:00 2001 From: MKamel <151730767+MKamelEJ@users.noreply.github.com> Date: Thu, 19 Jun 2025 01:12:06 +0300 Subject: [PATCH 2/3] Add new env variable USE_OTEL_HTTP_EXPORTER --- backend/open_webui/env.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index 0f7b5611f..6aa1181c1 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -539,6 +539,7 @@ AUDIT_EXCLUDED_PATHS = [path.lstrip("/") for path in AUDIT_EXCLUDED_PATHS] #################################### ENABLE_OTEL = os.environ.get("ENABLE_OTEL", "False").lower() == "true" +USE_OTEL_HTTP_EXPORTER = os.environ.get("USE_OTEL_HTTP_EXPORTER", "False").lower() == "true" ENABLE_OTEL_METRICS = os.environ.get("ENABLE_OTEL_METRICS", "False").lower() == "true" OTEL_EXPORTER_OTLP_ENDPOINT = os.environ.get( "OTEL_EXPORTER_OTLP_ENDPOINT", "http://localhost:4317" From 4eb9597bb08b9e3e5aa7431d8233af701c73fcde Mon Sep 17 00:00:00 2001 From: MKamel <151730767+MKamelEJ@users.noreply.github.com> Date: Thu, 19 Jun 2025 01:29:04 +0300 Subject: [PATCH 3/3] Fix Typo in usage of exporter --- backend/open_webui/utils/telemetry/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/utils/telemetry/setup.py b/backend/open_webui/utils/telemetry/setup.py index e523cf853..f6d0513a8 100644 --- a/backend/open_webui/utils/telemetry/setup.py +++ b/backend/open_webui/utils/telemetry/setup.py @@ -38,7 +38,7 @@ def setup(app: FastAPI, db_engine: Engine): # otlp export if USE_OTEL_HTTP_EXPORTER: - exporter = OTLPSpanExporter( + exporter = HttpOTLPSpanExporter( endpoint=OTEL_EXPORTER_OTLP_ENDPOINT, insecure=OTEL_EXPORTER_OTLP_INSECURE, headers=headers,