Skip to content

Commit 40c37bc

Browse files
committed
Remove spans with ec2 metadata ip address from metrics
1 parent 2740c56 commit 40c37bc

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsSpanMetricsProcessor.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import static io.opentelemetry.semconv.SemanticAttributes.HTTP_RESPONSE_STATUS_CODE;
1919
import static io.opentelemetry.semconv.SemanticAttributes.HTTP_STATUS_CODE;
20+
import static software.amazon.opentelemetry.javaagent.providers.AwsAttributeKeys.AWS_REMOTE_SERVICE;
2021
import static software.amazon.opentelemetry.javaagent.providers.AwsSpanProcessingUtil.isKeyPresent;
2122

2223
import io.opentelemetry.api.common.Attributes;
@@ -61,6 +62,10 @@ public final class AwsSpanMetricsProcessor implements SpanProcessor {
6162
private static final int FAULT_CODE_LOWER_BOUND = 500;
6263
private static final int FAULT_CODE_UPPER_BOUND = 599;
6364

65+
// EC2 Metadata API IP Address
66+
// https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html#instancedata-inside-access
67+
private final String EC2_METADATA_API_IP = "169.254.169.254";
68+
6469
// Metric instruments
6570
private final LongHistogram errorHistogram;
6671
private final LongHistogram faultHistogram;
@@ -117,8 +122,10 @@ public void onEnd(ReadableSpan span) {
117122
Map<String, Attributes> attributeMap =
118123
generator.generateMetricAttributeMapFromSpan(spanData, resource);
119124

120-
for (Map.Entry<String, Attributes> attribute : attributeMap.entrySet()) {
121-
recordMetrics(span, spanData, attribute.getValue());
125+
if (!isEc2MetadataSpan(attributeMap)) {
126+
for (Map.Entry<String, Attributes> attribute : attributeMap.entrySet()) {
127+
recordMetrics(span, spanData, attribute.getValue());
128+
}
122129
}
123130
}
124131

@@ -177,4 +184,18 @@ private void recordMetrics(ReadableSpan span, SpanData spanData, Attributes attr
177184
recordLatency(span, attributes);
178185
}
179186
}
187+
188+
private boolean isEc2MetadataSpan(Map<String, Attributes> attributeMap) {
189+
if (attributeMap.get(MetricAttributeGenerator.DEPENDENCY_METRIC) != null
190+
&& attributeMap.get(MetricAttributeGenerator.DEPENDENCY_METRIC).get(AWS_REMOTE_SERVICE)
191+
!= null
192+
&& attributeMap
193+
.get(MetricAttributeGenerator.DEPENDENCY_METRIC)
194+
.get(AWS_REMOTE_SERVICE)
195+
.equals(EC2_METADATA_API_IP)) {
196+
return true;
197+
}
198+
199+
return false;
200+
}
180201
}

0 commit comments

Comments
 (0)