Merge latest devel fixes

This commit is contained in:
Oliver Falk
2025-10-17 16:56:13 +02:00
parent 684cdca4e4
commit 8b2675591e
3 changed files with 21 additions and 8 deletions

View File

@@ -35,9 +35,6 @@ MIDDLEWARE.extend(
]
)
# Add OpenTelemetry middleware (always enabled now)
MIDDLEWARE.insert(0, "ivatar.opentelemetry_middleware.OpenTelemetryMiddleware")
# Add OpenTelemetry middleware only if feature flag is enabled
# Note: This will be checked at runtime, not at import time
MIDDLEWARE.insert(

View File

@@ -18,7 +18,6 @@ from opentelemetry.sdk.resources import Resource
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter
from opentelemetry.exporter.prometheus import PrometheusMetricReader
from opentelemetry.instrumentation.django import DjangoInstrumentor
from opentelemetry.instrumentation.psycopg2 import Psycopg2Instrumentor
from opentelemetry.instrumentation.pymysql import PyMySQLInstrumentor
from opentelemetry.instrumentation.requests import RequestsInstrumentor
@@ -163,6 +162,14 @@ class OpenTelemetryConfig:
logger.info(f"Prometheus metrics server started on {host}:{port}")
except OSError as e:
if e.errno == 98: # Address already in use
logger.warning(
f"Prometheus metrics server already running on {endpoint}"
)
else:
logger.error(f"Failed to start Prometheus metrics server: {e}")
self.enabled = False
except Exception as e:
logger.error(f"Failed to start Prometheus metrics server: {e}")
self.enabled = False
@@ -170,9 +177,9 @@ class OpenTelemetryConfig:
def setup_instrumentation(self) -> None:
"""Set up OpenTelemetry instrumentation for various libraries."""
try:
# Django instrumentation
DjangoInstrumentor().instrument()
logger.info("Django instrumentation enabled")
# Django instrumentation - TEMPORARILY DISABLED TO TEST HEADER ISSUE
# DjangoInstrumentor().instrument()
# logger.info("Django instrumentation enabled")
# Database instrumentation
Psycopg2Instrumentor().instrument()
@@ -202,6 +209,7 @@ class OpenTelemetryConfig:
# Global OpenTelemetry configuration instance (lazy-loaded)
_ot_config = None
_ot_initialized = False
def get_ot_config():
@@ -218,6 +226,12 @@ def setup_opentelemetry() -> None:
This function should be called during Django application startup.
"""
global _ot_initialized
if _ot_initialized:
logger.debug("OpenTelemetry already initialized, skipping setup")
return
logger.info("Setting up OpenTelemetry...")
ot_config = get_ot_config()
@@ -230,6 +244,7 @@ def setup_opentelemetry() -> None:
logger.info("OpenTelemetry setup completed successfully (export enabled)")
else:
logger.info("OpenTelemetry setup completed successfully (export disabled)")
_ot_initialized = True
else:
logger.info("OpenTelemetry setup failed")

View File

@@ -318,7 +318,8 @@ try:
setup_opentelemetry()
# Add OpenTelemetry middleware (always enabled)
MIDDLEWARE.append("ivatar.opentelemetry_middleware.OpenTelemetryMiddleware")
# TODO: Need to reenable this again!
# MIDDLEWARE.append("ivatar.opentelemetry_middleware.OpenTelemetryMiddleware")
except (ImportError, NameError):
# OpenTelemetry packages not installed or configuration failed
pass