Skip to content

Commit 9975bd2

Browse files
authored
Kafka connect metadata (#15021)
1 parent 35fc412 commit 9975bd2

File tree

8 files changed

+53
-17
lines changed

8 files changed

+53
-17
lines changed

docs/instrumentation-list.yaml

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5536,6 +5536,35 @@ libraries:
55365536
Enables experimental receive telemetry, which will cause consumers to start a new trace, with only a span link connecting it to the producer trace.
55375537
type: boolean
55385538
default: false
5539+
- name: kafka-connect-2.6
5540+
description: This instrumentation enables messaging spans for Kafka Connect sink
5541+
tasks.
5542+
semantic_conventions:
5543+
- MESSAGING_SPANS
5544+
library_link: https://kafka.apache.org/documentation/#connect
5545+
source_path: instrumentation/kafka/kafka-connect-2.6
5546+
scope:
5547+
name: io.opentelemetry.kafka-connect-2.6
5548+
target_versions:
5549+
javaagent:
5550+
- org.apache.kafka:connect-api:[2.6.0,)
5551+
telemetry:
5552+
- when: default
5553+
spans:
5554+
- span_kind: CONSUMER
5555+
attributes:
5556+
- name: messaging.batch.message_count
5557+
type: LONG
5558+
- name: messaging.destination.name
5559+
type: STRING
5560+
- name: messaging.operation
5561+
type: STRING
5562+
- name: messaging.system
5563+
type: STRING
5564+
- name: thread.id
5565+
type: LONG
5566+
- name: thread.name
5567+
type: STRING
55395568
- name: kafka-streams-0.11
55405569
library_link: https://kafka.apache.org/documentation/streams/
55415570
source_path: instrumentation/kafka/kafka-streams-0.11
@@ -7663,9 +7692,9 @@ libraries:
76637692
- org.springframework.security:spring-security-config:[6.0.0,]
76647693
library:
76657694
- io.projectreactor:reactor-core:3.5.0
7695+
- jakarta.servlet:jakarta.servlet-api:[6.0.0,6.1.0)
76667696
- org.springframework.security:spring-security-config:6.0.0
76677697
- org.springframework:spring-web:6.0.0
7668-
- jakarta.servlet:jakarta.servlet-api:6.0.0
76697698
- org.springframework.security:spring-security-web:6.0.0
76707699
configurations:
76717700
- name: otel.instrumentation.common.enduser.id.enabled

instrumentation-docs/instrumentations.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ readonly INSTRUMENTATIONS=(
126126
"jetty-httpclient:jetty-httpclient-12.0:javaagent:test"
127127
"jetty-httpclient:jetty-httpclient-9.2:javaagent:test"
128128
"jodd-http-4.2:javaagent:test"
129+
"kafka:kafka-connect-2.6:testing:test"
129130
"nats:nats-2.17:javaagent:test"
130131
"nats:nats-2.17:javaagent:testExperimental"
131132
"netty:netty-3.8:javaagent:test"
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
description: "This instrumentation enables messaging spans for Kafka Connect sink tasks."
2+
semantic_conventions:
3+
- MESSAGING_SPANS
4+
library_link: https://kafka.apache.org/documentation/#connect

instrumentation/kafka/kafka-connect-2.6/testing/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,5 @@ dependencies {
3535
tasks.withType<Test>().configureEach {
3636
dependsOn(agentShadowJar)
3737
systemProperty("io.opentelemetry.smoketest.agent.shadowJar.path", agentShadowJar.get().archiveFile.get().toString())
38+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
3839
}

smoke-tests/src/main/java/io/opentelemetry/smoketest/SmokeTestRunner.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77

88
import io.opentelemetry.api.OpenTelemetry;
99
import io.opentelemetry.instrumentation.testing.InstrumentationTestRunner;
10+
import io.opentelemetry.instrumentation.testing.internal.MetaDataCollector;
1011
import io.opentelemetry.sdk.logs.data.LogRecordData;
1112
import io.opentelemetry.sdk.metrics.data.MetricData;
1213
import io.opentelemetry.sdk.trace.data.SpanData;
14+
import java.io.File;
15+
import java.io.IOException;
1316
import java.util.List;
1417

1518
/**
@@ -38,7 +41,15 @@ void setTelemetryRetriever(TelemetryRetriever telemetryRetriever) {
3841
public void beforeTestClass() {}
3942

4043
@Override
41-
public void afterTestClass() {}
44+
public void afterTestClass() throws IOException {
45+
// Generates files in a `.telemetry` directory within the instrumentation module with all
46+
// captured emitted metadata to be used by the instrumentation-docs Doc generator.
47+
if (Boolean.getBoolean("collectMetadata")) {
48+
String path = new File("").getAbsolutePath();
49+
50+
MetaDataCollector.writeTelemetryToFiles(path, metricsByScope, tracesByScope);
51+
}
52+
}
4253

4354
@Override
4455
public void clearAllExportedData() {

testing-common/src/main/java/io/opentelemetry/instrumentation/testing/AgentTestRunner.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@
1616
import io.opentelemetry.sdk.logs.data.LogRecordData;
1717
import io.opentelemetry.sdk.metrics.data.MetricData;
1818
import io.opentelemetry.sdk.trace.data.SpanData;
19+
import java.io.File;
1920
import java.io.IOException;
20-
import java.net.URL;
21-
import java.nio.file.Paths;
2221
import java.util.List;
2322
import org.slf4j.LoggerFactory;
2423

@@ -67,11 +66,7 @@ public void afterTestClass() throws IOException {
6766
// Generates files in a `.telemetry` directory within the instrumentation module with all
6867
// captured emitted metadata to be used by the instrumentation-docs Doc generator.
6968
if (Boolean.getBoolean("collectMetadata")) {
70-
URL resource = this.getClass().getClassLoader().getResource("");
71-
if (resource == null) {
72-
return;
73-
}
74-
String path = Paths.get(resource.getPath()).toString();
69+
String path = new File("").getAbsolutePath();
7570

7671
MetaDataCollector.writeTelemetryToFiles(path, metricsByScope, tracesByScope);
7772
}

testing-common/src/main/java/io/opentelemetry/instrumentation/testing/LibraryTestRunner.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,8 @@
4444
import io.opentelemetry.sdk.trace.SpanProcessor;
4545
import io.opentelemetry.sdk.trace.data.SpanData;
4646
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
47+
import java.io.File;
4748
import java.io.IOException;
48-
import java.net.URL;
49-
import java.nio.file.Paths;
5049
import java.time.Duration;
5150
import java.util.List;
5251
import java.util.concurrent.TimeUnit;
@@ -133,11 +132,7 @@ public void afterTestClass() throws IOException {
133132
// Generates files in a `.telemetry` directory within the instrumentation module with all
134133
// captured emitted metadata to be used by the instrumentation-docs Doc generator.
135134
if (Boolean.getBoolean("collectMetadata")) {
136-
URL resource = this.getClass().getClassLoader().getResource("");
137-
if (resource == null) {
138-
return;
139-
}
140-
String path = Paths.get(resource.getPath()).toString();
135+
String path = new File("").getAbsolutePath();
141136

142137
MetaDataCollector.writeTelemetryToFiles(path, metricsByScope, tracesByScope);
143138
}

testing-common/src/main/java/io/opentelemetry/instrumentation/testing/internal/MetaDataCollector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public final class MetaDataCollector {
3535

3636
private static final String TMP_DIR = ".telemetry";
3737
private static final Pattern MODULE_PATTERN =
38-
Pattern.compile("(.*?/instrumentation/.*?)(/javaagent/|/library/)");
38+
Pattern.compile("(.*?/instrumentation/.*?)(/javaagent|/library|/testing)");
3939

4040
public static void writeTelemetryToFiles(
4141
String path,

0 commit comments

Comments
 (0)