MMaDA
/
venv
/lib
/python3.11
/site-packages
/sentry_sdk
/integrations
/opentelemetry
/integration.py
""" | |
IMPORTANT: The contents of this file are part of a proof of concept and as such | |
are experimental and not suitable for production use. They may be changed or | |
removed at any time without prior notice. | |
""" | |
from sentry_sdk.integrations import DidNotEnable, Integration | |
from sentry_sdk.integrations.opentelemetry.propagator import SentryPropagator | |
from sentry_sdk.integrations.opentelemetry.span_processor import SentrySpanProcessor | |
from sentry_sdk.utils import logger | |
try: | |
from opentelemetry import trace | |
from opentelemetry.propagate import set_global_textmap | |
from opentelemetry.sdk.trace import TracerProvider | |
except ImportError: | |
raise DidNotEnable("opentelemetry not installed") | |
try: | |
from opentelemetry.instrumentation.django import DjangoInstrumentor # type: ignore[import-not-found] | |
except ImportError: | |
DjangoInstrumentor = None | |
CONFIGURABLE_INSTRUMENTATIONS = { | |
DjangoInstrumentor: {"is_sql_commentor_enabled": True}, | |
} | |
class OpenTelemetryIntegration(Integration): | |
identifier = "opentelemetry" | |
def setup_once(): | |
# type: () -> None | |
logger.warning( | |
"[OTel] Initializing highly experimental OpenTelemetry support. " | |
"Use at your own risk." | |
) | |
_setup_sentry_tracing() | |
# _setup_instrumentors() | |
logger.debug("[OTel] Finished setting up OpenTelemetry integration") | |
def _setup_sentry_tracing(): | |
# type: () -> None | |
provider = TracerProvider() | |
provider.add_span_processor(SentrySpanProcessor()) | |
trace.set_tracer_provider(provider) | |
set_global_textmap(SentryPropagator()) | |
def _setup_instrumentors(): | |
# type: () -> None | |
for instrumentor, kwargs in CONFIGURABLE_INSTRUMENTATIONS.items(): | |
instrumentor().instrument(**kwargs) | |