Skip to content

Commit dc523cf

Browse files
AlexanderWertlaurittrask
authored
Disable Elasticsearch instrumentation for ES clients 8.10+ (#9337)
Signed-off-by: Alexander Wert <[email protected]> Co-authored-by: Lauri Tulmin <[email protected]> Co-authored-by: Trask Stalnaker <[email protected]> Co-authored-by: Lauri Tulmin <[email protected]>
1 parent 1cb583a commit dc523cf

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ muzzle {
66
pass {
77
group.set("co.elastic.clients")
88
module.set("elasticsearch-java")
9-
versions.set("[7.16,)")
9+
versions.set("[7.16,8.10)") // 8.10+ has native, on-by-default opentelemetry instrumentation
1010
assertInverse.set(true)
1111
}
1212
}
@@ -23,6 +23,7 @@ dependencies {
2323
testImplementation("com.fasterxml.jackson.core:jackson-databind:2.14.2")
2424
testImplementation("org.testcontainers:elasticsearch")
2525

26+
// 8.10+ has native, on-by-default opentelemetry instrumentation
2627
latestDepTestLibrary("co.elastic.clients:elasticsearch-java:8.0.+")
2728
}
2829

instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/apiclient/ElasticsearchApiClientInstrumentationModule.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,31 @@
55

66
package io.opentelemetry.javaagent.instrumentation.elasticsearch.apiclient;
77

8+
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
89
import static java.util.Arrays.asList;
10+
import static net.bytebuddy.matcher.ElementMatchers.not;
911

1012
import com.google.auto.service.AutoService;
1113
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1214
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1315
import java.util.List;
16+
import net.bytebuddy.matcher.ElementMatcher;
1417

1518
@AutoService(InstrumentationModule.class)
1619
public class ElasticsearchApiClientInstrumentationModule extends InstrumentationModule {
1720
public ElasticsearchApiClientInstrumentationModule() {
1821
super("elasticsearch-api-client-7.16", "elasticsearch");
1922
}
2023

24+
@Override
25+
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
26+
// Since Elasticsearch client version 8.10, the ES client comes with a native OTel
27+
// instrumentation
28+
// that introduced the class `co.elastic.clients.transport.instrumentation.Instrumentation`.
29+
// Disabling agent instrumentation for those cases.
30+
return not(hasClassesNamed("co.elastic.clients.transport.instrumentation.Instrumentation"));
31+
}
32+
2133
@Override
2234
public List<TypeInstrumentation> typeInstrumentations() {
2335
return asList(

instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7InstrumentationModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public ElasticsearchRest7InstrumentationModule() {
2222

2323
@Override
2424
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
25-
// class introduced in 7.0.0
25+
// Class `org.elasticsearch.client.RestClient$InternalRequest` introduced in 7.0.0.
2626
return hasClassesNamed("org.elasticsearch.client.RestClient$InternalRequest");
2727
}
2828

0 commit comments

Comments
 (0)