Skip to content

Commit 1343094

Browse files
authored
Collect metrics from more http and database clients (#14038)
1 parent 71527bd commit 1343094

File tree

41 files changed

+890
-23
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+890
-23
lines changed

docs/instrumentation-list.yaml

Lines changed: 661 additions & 21 deletions
Large diffs are not rendered by default.

instrumentation-docs/collect.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ fi
1414

1515
readonly INSTRUMENTATIONS=(
1616
# <module path (colon-separated)> : <javaagent|library> : [ gradle-task-suffix ]
17+
"akka:akka-http-10.0:javaagent:test"
18+
"apache-httpasyncclient-4.1:javaagent:test"
1719
"alibaba-druid-1.0:javaagent:test"
1820
"alibaba-druid-1.0:javaagent:testStableSemconv"
1921
"apache-dbcp-2.0:javaagent:test"
@@ -23,6 +25,38 @@ readonly INSTRUMENTATIONS=(
2325
"c3p0-0.9:javaagent:testStableSemconv"
2426
"clickhouse-client-0.5:javaagent:test"
2527
"clickhouse-client-0.5:javaagent:testStableSemconv"
28+
"aws-sdk:aws-sdk-1.11:javaagent:test"
29+
"google-http-client-1.19:javaagent:test"
30+
"http-url-connection:javaagent:test"
31+
"java-http-client:javaagent:test"
32+
"jetty-httpclient:jetty-httpclient-9.2:javaagent:test"
33+
"jetty-httpclient:jetty-httpclient-12.0:javaagent:test"
34+
"jodd-http-4.2:javaagent:test"
35+
"netty:netty-3.8:javaagent:test"
36+
"netty:netty-4.0:javaagent:test"
37+
"netty:netty-4.1:javaagent:test"
38+
"okhttp:okhttp-2.2:javaagent:test"
39+
"okhttp:okhttp-3.0:javaagent:test"
40+
"pekko:pekko-http-1.0:javaagent:test"
41+
"play:play-ws:play-ws-1.0:javaagent:test"
42+
"play:play-ws:play-ws-2.0:javaagent:test"
43+
"play:play-ws:play-ws-2.1:javaagent:test"
44+
"reactor:reactor-netty:reactor-netty-0.9:javaagent:test"
45+
"reactor:reactor-netty:reactor-netty-1.0:javaagent:test"
46+
"spring:spring-webflux:spring-webflux-5.0:javaagent:test"
47+
"vertx:vertx-http-client:vertx-http-client-3.0:javaagent:test"
48+
"vertx:vertx-http-client:vertx-http-client-4.0:javaagent:test"
49+
"vertx:vertx-http-client:vertx-http-client-5.0:javaagent:test"
50+
"vertx:vertx-redis-client-4.0:javaagent:test"
51+
"vertx:vertx-redis-client-4.0:javaagent:testStableSemconv"
52+
"vertx:vertx-sql-client:vertx-sql-client-4.0:javaagent:test"
53+
"vertx:vertx-sql-client:vertx-sql-client-4.0:javaagent:testStableSemconv"
54+
"vertx:vertx-sql-client:vertx-sql-client-5.0:javaagent:test"
55+
"vertx:vertx-sql-client:vertx-sql-client-5.0:javaagent:testStableSemconv"
56+
"aws-sdk:aws-sdk-1.11:javaagent:testStableSemconv"
57+
"aws-sdk:aws-sdk-2.2:javaagent:test"
58+
"aws-sdk:aws-sdk-2.2:javaagent:testStableSemconv"
59+
"aws-sdk:aws-sdk-2.2:javaagent:testBedrockRuntime"
2660
"hikaricp-3.0:javaagent:test"
2761
"hikaricp-3.0:javaagent:testStableSemconv"
2862
"tomcat:tomcat-jdbc:javaagent:test"

instrumentation/akka/akka-http-10.0/javaagent/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ tasks {
6565
jvmArgs("-XX:+IgnoreUnrecognizedVMOptions")
6666

6767
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
68+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
6869
}
6970

7071
check {

instrumentation/apache-httpasyncclient-4.1/javaagent/build.gradle.kts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,9 @@ muzzle {
1616
dependencies {
1717
library("org.apache.httpcomponents:httpasyncclient:4.1")
1818
}
19+
20+
tasks {
21+
test {
22+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
23+
}
24+
}

instrumentation/aws-sdk/aws-sdk-1.11/javaagent/build.gradle.kts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,8 @@ testing {
130130
}
131131
}
132132

133+
val collectMetadata = findProperty("collectMetadata")?.toString() ?: "false"
134+
133135
tasks {
134136
if (!(findProperty("testLatestDeps") as Boolean)) {
135137
check {
@@ -143,6 +145,9 @@ tasks {
143145

144146
val testStableSemconv by registering(Test::class) {
145147
jvmArgs("-Dotel.semconv-stability.opt-in=database")
148+
149+
systemProperty("collectMetadata", collectMetadata)
150+
systemProperty("metaDataConfig", "otel.semconv-stability.opt-in=database")
146151
}
147152

148153
check {
@@ -151,6 +156,7 @@ tasks {
151156

152157
test {
153158
usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
159+
systemProperty("collectMetadata", collectMetadata)
154160
}
155161

156162
withType<Test>().configureEach {

instrumentation/aws-sdk/aws-sdk-2.2/javaagent/build.gradle.kts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ dependencies {
129129
}
130130

131131
val latestDepTest = findProperty("testLatestDeps") as Boolean
132+
val collectMetadata = findProperty("collectMetadata")?.toString() ?: "false"
132133

133134
testing {
134135
suites {
@@ -162,6 +163,7 @@ testing {
162163
testTask.configure {
163164
// TODO run tests both with and without genai message capture
164165
systemProperty("otel.instrumentation.genai.capture-message-content", "true")
166+
systemProperty("collectMetadata", collectMetadata)
165167
}
166168
}
167169
}
@@ -190,6 +192,7 @@ tasks {
190192
excludeTestsMatching("Aws2SqsSuppressReceiveSpansTest")
191193
}
192194
systemProperty("otel.instrumentation.messaging.experimental.receive-telemetry.enabled", "true")
195+
systemProperty("collectMetadata", collectMetadata)
193196
}
194197

195198
check {
@@ -203,6 +206,7 @@ tasks {
203206
systemProperty("otel.instrumentation.aws-sdk.experimental-span-attributes", "true")
204207
systemProperty("otel.instrumentation.aws-sdk.experimental-record-individual-http-error", "true")
205208
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
209+
systemProperty("collectMetadata", collectMetadata)
206210
}
207211

208212
withType<com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar>().configureEach {
@@ -217,6 +221,8 @@ tasks {
217221
}
218222
systemProperty("otel.instrumentation.messaging.experimental.receive-telemetry.enabled", "true")
219223
jvmArgs("-Dotel.semconv-stability.opt-in=database")
224+
225+
systemProperty("metaDataConfig", "otel.semconv-stability.opt-in=database")
220226
}
221227

222228
check {
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
configurations:
2+
- name: otel.instrumentation.elasticsearch.capture-search-query
3+
description: |
4+
Enable the capture of search query bodies. It is important to note that Elasticsearch queries
5+
may contain personal or sensitive information.
6+
type: boolean
7+
default: false
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
configurations:
2+
- name: otel.instrumentation.elasticsearch.capture-search-query
3+
description: >
4+
Enable the capture of search query bodies. It is important to note that Elasticsearch queries
5+
may contain personal or sensitive information.
6+
type: boolean
7+
default: false
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
configurations:
2+
- name: otel.instrumentation.elasticsearch.capture-search-query
3+
description: >
4+
Enable the capture of search query bodies. It is important to note that Elasticsearch queries
5+
may contain personal or sensitive information.
6+
type: boolean
7+
default: false

instrumentation/elasticsearch/elasticsearch-rest-common-5.0/library/src/main/java/io/opentelemetry/instrumentation/elasticsearch/rest/common/v5_0/internal/ElasticsearchRestInstrumenterFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public static Instrumenter<ElasticsearchRestRequest, Response> create(
3737
boolean captureSearchQuery) {
3838
ElasticsearchDbAttributesGetter dbClientAttributesGetter =
3939
new ElasticsearchDbAttributesGetter(captureSearchQuery);
40-
ElasticsearchClientAttributeExtractor esClientAtrributesExtractor =
40+
ElasticsearchClientAttributeExtractor esClientAttributesExtractor =
4141
new ElasticsearchClientAttributeExtractor(knownMethods);
4242
SpanNameExtractor<? super ElasticsearchRestRequest> spanNameExtractor =
4343
spanNameExtractorTransformer.apply(
@@ -46,7 +46,7 @@ public static Instrumenter<ElasticsearchRestRequest, Response> create(
4646
return Instrumenter.<ElasticsearchRestRequest, Response>builder(
4747
openTelemetry, instrumentationName, spanNameExtractor)
4848
.addAttributesExtractor(DbClientAttributesExtractor.create(dbClientAttributesGetter))
49-
.addAttributesExtractor(esClientAtrributesExtractor)
49+
.addAttributesExtractor(esClientAttributesExtractor)
5050
.addAttributesExtractors(attributesExtractors)
5151
.addOperationMetrics(DbClientMetrics.get())
5252
.buildInstrumenter(SpanKindExtractor.alwaysClient());

0 commit comments

Comments
 (0)