From 89699617c486a23f01c3a10947a9f21ed076b0ff Mon Sep 17 00:00:00 2001 From: jeremydvoss Date: Thu, 18 Apr 2024 16:07:35 -0700 Subject: [PATCH 1/2] Auto instrumentation paramaters proposal --- .../src/opentelemetry/distro/__init__.py | 14 ++++++++++++++ .../instrumentation/auto_instrumentation/_load.py | 5 +++-- .../auto_instrumentation/sitecustomize.py | 4 ++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/opentelemetry-distro/src/opentelemetry/distro/__init__.py b/opentelemetry-distro/src/opentelemetry/distro/__init__.py index ad61f01ca7..6f6e5e7237 100644 --- a/opentelemetry-distro/src/opentelemetry/distro/__init__.py +++ b/opentelemetry-distro/src/opentelemetry/distro/__init__.py @@ -38,3 +38,17 @@ def _configure(self, **kwargs): os.environ.setdefault(OTEL_TRACES_EXPORTER, "otlp") os.environ.setdefault(OTEL_METRICS_EXPORTER, "otlp") os.environ.setdefault(OTEL_EXPORTER_OTLP_PROTOCOL, "grpc") + # Since the distro sets these env vars, these params are not necesary. + # However they could replace these env var defaults. + # Otherwise, they just serve as an example. + configuration_kwargs = { + # Could be trace_exporters or span_exporters + "span_exporter_names": ("otlp"), + "metric_exporter_names": ("otlp"), + "log_exporter_names": ("otlp"), + "sampler_name": None, + # Could be attribute dict or Resource object + "resource_attributes": {}, + # Could be string or bool + "logging_enabled": False, + } diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py index 27b57da3ef..4a42d357aa 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py @@ -94,7 +94,8 @@ def _load_instrumentors(distro): entry_point.load()() -def _load_configurators(): +def _load_configurators(**configuration_kwargs): + configuration_kwargs["auto_instrumentation_version"] =__version__ configurator_name = environ.get(OTEL_PYTHON_CONFIGURATOR, None) configured = None for entry_point in iter_entry_points("opentelemetry_configurator"): @@ -110,7 +111,7 @@ def _load_configurators(): configurator_name is None or configurator_name == entry_point.name ): - entry_point.load()().configure(auto_instrumentation_version=__version__) # type: ignore + entry_point.load()().configure(**configuration_kwargs) # type: ignore configured = entry_point.name else: _logger.warning( diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/sitecustomize.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/sitecustomize.py index 912675f1b7..17d5b15046 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/sitecustomize.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/sitecustomize.py @@ -34,8 +34,8 @@ def initialize(): try: distro = _load_distro() - distro.configure() - _load_configurators() + configuration_kwargs = distro.configure() + _load_configurators(**configuration_kwargs) _load_instrumentors(distro) except Exception: # pylint: disable=broad-except logger.exception("Failed to auto initialize opentelemetry") From ffd531c0157983139561951d780eea552e1a7daa Mon Sep 17 00:00:00 2001 From: jeremydvoss Date: Wed, 8 May 2024 14:49:41 -0700 Subject: [PATCH 2/2] Instead of changing base distro functionality, just passing {} --- .../src/opentelemetry/distro/__init__.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/opentelemetry-distro/src/opentelemetry/distro/__init__.py b/opentelemetry-distro/src/opentelemetry/distro/__init__.py index 6f6e5e7237..e38271bd52 100644 --- a/opentelemetry-distro/src/opentelemetry/distro/__init__.py +++ b/opentelemetry-distro/src/opentelemetry/distro/__init__.py @@ -41,14 +41,5 @@ def _configure(self, **kwargs): # Since the distro sets these env vars, these params are not necesary. # However they could replace these env var defaults. # Otherwise, they just serve as an example. - configuration_kwargs = { - # Could be trace_exporters or span_exporters - "span_exporter_names": ("otlp"), - "metric_exporter_names": ("otlp"), - "log_exporter_names": ("otlp"), - "sampler_name": None, - # Could be attribute dict or Resource object - "resource_attributes": {}, - # Could be string or bool - "logging_enabled": False, - } + configuration_kwargs = {} + return configuration_kwargs