Skip to content

Commit e43b3d5

Browse files
authored
Jedis and Jetty metadata updates (#15202)
1 parent e8f2858 commit e43b3d5

File tree

18 files changed

+726
-0
lines changed

18 files changed

+726
-0
lines changed

docs/instrumentation-list.yaml

Lines changed: 486 additions & 0 deletions
Large diffs are not rendered by default.

instrumentation-docs/instrumentations.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,15 @@ readonly INSTRUMENTATIONS=(
128128
"jaxws:jaxws-cxf-3.0:javaagent:test"
129129
"jaxws:jaxws-jws-api-1.1:javaagent:test"
130130
"jaxws:jaxws-metro-2.2:javaagent:test"
131+
"jedis:jedis-1.4:javaagent:test"
132+
"jedis:jedis-1.4:javaagent:testStableSemconv"
133+
"jedis:jedis-3.0:javaagent:test"
134+
"jedis:jedis-3.0:javaagent:testStableSemconv"
135+
"jedis:jedis-4.0:javaagent:test"
136+
"jedis:jedis-4.0:javaagent:testStableSemconv"
137+
"jetty:jetty-8.0:javaagent:test"
138+
"jetty:jetty-11.0:javaagent:test"
139+
"jetty:jetty-12.0:javaagent:test"
131140
"jetty-httpclient:jetty-httpclient-12.0:javaagent:test"
132141
"jetty-httpclient:jetty-httpclient-9.2:javaagent:test"
133142
"jodd-http-4.2:javaagent:test"

instrumentation/jedis/jedis-1.4/javaagent/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,15 @@ testing {
4141
tasks {
4242
withType<Test>().configureEach {
4343
usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
44+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
4445
}
4546

4647
val testStableSemconv by registering(Test::class) {
4748
testClassesDirs = sourceSets.test.get().output.classesDirs
4849
classpath = sourceSets.test.get().runtimeClasspath
4950

5051
jvmArgs("-Dotel.semconv-stability.opt-in=database")
52+
systemProperty("metadataConfig", "otel.semconv-stability.opt-in=database")
5153
}
5254

5355
check {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
description: This instrumentation enables database client spans and database client metrics for Jedis Redis operations.
2+
semantic_conventions:
3+
- DATABASE_CLIENT_SPANS
4+
- DATABASE_CLIENT_METRICS
5+
library_link: https://github.com/redis/jedis
6+
configurations:
7+
- name: otel.instrumentation.common.db-statement-sanitizer.enabled
8+
description: Enables statement sanitization for database queries.
9+
type: boolean
10+
default: true
11+
- name: otel.instrumentation.common.peer-service-mapping
12+
description: Used to specify a mapping from host names or IP addresses to peer services.
13+
type: map
14+
default: ""

instrumentation/jedis/jedis-1.4/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/AbstractJedisTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@
55

66
package io.opentelemetry.javaagent.instrumentation.jedis;
77

8+
import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric;
89
import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable;
910
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
1011
import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS;
1112
import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT;
1213
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION;
14+
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION_NAME;
1315
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT;
1416
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM;
17+
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM_NAME;
1518
import static io.opentelemetry.semconv.incubating.PeerIncubatingAttributes.PEER_SERVICE;
1619
import static org.assertj.core.api.Assertions.assertThat;
1720

@@ -76,6 +79,14 @@ void setCommand() {
7679
equalTo(PEER_SERVICE, "test-peer-service"),
7780
equalTo(SERVER_ADDRESS, host),
7881
equalTo(SERVER_PORT, port))));
82+
83+
assertDurationMetric(
84+
testing,
85+
"io.opentelemetry.jedis-1.4",
86+
DB_SYSTEM_NAME,
87+
DB_OPERATION_NAME,
88+
SERVER_ADDRESS,
89+
SERVER_PORT);
7990
}
8091

8192
@Test

instrumentation/jedis/jedis-3.0/javaagent/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,15 @@ dependencies {
3131
tasks {
3232
withType<Test>().configureEach {
3333
usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
34+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
3435
}
3536

3637
val testStableSemconv by registering(Test::class) {
3738
testClassesDirs = sourceSets.test.get().output.classesDirs
3839
classpath = sourceSets.test.get().runtimeClasspath
3940

4041
jvmArgs("-Dotel.semconv-stability.opt-in=database")
42+
systemProperty("metadataConfig", "otel.semconv-stability.opt-in=database")
4143
}
4244

4345
check {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
description: This instrumentation enables database client spans and database client metrics for Jedis Redis operations.
2+
semantic_conventions:
3+
- DATABASE_CLIENT_SPANS
4+
- DATABASE_CLIENT_METRICS
5+
library_link: https://github.com/redis/jedis
6+
configurations:
7+
- name: otel.instrumentation.common.db-statement-sanitizer.enabled
8+
description: Enables statement sanitization for database queries.
9+
type: boolean
10+
default: true
11+
- name: otel.instrumentation.common.peer-service-mapping
12+
description: Used to specify a mapping from host names or IP addresses to peer services.
13+
type: map
14+
default: ""

instrumentation/jedis/jedis-4.0/javaagent/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,15 @@ tasks {
2929
// latest dep test fails because peer ip is 0:0:0:0:0:0:0:1 instead of 127.0.0.1
3030
jvmArgs("-Djava.net.preferIPv4Stack=true")
3131
usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
32+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
3233
}
3334

3435
val testStableSemconv by registering(Test::class) {
3536
testClassesDirs = sourceSets.test.get().output.classesDirs
3637
classpath = sourceSets.test.get().runtimeClasspath
3738

3839
jvmArgs("-Dotel.semconv-stability.opt-in=database")
40+
systemProperty("metadataConfig", "otel.semconv-stability.opt-in=database")
3941
}
4042

4143
check {

instrumentation/jedis/jedis-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/Jedis40ClientTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,17 @@
55

66
package io.opentelemetry.javaagent.instrumentation.jedis.v4_0;
77

8+
import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric;
89
import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable;
910
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
1011
import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS;
1112
import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT;
1213
import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE;
1314
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION;
15+
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION_NAME;
1416
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT;
1517
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM;
18+
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_SYSTEM_NAME;
1619
import static org.assertj.core.api.Assertions.assertThat;
1720

1821
import io.opentelemetry.api.trace.SpanKind;
@@ -79,6 +82,14 @@ void setCommand() {
7982
equalTo(NETWORK_TYPE, "ipv4"),
8083
equalTo(NETWORK_PEER_PORT, port),
8184
equalTo(NETWORK_PEER_ADDRESS, ip))));
85+
86+
assertDurationMetric(
87+
testing,
88+
"io.opentelemetry.jedis-4.0",
89+
DB_SYSTEM_NAME,
90+
DB_OPERATION_NAME,
91+
NETWORK_PEER_ADDRESS,
92+
NETWORK_PEER_PORT);
8293
}
8394

8495
@Test
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
description: This instrumentation enables database client spans and database client metrics for Jedis Redis operations.
2+
semantic_conventions:
3+
- DATABASE_CLIENT_SPANS
4+
- DATABASE_CLIENT_METRICS
5+
library_link: https://github.com/redis/jedis
6+
configurations:
7+
- name: otel.instrumentation.common.db-statement-sanitizer.enabled
8+
description: Enables statement sanitization for database queries.
9+
type: boolean
10+
default: true

0 commit comments

Comments
 (0)