mirror of
https://git.linux-kernel.at/oliver/ivatar.git
synced 2025-11-11 18:56:23 +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
|
# Add OpenTelemetry middleware only if feature flag is enabled
|
||||||
# Note: This will be checked at runtime, not at import time
|
# Note: This will be checked at runtime, not at import time
|
||||||
MIDDLEWARE.insert(
|
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.trace_exporter import OTLPSpanExporter
|
||||||
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter
|
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter
|
||||||
from opentelemetry.exporter.prometheus import PrometheusMetricReader
|
from opentelemetry.exporter.prometheus import PrometheusMetricReader
|
||||||
from opentelemetry.instrumentation.django import DjangoInstrumentor
|
|
||||||
from opentelemetry.instrumentation.psycopg2 import Psycopg2Instrumentor
|
from opentelemetry.instrumentation.psycopg2 import Psycopg2Instrumentor
|
||||||
from opentelemetry.instrumentation.pymysql import PyMySQLInstrumentor
|
from opentelemetry.instrumentation.pymysql import PyMySQLInstrumentor
|
||||||
from opentelemetry.instrumentation.requests import RequestsInstrumentor
|
from opentelemetry.instrumentation.requests import RequestsInstrumentor
|
||||||
@@ -163,6 +162,14 @@ class OpenTelemetryConfig:
|
|||||||
|
|
||||||
logger.info(f"Prometheus metrics server started on {host}:{port}")
|
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:
|
except Exception as e:
|
||||||
logger.error(f"Failed to start Prometheus metrics server: {e}")
|
logger.error(f"Failed to start Prometheus metrics server: {e}")
|
||||||
self.enabled = False
|
self.enabled = False
|
||||||
@@ -170,9 +177,9 @@ class OpenTelemetryConfig:
|
|||||||
def setup_instrumentation(self) -> None:
|
def setup_instrumentation(self) -> None:
|
||||||
"""Set up OpenTelemetry instrumentation for various libraries."""
|
"""Set up OpenTelemetry instrumentation for various libraries."""
|
||||||
try:
|
try:
|
||||||
# Django instrumentation
|
# Django instrumentation - TEMPORARILY DISABLED TO TEST HEADER ISSUE
|
||||||
DjangoInstrumentor().instrument()
|
# DjangoInstrumentor().instrument()
|
||||||
logger.info("Django instrumentation enabled")
|
# logger.info("Django instrumentation enabled")
|
||||||
|
|
||||||
# Database instrumentation
|
# Database instrumentation
|
||||||
Psycopg2Instrumentor().instrument()
|
Psycopg2Instrumentor().instrument()
|
||||||
@@ -202,6 +209,7 @@ class OpenTelemetryConfig:
|
|||||||
|
|
||||||
# Global OpenTelemetry configuration instance (lazy-loaded)
|
# Global OpenTelemetry configuration instance (lazy-loaded)
|
||||||
_ot_config = None
|
_ot_config = None
|
||||||
|
_ot_initialized = False
|
||||||
|
|
||||||
|
|
||||||
def get_ot_config():
|
def get_ot_config():
|
||||||
@@ -218,6 +226,12 @@ def setup_opentelemetry() -> None:
|
|||||||
|
|
||||||
This function should be called during Django application startup.
|
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...")
|
logger.info("Setting up OpenTelemetry...")
|
||||||
|
|
||||||
ot_config = get_ot_config()
|
ot_config = get_ot_config()
|
||||||
@@ -230,6 +244,7 @@ def setup_opentelemetry() -> None:
|
|||||||
logger.info("OpenTelemetry setup completed successfully (export enabled)")
|
logger.info("OpenTelemetry setup completed successfully (export enabled)")
|
||||||
else:
|
else:
|
||||||
logger.info("OpenTelemetry setup completed successfully (export disabled)")
|
logger.info("OpenTelemetry setup completed successfully (export disabled)")
|
||||||
|
_ot_initialized = True
|
||||||
else:
|
else:
|
||||||
logger.info("OpenTelemetry setup failed")
|
logger.info("OpenTelemetry setup failed")
|
||||||
|
|
||||||
|
|||||||
@@ -318,7 +318,8 @@ try:
|
|||||||
setup_opentelemetry()
|
setup_opentelemetry()
|
||||||
|
|
||||||
# Add OpenTelemetry middleware (always enabled)
|
# 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):
|
except (ImportError, NameError):
|
||||||
# OpenTelemetry packages not installed or configuration failed
|
# OpenTelemetry packages not installed or configuration failed
|
||||||
pass
|
pass
|
||||||
|
|||||||
Reference in New Issue
Block a user