aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/azure/monitor/opentelemetry/_autoinstrumentation/distro.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/azure/monitor/opentelemetry/_autoinstrumentation/distro.py')
-rw-r--r--.venv/lib/python3.12/site-packages/azure/monitor/opentelemetry/_autoinstrumentation/distro.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/azure/monitor/opentelemetry/_autoinstrumentation/distro.py b/.venv/lib/python3.12/site-packages/azure/monitor/opentelemetry/_autoinstrumentation/distro.py
new file mode 100644
index 00000000..a8d1a5b8
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/azure/monitor/opentelemetry/_autoinstrumentation/distro.py
@@ -0,0 +1,64 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from os import environ
+from warnings import warn
+
+from opentelemetry.instrumentation.distro import ( # type: ignore
+ BaseDistro,
+)
+from opentelemetry.sdk.environment_variables import (
+ _OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED,
+ OTEL_EXPERIMENTAL_RESOURCE_DETECTORS,
+)
+
+from azure.core.settings import settings
+from azure.core.tracing.ext.opentelemetry_span import OpenTelemetrySpan
+from azure.monitor.opentelemetry.exporter._utils import ( # pylint: disable=import-error,no-name-in-module
+ _is_attach_enabled,
+)
+from azure.monitor.opentelemetry._constants import (
+ _AZURE_APP_SERVICE_RESOURCE_DETECTOR_NAME,
+ _AZURE_SDK_INSTRUMENTATION_NAME,
+ _PREVIEW_ENTRY_POINT_WARNING,
+)
+from azure.monitor.opentelemetry._diagnostics.diagnostic_logging import (
+ AzureDiagnosticLogging,
+ _ATTACH_FAILURE_DISTRO,
+ _ATTACH_SUCCESS_DISTRO,
+)
+from azure.monitor.opentelemetry._diagnostics.status_logger import (
+ AzureStatusLogger,
+)
+from azure.monitor.opentelemetry._utils.configurations import (
+ _get_otel_disabled_instrumentations,
+)
+
+
+class AzureMonitorDistro(BaseDistro):
+ def _configure(self, **kwargs) -> None:
+ if not _is_attach_enabled():
+ warn(_PREVIEW_ENTRY_POINT_WARNING)
+ try:
+ _configure_auto_instrumentation()
+ AzureStatusLogger.log_status(True)
+ AzureDiagnosticLogging.info(
+ "Azure Monitor OpenTelemetry Distro configured successfully.", _ATTACH_SUCCESS_DISTRO
+ )
+ except Exception as e:
+ AzureStatusLogger.log_status(False, reason=str(e))
+ AzureDiagnosticLogging.error( # pylint: disable=C
+ "Azure Monitor OpenTelemetry Distro failed during configuration: %s" % str(e),
+ _ATTACH_FAILURE_DISTRO,
+ )
+ raise e
+
+
+def _configure_auto_instrumentation() -> None:
+ environ.setdefault(_OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED, "true")
+ environ.setdefault(OTEL_EXPERIMENTAL_RESOURCE_DETECTORS, _AZURE_APP_SERVICE_RESOURCE_DETECTOR_NAME)
+ otel_disabled_instrumentations = _get_otel_disabled_instrumentations()
+ if _AZURE_SDK_INSTRUMENTATION_NAME not in otel_disabled_instrumentations:
+ settings.tracing_implementation = OpenTelemetrySpan