mirror of
https://git.linux-kernel.at/oliver/ivatar.git
synced 2025-11-11 10:46:24 +00:00
Merge branch 'devel' into 'master'
Merge latest devel fixes See merge request oliver/ivatar!268
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user