From b525c0f42fb5a58666cdd0e6f1d67609f9375fe0 Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Mon, 10 Mar 2025 19:30:34 +0000 Subject: [PATCH] Add customizer to auto instrumentation code. --- opentelemetry-distro/pyproject.toml | 3 +++ .../src/opentelemetry/distro/__init__.py | 3 +++ .../instrumentation/auto_instrumentation/_load.py | 12 +++++++++++- .../instrumentation/environment_variables.py | 4 ++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/opentelemetry-distro/pyproject.toml b/opentelemetry-distro/pyproject.toml index b1946ecdc5..c6c1d85184 100644 --- a/opentelemetry-distro/pyproject.toml +++ b/opentelemetry-distro/pyproject.toml @@ -40,6 +40,9 @@ otlp = [ [project.entry-points.opentelemetry_configurator] configurator = "opentelemetry.distro:OpenTelemetryConfigurator" +[project.entry-points.opentelemetry_customizer] +customizer = "opentelemetry.distro:OpenTelemetryCustomizer" + [project.entry-points.opentelemetry_distro] distro = "opentelemetry.distro:OpenTelemetryDistro" diff --git a/opentelemetry-distro/src/opentelemetry/distro/__init__.py b/opentelemetry-distro/src/opentelemetry/distro/__init__.py index 474c2db239..1c3dd5a9ee 100644 --- a/opentelemetry-distro/src/opentelemetry/distro/__init__.py +++ b/opentelemetry-distro/src/opentelemetry/distro/__init__.py @@ -19,6 +19,7 @@ OTEL_METRICS_EXPORTER, OTEL_TRACES_EXPORTER, ) +from opentelemetry.sdk._config_customizer import _BaseConfiguratorCustomizer from opentelemetry.instrumentation.distro import BaseDistro from opentelemetry.sdk._configuration import _OTelSDKConfigurator from opentelemetry.sdk.environment_variables import OTEL_EXPORTER_OTLP_PROTOCOL @@ -27,6 +28,8 @@ class OpenTelemetryConfigurator(_OTelSDKConfigurator): pass +class OpenTelemetryCustomizer(_BaseConfiguratorCustomizer): + pass class OpenTelemetryDistro(BaseDistro): """ diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py index 3d602b2a1d..25a16722e9 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py @@ -23,6 +23,7 @@ from opentelemetry.instrumentation.environment_variables import ( OTEL_PYTHON_CONFIGURATOR, OTEL_PYTHON_DISABLED_INSTRUMENTATIONS, + OTEL_PYTHON_CUSTOMIZER, OTEL_PYTHON_DISTRO, ) from opentelemetry.instrumentation.version import __version__ @@ -133,6 +134,14 @@ def _load_instrumentors(distro): def _load_configurators(): + customizer = None + if environ.get(OTEL_PYTHON_CUSTOMIZER, None): + for entry_point in entry_points( + group="opentelemetry_customizer", + name=environ.get(OTEL_PYTHON_CUSTOMIZER), + ): + customizer = entry_point.load()() + break configurator_name = environ.get(OTEL_PYTHON_CONFIGURATOR, None) configured = None for entry_point in entry_points(group="opentelemetry_configurator"): @@ -149,7 +158,8 @@ def _load_configurators(): or configurator_name == entry_point.name ): entry_point.load()().configure( - auto_instrumentation_version=__version__ + auto_instrumentation_version=__version__, + customizer=customizer, ) # type: ignore configured = entry_point.name else: diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/environment_variables.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/environment_variables.py index 7886779632..bf1762d6f6 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/environment_variables.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/environment_variables.py @@ -26,3 +26,7 @@ """ .. envvar:: OTEL_PYTHON_CONFIGURATOR """ +OTEL_PYTHON_CUSTOMIZER = "OTEL_PYTHON_CUSTOMIZER" +""" +.. envvar:: OTEL_PYTHON_CUSTOMIZER +""" \ No newline at end of file