Skip to content

Commit 7ea4ed6

Browse files
authored
Opensearch Metadata (#14942)
1 parent 9a7b0c0 commit 7ea4ed6

File tree

12 files changed

+194
-3
lines changed

12 files changed

+194
-3
lines changed

docs/instrumentation-list.yaml

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5820,22 +5820,141 @@ libraries:
58205820
- name: gen_ai.usage.output_tokens
58215821
type: LONG
58225822
opensearch:
5823+
- name: opensearch-java-3.0
5824+
description: |
5825+
This instrumentation enables database client spans and database client metrics for the OpenSearch Java client.
5826+
semantic_conventions:
5827+
- DATABASE_CLIENT_SPANS
5828+
- DATABASE_CLIENT_METRICS
5829+
library_link: https://docs.opensearch.org/latest/clients/java/
5830+
source_path: instrumentation/opensearch/opensearch-java-3.0
5831+
minimum_java_version: 11
5832+
scope:
5833+
name: io.opentelemetry.opensearch-java-3.0
5834+
target_versions:
5835+
javaagent:
5836+
- org.opensearch.client:opensearch-java:[3.0,)
5837+
telemetry:
5838+
- when: default
5839+
spans:
5840+
- span_kind: CLIENT
5841+
attributes:
5842+
- name: db.operation
5843+
type: STRING
5844+
- name: db.statement
5845+
type: STRING
5846+
- name: db.system
5847+
type: STRING
5848+
- when: otel.semconv-stability.opt-in=database
5849+
metrics:
5850+
- name: db.client.operation.duration
5851+
description: Duration of database client operations.
5852+
type: HISTOGRAM
5853+
unit: s
5854+
attributes:
5855+
- name: db.operation.name
5856+
type: STRING
5857+
- name: db.system.name
5858+
type: STRING
5859+
spans:
5860+
- span_kind: CLIENT
5861+
attributes:
5862+
- name: db.operation.name
5863+
type: STRING
5864+
- name: db.query.text
5865+
type: STRING
5866+
- name: db.system.name
5867+
type: STRING
58235868
- name: opensearch-rest-1.0
5869+
description: |
5870+
This instrumentation enables database client spans and database client metrics for OpenSearch REST clients.
5871+
semantic_conventions:
5872+
- DATABASE_CLIENT_SPANS
5873+
- DATABASE_CLIENT_METRICS
5874+
library_link: https://docs.opensearch.org/latest/clients/
58245875
source_path: instrumentation/opensearch/opensearch-rest-1.0
58255876
minimum_java_version: 11
58265877
scope:
58275878
name: io.opentelemetry.opensearch-rest-1.0
58285879
target_versions:
58295880
javaagent:
58305881
- org.opensearch.client:opensearch-rest-client:[1.0,3.0)
5882+
telemetry:
5883+
- when: default
5884+
spans:
5885+
- span_kind: CLIENT
5886+
attributes:
5887+
- name: db.operation
5888+
type: STRING
5889+
- name: db.statement
5890+
type: STRING
5891+
- name: db.system
5892+
type: STRING
5893+
- when: otel.semconv-stability.opt-in=database
5894+
metrics:
5895+
- name: db.client.operation.duration
5896+
description: Duration of database client operations.
5897+
type: HISTOGRAM
5898+
unit: s
5899+
attributes:
5900+
- name: db.operation.name
5901+
type: STRING
5902+
- name: db.system.name
5903+
type: STRING
5904+
spans:
5905+
- span_kind: CLIENT
5906+
attributes:
5907+
- name: db.operation.name
5908+
type: STRING
5909+
- name: db.query.text
5910+
type: STRING
5911+
- name: db.system.name
5912+
type: STRING
58315913
- name: opensearch-rest-3.0
5914+
description: |
5915+
This instrumentation enables database client spans and database client metrics for OpenSearch REST clients.
5916+
semantic_conventions:
5917+
- DATABASE_CLIENT_SPANS
5918+
- DATABASE_CLIENT_METRICS
5919+
library_link: https://docs.opensearch.org/latest/clients/
58325920
source_path: instrumentation/opensearch/opensearch-rest-3.0
58335921
minimum_java_version: 11
58345922
scope:
58355923
name: io.opentelemetry.opensearch-rest-3.0
58365924
target_versions:
58375925
javaagent:
58385926
- org.opensearch.client:opensearch-rest-client:[3.0,)
5927+
telemetry:
5928+
- when: default
5929+
spans:
5930+
- span_kind: CLIENT
5931+
attributes:
5932+
- name: db.operation
5933+
type: STRING
5934+
- name: db.statement
5935+
type: STRING
5936+
- name: db.system
5937+
type: STRING
5938+
- when: otel.semconv-stability.opt-in=database
5939+
metrics:
5940+
- name: db.client.operation.duration
5941+
description: Duration of database client operations.
5942+
type: HISTOGRAM
5943+
unit: s
5944+
attributes:
5945+
- name: db.operation.name
5946+
type: STRING
5947+
- name: db.system.name
5948+
type: STRING
5949+
spans:
5950+
- span_kind: CLIENT
5951+
attributes:
5952+
- name: db.operation.name
5953+
type: STRING
5954+
- name: db.query.text
5955+
type: STRING
5956+
- name: db.system.name
5957+
type: STRING
58395958
oracle:
58405959
- name: oracle-ucp-11.2
58415960
description: The Oracle Universal Connection Pool (UCP) instrumentation generates

instrumentation-docs/instrumentations.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,12 @@ readonly INSTRUMENTATIONS=(
129129
"okhttp:okhttp-2.2:javaagent:test"
130130
"okhttp:okhttp-3.0:javaagent:test"
131131
"openai:openai-java-1.1:javaagent:test"
132+
"opensearch:opensearch-java-3.0:javaagent:test"
133+
"opensearch:opensearch-java-3.0:javaagent:testStableSemconv"
134+
"opensearch:opensearch-rest-1.0:javaagent:test"
135+
"opensearch:opensearch-rest-1.0:javaagent:testStableSemconv"
136+
"opensearch:opensearch-rest-3.0:javaagent:test"
137+
"opensearch:opensearch-rest-3.0:javaagent:testStableSemconv"
132138
"oshi:javaagent:test"
133139
"oshi:javaagent:testExperimental"
134140
"pekko:pekko-http-1.0:javaagent:test"

instrumentation/opensearch/opensearch-java-3.0/javaagent/build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,16 @@ dependencies {
3434
}
3535

3636
tasks {
37-
test {
37+
withType<Test>().configureEach {
3838
usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
39+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
3940
}
4041

4142
val testStableSemconv by registering(Test::class) {
4243
testClassesDirs = sourceSets.test.get().output.classesDirs
4344
classpath = sourceSets.test.get().runtimeClasspath
4445
jvmArgs("-Dotel.semconv-stability.opt-in=database")
46+
systemProperty("metadataConfig", "otel.semconv-stability.opt-in=database")
4547
}
4648

4749
check {

instrumentation/opensearch/opensearch-java-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/AbstractOpenSearchTest.java

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

66
package io.opentelemetry.javaagent.instrumentation.opensearch.v3_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;
11+
import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME;
12+
import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME;
1013
import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD;
1114
import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE;
1215
import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION;
@@ -151,4 +154,15 @@ void shouldGetStatusAsyncWithTraces() throws Exception {
151154
.hasKind(SpanKind.INTERNAL)
152155
.hasParent(trace.getSpan(1))));
153156
}
157+
158+
@Test
159+
void shouldRecordMetrics() throws IOException {
160+
HealthResponse healthResponse = openSearchClient.cluster().health();
161+
assertThat(healthResponse).isNotNull();
162+
163+
getTesting().waitForTraces(1);
164+
165+
assertDurationMetric(
166+
getTesting(), "io.opentelemetry.opensearch-java-3.0", DB_OPERATION_NAME, DB_SYSTEM_NAME);
167+
}
154168
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
description: >
2+
This instrumentation enables database client spans and database client metrics for the OpenSearch
3+
Java client.
4+
library_link: https://docs.opensearch.org/latest/clients/java/
5+
semantic_conventions:
6+
- DATABASE_CLIENT_SPANS
7+
- DATABASE_CLIENT_METRICS

instrumentation/opensearch/opensearch-rest-1.0/javaagent/build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,16 @@ dependencies {
4040
}
4141

4242
tasks {
43-
test {
43+
withType<Test>().configureEach {
4444
usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
45+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
4546
}
4647

4748
val testStableSemconv by registering(Test::class) {
4849
testClassesDirs = sourceSets.test.get().output.classesDirs
4950
classpath = sourceSets.test.get().runtimeClasspath
5051
jvmArgs("-Dotel.semconv-stability.opt-in=database")
52+
systemProperty("metadataConfig", "otel.semconv-stability.opt-in=database")
5153
}
5254

5355
check {

instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/OpenSearchRestTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,9 @@ protected RestClient buildRestClient() throws Exception {
5757
protected int getResponseStatus(Response response) {
5858
return response.getStatusLine().getStatusCode();
5959
}
60+
61+
@Override
62+
protected String getInstrumentationName() {
63+
return "io.opentelemetry.opensearch-rest-1.0";
64+
}
6065
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
description: >
2+
This instrumentation enables database client spans and database client metrics for OpenSearch
3+
REST clients.
4+
library_link: https://docs.opensearch.org/latest/clients/
5+
semantic_conventions:
6+
- DATABASE_CLIENT_SPANS
7+
- DATABASE_CLIENT_METRICS

instrumentation/opensearch/opensearch-rest-3.0/javaagent/build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,16 @@ dependencies {
3333
}
3434

3535
tasks {
36-
test {
36+
withType<Test>().configureEach {
3737
usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
38+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
3839
}
3940

4041
val testStableSemconv by registering(Test::class) {
4142
testClassesDirs = sourceSets.test.get().output.classesDirs
4243
classpath = sourceSets.test.get().runtimeClasspath
4344
jvmArgs("-Dotel.semconv-stability.opt-in=database")
45+
systemProperty("metadataConfig", "otel.semconv-stability.opt-in=database")
4446
}
4547

4648
check {

instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/OpenSearchRest3Test.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,9 @@ protected RestClient buildRestClient() throws Exception {
6868
protected int getResponseStatus(Response response) {
6969
return response.getStatusLine().getStatusCode();
7070
}
71+
72+
@Override
73+
protected String getInstrumentationName() {
74+
return "io.opentelemetry.opensearch-rest-3.0";
75+
}
7176
}

0 commit comments

Comments
 (0)