Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions instrumentation/apache-dubbo-2.7/javaagent/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,23 @@ val stableSemconvSuites = testing.suites.withType(JvmTestSuite::class).map { sui
testClassesDirs = suite.sources.output.classesDirs
classpath = suite.sources.runtimeClasspath

jvmArgs("-Dotel.semconv-stability.opt-in=service.peer")
systemProperty("metadataConfig", "otel.semconv-stability.opt-in=service.peer")
jvmArgs("-Dotel.semconv-stability.opt-in=rpc,service.peer")
systemProperty("metadataConfig", "otel.semconv-stability.opt-in=rpc,service.peer")
}
}

val bothSemconvSuites = testing.suites.withType(JvmTestSuite::class).map { suite ->
tasks.register<Test>("${suite.name}BothSemconv") {
testClassesDirs = suite.sources.output.classesDirs
classpath = suite.sources.runtimeClasspath

jvmArgs("-Dotel.semconv-stability.opt-in=rpc/dup,service.peer")
systemProperty("metadataConfig", "otel.semconv-stability.opt-in=rpc/dup,service.peer")
}
}

tasks {
check {
dependsOn(testing.suites, stableSemconvSuites)
dependsOn(testing.suites, stableSemconvSuites, bothSemconvSuites)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,23 @@ tasks.withType<Test>().configureEach {
// required on jdk17
jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED")
}

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

jvmArgs("-Dotel.semconv-stability.opt-in=rpc")
}

val testBothSemconv by registering(Test::class) {
testClassesDirs = sourceSets.test.get().output.classesDirs
classpath = sourceSets.test.get().runtimeClasspath

jvmArgs("-Dotel.semconv-stability.opt-in=rpc/dup")
}

check {
dependsOn(testStableSemconv, testBothSemconv)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,17 @@
package io.opentelemetry.instrumentation.apachedubbo.v2_7;

import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter;
import javax.annotation.Nullable;
import org.apache.dubbo.rpc.Result;

enum DubboRpcAttributesGetter implements RpcAttributesGetter<DubboRequest, Result> {
INSTANCE;

@Override
public String getRpcSystemName(DubboRequest request) {
return "dubbo";
}

@Override
public String getSystem(DubboRequest request) {
return "apache_dubbo";
Expand All @@ -26,4 +32,15 @@ public String getService(DubboRequest request) {
public String getMethod(DubboRequest request) {
return request.invocation().getMethodName();
}

@Override
@Nullable
public String getRpcMethod(DubboRequest request) {
String service = getService(request);
String method = request.invocation().getMethodName();
if (service != null && method != null) {
return service + "/" + method;
}
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import io.opentelemetry.instrumentation.apachedubbo.v2_7.internal.DubboClientNetworkAttributesGetter;
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcClientAttributesExtractor;
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcClientMetrics;
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcMetricsContextCustomizers;
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcServerAttributesExtractor;
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcServerMetrics;
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcSpanNameExtractor;
Expand Down Expand Up @@ -77,6 +78,7 @@ public DubboTelemetryBuilder setServerSpanNameExtractorCustomizer(
/**
* Returns a new {@link DubboTelemetry} with the settings of this {@link DubboTelemetryBuilder}.
*/
@SuppressWarnings("deprecation") // RpcMetricsContextCustomizers is deprecated for removal in 3.0
public DubboTelemetry build() {
DubboRpcAttributesGetter rpcAttributesGetter = DubboRpcAttributesGetter.INSTANCE;
SpanNameExtractor<DubboRequest> spanNameExtractor =
Expand All @@ -96,7 +98,9 @@ public DubboTelemetry build() {
.addAttributesExtractor(RpcServerAttributesExtractor.create(rpcAttributesGetter))
.addAttributesExtractor(NetworkAttributesExtractor.create(netServerAttributesGetter))
.addAttributesExtractors(attributesExtractors)
.addOperationMetrics(RpcServerMetrics.get());
.addOperationMetrics(RpcServerMetrics.get())
.addContextCustomizer(
RpcMetricsContextCustomizers.dualEmitContextCustomizer(rpcAttributesGetter));

InstrumenterBuilder<DubboRequest, Result> clientInstrumenterBuilder =
Instrumenter.<DubboRequest, Result>builder(
Expand All @@ -105,7 +109,9 @@ public DubboTelemetry build() {
.addAttributesExtractor(ServerAttributesExtractor.create(netClientAttributesGetter))
.addAttributesExtractor(NetworkAttributesExtractor.create(netClientAttributesGetter))
.addAttributesExtractors(attributesExtractors)
.addOperationMetrics(RpcClientMetrics.get());
.addOperationMetrics(RpcClientMetrics.get())
.addContextCustomizer(
RpcMetricsContextCustomizers.dualEmitContextCustomizer(rpcAttributesGetter));

return new DubboTelemetry(
serverInstrumenterBuilder.buildServerInstrumenter(DubboHeadersGetter.INSTANCE),
Expand Down
Loading
Loading