Skip to content

Commit 71f4007

Browse files
authored
Add aws distro version to sdk.version resource attributes. (#69)
*Issue #, if available:* In Java,` telemetry.auto.version` resource attribute is being deprecated ([PR](open-telemetry/opentelemetry-java-instrumentation#9065)). However, We don't find any related change in upstream. It is still [being used](https://github.com/open-telemetry/opentelemetry-python/blob/da48e0b131ff34ff382b7d1206f71b2e31929cab/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py#L364), so we are not going to deprecate it in aws-opentelemetry-distro for now. And we use `aws-opentlemetry-distro` version with "-aws" post-fix to be the `telemetry.auto.version `, which match with the [Java implementation](https://github.com/aws-observability/aws-otel-java-instrumentation/blob/294e957afbf48e766e3be9a11638050ef3736904/otelagent/build.gradle.kts#L101). Testing: Tested resource attributed are generated: Before the change: ``` "resource": "BoundedAttributes({'telemetry.sdk.language': 'python', 'telemetry.sdk.name': 'opentelemetry', 'telemetry.sdk.version': '1.22.0', 'service.name': 'unknown_service', 'telemetry.auto.version': '0.43b0'}, maxlen=None)" ``` After the change: ``` "resource": "BoundedAttributes({'telemetry.sdk.language': 'python', 'telemetry.sdk.name': 'opentelemetry', 'telemetry.sdk.version': '1.22.0', 'service.name': 'unknown_service', 'telemetry.auto.version':'0.0.1-aws'}, maxlen=None)" ``` By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
1 parent 232ca3e commit 71f4007

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/aws_opentelemetry_configurator.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from logging import Logger, getLogger
55
from typing import ClassVar, Dict, Type
66

7+
from importlib_metadata import version
78
from typing_extensions import override
89

910
from amazon.opentelemetry.distro.always_record_sampler import AlwaysRecordSampler
@@ -80,10 +81,10 @@ class AwsOpenTelemetryConfigurator(_OTelSDKConfigurator):
8081
# pylint: disable=no-self-use
8182
@override
8283
def _configure(self, **kwargs):
83-
_initialize_components(kwargs.get("auto_instrumentation_version"))
84+
_initialize_components()
8485

8586

86-
def _initialize_components(auto_instrumentation_version):
87+
def _initialize_components():
8788
trace_exporters, metric_exporters, log_exporters = _import_exporters(
8889
_get_exporter_names("traces"),
8990
_get_exporter_names("metrics"),
@@ -94,11 +95,9 @@ def _initialize_components(auto_instrumentation_version):
9495
id_generator = _import_id_generator(id_generator_name)
9596
# if env var OTEL_RESOURCE_ATTRIBUTES is given, it will read the service_name
9697
# from the env variable else defaults to "unknown_service"
97-
auto_resource = {}
98-
# populate version if using auto-instrumentation
99-
if auto_instrumentation_version:
100-
auto_resource[ResourceAttributes.TELEMETRY_AUTO_VERSION] = auto_instrumentation_version
10198

99+
auto_resource: Dict[str, any] = {}
100+
auto_resource = _customize_versions(auto_resource)
102101
resource = get_aggregated_resources(
103102
[
104103
AwsEc2ResourceDetector(),
@@ -213,6 +212,13 @@ def _customize_span_processors(provider: TracerProvider, resource: Resource) ->
213212
return
214213

215214

215+
def _customize_versions(auto_resource: Dict[str, any]) -> Dict[str, any]:
216+
distro_version = version("aws-opentelemetry-distro")
217+
auto_resource[ResourceAttributes.TELEMETRY_AUTO_VERSION] = distro_version + "-aws"
218+
_logger.debug("aws-opentelementry-distro - version: %s", auto_resource[ResourceAttributes.TELEMETRY_AUTO_VERSION])
219+
return auto_resource
220+
221+
216222
def is_app_signals_enabled():
217223
return os.environ.get(OTEL_AWS_APP_SIGNALS_ENABLED, False)
218224

0 commit comments

Comments
 (0)