Skip to content

Commit 57df452

Browse files
committed
add db client metrics for dynamo db
1 parent 7ae8069 commit 57df452

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkInstrumenterFactory.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.opentelemetry.api.common.AttributesBuilder;
1515
import io.opentelemetry.api.trace.Span;
1616
import io.opentelemetry.context.Context;
17+
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientMetrics;
1718
import io.opentelemetry.instrumentation.api.incubator.semconv.messaging.MessageOperation;
1819
import io.opentelemetry.instrumentation.api.incubator.semconv.messaging.MessagingAttributesExtractor;
1920
import io.opentelemetry.instrumentation.api.incubator.semconv.messaging.MessagingAttributesGetter;
@@ -27,6 +28,7 @@
2728
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesExtractor;
2829
import java.util.ArrayList;
2930
import java.util.Arrays;
31+
import java.util.Collections;
3032
import java.util.List;
3133
import javax.annotation.Nullable;
3234

@@ -189,13 +191,12 @@ Instrumenter<Request<?>, Response<?>> producerInstrumenter() {
189191
Instrumenter<Request<?>, Response<?>> dynamoDbInstrumenter() {
190192
DynamoDbAttributesExtractor dynamoDbAttributesExtractor = new DynamoDbAttributesExtractor();
191193

192-
return createInstrumenter(
193-
openTelemetry,
194-
spanName,
195-
SpanKindExtractor.alwaysClient(),
196-
attributesExtractors(),
197-
singletonList(dynamoDbAttributesExtractor),
198-
true);
194+
return Instrumenter.<Request<?>, Response<?>>builder(
195+
openTelemetry, INSTRUMENTATION_NAME, spanName)
196+
.addAttributesExtractors(attributesExtractors())
197+
.addAttributesExtractors(Collections.singletonList(dynamoDbAttributesExtractor))
198+
.addOperationMetrics(DbClientMetrics.get())
199+
.buildInstrumenter(SpanKindExtractor.alwaysClient());
199200
}
200201

201202
private static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> createInstrumenter(

instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractDynamoDbClientTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,13 @@
66
package io.opentelemetry.instrumentation.awssdk.v1_11;
77

88
import static io.opentelemetry.api.common.AttributeKey.stringKey;
9+
import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric;
910
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
11+
import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS;
12+
import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT;
1013
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_DYNAMODB_TABLE_NAMES;
14+
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAMESPACE;
15+
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION_NAME;
1116
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM;
1217
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemIncubatingValues.DYNAMODB;
1318
import static java.util.Collections.singletonList;
@@ -52,5 +57,14 @@ public void sendRequestWithMockedResponse() throws Exception {
5257
Object response = client.createTable(new CreateTableRequest("sometable", null));
5358
assertRequestWithMockedResponse(
5459
response, client, "DynamoDBv2", "CreateTable", "POST", additionalAttributes);
60+
61+
assertDurationMetric(
62+
testing(),
63+
"io.opentelemetry.aws-sdk-1.11",
64+
DB_NAMESPACE,
65+
DB_OPERATION_NAME,
66+
DB_SYSTEM,
67+
SERVER_ADDRESS,
68+
SERVER_PORT);
5569
}
5670
}

0 commit comments

Comments
 (0)