From b9fbf3730870ea3f589fb0bea51a690f21aeb7e6 Mon Sep 17 00:00:00 2001 From: Oliver Falk Date: Sat, 18 Oct 2025 12:30:37 +0200 Subject: [PATCH] Get OTEL fixed --- ivatar/opentelemetry_config.py | 30 +++++++++++++++--------------- ivatar/settings.py | 3 +-- ivatar/test_opentelemetry.py | 4 +--- 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/ivatar/opentelemetry_config.py b/ivatar/opentelemetry_config.py index 5fc32f9..33db6be 100644 --- a/ivatar/opentelemetry_config.py +++ b/ivatar/opentelemetry_config.py @@ -73,26 +73,26 @@ class OpenTelemetryConfig: def setup_tracing(self) -> None: """Set up OpenTelemetry tracing.""" try: + # Only set up tracing if export is enabled + if not self.export_enabled: + logger.info("OpenTelemetry tracing disabled (export disabled)") + return + # Set up tracer provider trace.set_tracer_provider(TracerProvider(resource=self.resource)) tracer_provider = trace.get_tracer_provider() - # Configure OTLP exporter if export is enabled and endpoint is provided - if self.export_enabled: - otlp_endpoint = os.environ.get("OTEL_EXPORTER_OTLP_ENDPOINT") - if otlp_endpoint: - otlp_exporter = OTLPSpanExporter(endpoint=otlp_endpoint) - span_processor = BatchSpanProcessor(otlp_exporter) - tracer_provider.add_span_processor(span_processor) - logger.info( - f"OpenTelemetry tracing configured with OTLP endpoint: {otlp_endpoint}" - ) - else: - logger.info( - "OpenTelemetry tracing configured without OTLP endpoint" - ) + # Configure OTLP exporter if endpoint is provided + otlp_endpoint = os.environ.get("OTEL_EXPORTER_OTLP_ENDPOINT") + if otlp_endpoint: + otlp_exporter = OTLPSpanExporter(endpoint=otlp_endpoint) + span_processor = BatchSpanProcessor(otlp_exporter) + tracer_provider.add_span_processor(span_processor) + logger.info( + f"OpenTelemetry tracing configured with OTLP endpoint: {otlp_endpoint}" + ) else: - logger.info("OpenTelemetry tracing configured (export disabled)") + logger.info("OpenTelemetry tracing configured without OTLP endpoint") except Exception as e: logger.error(f"Failed to setup OpenTelemetry tracing: {e}") diff --git a/ivatar/settings.py b/ivatar/settings.py index 1be0c9d..3c28237 100644 --- a/ivatar/settings.py +++ b/ivatar/settings.py @@ -318,8 +318,7 @@ try: setup_opentelemetry() # Add OpenTelemetry middleware (always enabled) - # TODO: Need to reenable this again! - # MIDDLEWARE.append("ivatar.opentelemetry_middleware.OpenTelemetryMiddleware") + MIDDLEWARE.append("ivatar.opentelemetry_middleware.OpenTelemetryMiddleware") except (ImportError, NameError): # OpenTelemetry packages not installed or configuration failed pass diff --git a/ivatar/test_opentelemetry.py b/ivatar/test_opentelemetry.py index 879c7d5..a8d38f3 100644 --- a/ivatar/test_opentelemetry.py +++ b/ivatar/test_opentelemetry.py @@ -142,7 +142,6 @@ class OpenTelemetryConfigTest(TestCase): mock_periodic_reader.assert_called_once() mock_metrics.set_meter_provider.assert_called_once() - @patch("ivatar.opentelemetry_config.DjangoInstrumentor") @patch("ivatar.opentelemetry_config.Psycopg2Instrumentor") @patch("ivatar.opentelemetry_config.PyMySQLInstrumentor") @patch("ivatar.opentelemetry_config.RequestsInstrumentor") @@ -153,7 +152,6 @@ class OpenTelemetryConfigTest(TestCase): mock_requests, mock_pymysql, mock_psycopg2, - mock_django, ): """Test instrumentation setup.""" os.environ["OTEL_ENABLED"] = "true" @@ -161,7 +159,7 @@ class OpenTelemetryConfigTest(TestCase): config = OpenTelemetryConfig() config.setup_instrumentation() - mock_django().instrument.assert_called_once() + # DjangoInstrumentor is no longer used, so we don't test it mock_psycopg2().instrument.assert_called_once() mock_pymysql().instrument.assert_called_once() mock_requests().instrument.assert_called_once()