Skip to content

Commit 36bde05

Browse files
committed
prefix AWS.SDK to the RemoteService for AWS SDK spans
1 parent 71f4007 commit 36bde05

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
is_local_root,
3232
should_generate_dependency_metric_attributes,
3333
should_generate_service_metric_attributes,
34+
is_aws_sdk_span,
3435
)
3536
from amazon.opentelemetry.distro.metric_attribute_generator import (
3637
DEPENDENCY_METRIC,
@@ -268,11 +269,10 @@ def _get_db_statement_remote_operation(span: ReadableSpan, statement_key: str) -
268269

269270

270271
def _normalize_service_name(span: ReadableSpan, service_name: str) -> str:
271-
"""
272-
TODO: Determine if problems in Java instrumentation are relevant here. Do we need normalization? If so, probably we
273-
are looking for boto, not aws-sdk
274-
"""
275-
return service_name
272+
if is_aws_sdk_span(span):
273+
return "AWS.SDK." + service_name
274+
275+
return service_name;
276276

277277

278278
def _generate_remote_service(span: ReadableSpan) -> str:

aws-opentelemetry-distro/tests/amazon/opentelemetry/distro/test_aws_metric_attribute_generator.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,28 @@ def test_both_metric_when_local_root_consumer_process(self):
674674
self.assertIsNotNone(service_attributes)
675675
self.assertIsNotNone(dependency_attributes)
676676

677+
def test_normalize_service_name_non_aws_sdk_span(self):
678+
service_name: str = "non aws service";
679+
self._mock_attribute([SpanAttributes.RPC_SERVICE], [service_name])
680+
self.span_mock.kind = SpanKind.CLIENT
681+
682+
actual_attributes: Attributes = _GENERATOR.generate_metric_attributes_dict_from_span(
683+
self.span_mock, self.resource
684+
).get(DEPENDENCY_METRIC)
685+
self.assertEqual(actual_attributes.get(AWS_REMOTE_SERVICE), service_name)
686+
687+
def test_normalize_service_name_aws_sdk_span(self):
688+
self._mock_attribute(
689+
[SpanAttributes.RPC_SYSTEM, SpanAttributes.RPC_SERVICE],
690+
["aws-api", "EC2"]
691+
)
692+
self.span_mock.kind = SpanKind.CLIENT
693+
694+
actual_attributes: Attributes = _GENERATOR.generate_metric_attributes_dict_from_span(
695+
self.span_mock, self.resource
696+
).get(DEPENDENCY_METRIC)
697+
self.assertEqual(actual_attributes.get(AWS_REMOTE_SERVICE), "AWS.SDK.EC2")
698+
677699
def _update_resource_with_service_name(self) -> None:
678700
self.resource: Resource = Resource(attributes={SERVICE_NAME: _SERVICE_NAME_VALUE})
679701

0 commit comments

Comments
 (0)