From b40f27d37a90cc09c36c1a1967918228be38b704 Mon Sep 17 00:00:00 2001 From: chenlujjj <953546398@qq.com> Date: Wed, 22 Jan 2025 14:04:22 +0800 Subject: [PATCH] move client instrumentation from library to javaagent --- .../JsonRpcClientAttributesExtractor.java | 2 +- .../v1_3/JsonRpcClientAttributesGetter.java | 4 +- .../v1_3/JsonRpcClientInstrumentation.java | 2 - .../jsonrpc4j/v1_3/JsonRpcClientRequest.java | 2 +- .../jsonrpc4j/v1_3/JsonRpcClientResponse.java | 2 +- .../v1_3/JsonRpcClientSpanNameExtractor.java | 2 +- .../v1_3/JsonRpcClientTelemetry.java | 32 +++++++++ .../v1_3/JsonRpcClientTelemetryBuilder.java | 67 +++++++++++++++++++ .../v1_3/JsonRpcProxyInstrumentation.java | 2 - .../jsonrpc4j/v1_3/JsonRpcSingletons.java | 13 ++-- ...metry.java => JsonRpcServerTelemetry.java} | 19 ++---- ...ava => JsonRpcServerTelemetryBuilder.java} | 43 ++---------- .../jsonrpc4j/v1_3/LibraryJsonRpcTest.java | 4 +- 13 files changed, 125 insertions(+), 69 deletions(-) rename instrumentation/jsonrpc4j-1.3/{library/src/main/java/io/opentelemetry => javaagent/src/main/java/io/opentelemetry/javaagent}/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesExtractor.java (94%) rename instrumentation/jsonrpc4j-1.3/{library/src/main/java/io/opentelemetry => javaagent/src/main/java/io/opentelemetry/javaagent}/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesGetter.java (90%) rename instrumentation/jsonrpc4j-1.3/{library/src/main/java/io/opentelemetry => javaagent/src/main/java/io/opentelemetry/javaagent}/instrumentation/jsonrpc4j/v1_3/JsonRpcClientRequest.java (91%) rename instrumentation/jsonrpc4j-1.3/{library/src/main/java/io/opentelemetry => javaagent/src/main/java/io/opentelemetry/javaagent}/instrumentation/jsonrpc4j/v1_3/JsonRpcClientResponse.java (81%) rename instrumentation/jsonrpc4j-1.3/{library/src/main/java/io/opentelemetry => javaagent/src/main/java/io/opentelemetry/javaagent}/instrumentation/jsonrpc4j/v1_3/JsonRpcClientSpanNameExtractor.java (89%) create mode 100644 instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientTelemetry.java create mode 100644 instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientTelemetryBuilder.java rename instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/{JsonRpcTelemetry.java => JsonRpcServerTelemetry.java} (54%) rename instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/{JsonRpcTelemetryBuilder.java => JsonRpcServerTelemetryBuilder.java} (56%) diff --git a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesExtractor.java b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesExtractor.java similarity index 94% rename from instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesExtractor.java rename to instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesExtractor.java index 626d0cc3be1a..7aa70422bb11 100644 --- a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesExtractor.java +++ b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesExtractor.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.jsonrpc4j.v1_3; +package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; diff --git a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesGetter.java b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesGetter.java similarity index 90% rename from instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesGetter.java rename to instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesGetter.java index f84ce8105d77..8cd2c482e513 100644 --- a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesGetter.java +++ b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesGetter.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.jsonrpc4j.v1_3; +package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3; import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter; @@ -23,7 +23,7 @@ public String getService(JsonRpcClientRequest request) { if (request.getMethod() != null) { return request.getMethod().getDeclaringClass().getName(); } - return "NOT_AVAILABLE"; + return null; } @Override diff --git a/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientInstrumentation.java b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientInstrumentation.java index d846ad0e1504..50dfc6b1748f 100644 --- a/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientInstrumentation.java +++ b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientInstrumentation.java @@ -16,8 +16,6 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcClientRequest; -import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcClientResponse; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.lang.reflect.Type; diff --git a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientRequest.java b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientRequest.java similarity index 91% rename from instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientRequest.java rename to instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientRequest.java index a7882ff6abc6..b567d39d4131 100644 --- a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientRequest.java +++ b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientRequest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.jsonrpc4j.v1_3; +package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3; import java.lang.reflect.Method; diff --git a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientResponse.java b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientResponse.java similarity index 81% rename from instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientResponse.java rename to instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientResponse.java index ac2108909b8f..bee409965d27 100644 --- a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientResponse.java +++ b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientResponse.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.jsonrpc4j.v1_3; +package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3; public final class JsonRpcClientResponse { diff --git a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientSpanNameExtractor.java b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientSpanNameExtractor.java similarity index 89% rename from instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientSpanNameExtractor.java rename to instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientSpanNameExtractor.java index d462a1cd8a7e..67cf84ae61fa 100644 --- a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientSpanNameExtractor.java +++ b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientSpanNameExtractor.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.jsonrpc4j.v1_3; +package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3; import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; import java.lang.reflect.Method; diff --git a/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientTelemetry.java b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientTelemetry.java new file mode 100644 index 000000000000..125a27818186 --- /dev/null +++ b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientTelemetry.java @@ -0,0 +1,32 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3; + +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.context.propagation.ContextPropagators; +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; + +public final class JsonRpcClientTelemetry { + public static JsonRpcClientTelemetry create(OpenTelemetry openTelemetry) { + return builder(openTelemetry).build(); + } + + public static JsonRpcClientTelemetryBuilder builder(OpenTelemetry openTelemetry) { + return new JsonRpcClientTelemetryBuilder(openTelemetry); + } + + private final Instrumenter clientInstrumenter; + + JsonRpcClientTelemetry( + Instrumenter clientInstrumenter, + ContextPropagators propagators) { + this.clientInstrumenter = clientInstrumenter; + } + + public Instrumenter getClientInstrumenter() { + return clientInstrumenter; + } +} diff --git a/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientTelemetryBuilder.java b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientTelemetryBuilder.java new file mode 100644 index 000000000000..b10bcb6e8708 --- /dev/null +++ b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientTelemetryBuilder.java @@ -0,0 +1,67 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3; + +import com.google.errorprone.annotations.CanIgnoreReturnValue; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcClientAttributesExtractor; +import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcClientMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; +import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder; +import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor; +import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; +import java.util.ArrayList; +import java.util.List; + +public class JsonRpcClientTelemetryBuilder { + + private static final String INSTRUMENTATION_NAME = "io.opentelemetry.jsonrpc4j-1.3"; + + private final OpenTelemetry openTelemetry; + + private final List< + AttributesExtractor> + additionalClientExtractors = new ArrayList<>(); + + JsonRpcClientTelemetryBuilder(OpenTelemetry openTelemetry) { + this.openTelemetry = openTelemetry; + } + + /** + * Adds an extra client-only {@link AttributesExtractor} to invoke to set attributes to + * instrumented items. The {@link AttributesExtractor} will be executed after all default + * extractors. + */ + @CanIgnoreReturnValue + public JsonRpcClientTelemetryBuilder addClientAttributeExtractor( + AttributesExtractor + attributesExtractor) { + additionalClientExtractors.add(attributesExtractor); + return this; + } + + public JsonRpcClientTelemetry build() { + SpanNameExtractor clientSpanNameExtractor = + new JsonRpcClientSpanNameExtractor(); + + InstrumenterBuilder clientInstrumenterBuilder = + Instrumenter.builder(openTelemetry, INSTRUMENTATION_NAME, clientSpanNameExtractor); + + JsonRpcClientAttributesGetter clientRpcAttributesGetter = + JsonRpcClientAttributesGetter.INSTANCE; + + clientInstrumenterBuilder + .addAttributesExtractor(RpcClientAttributesExtractor.create(clientRpcAttributesGetter)) + .addAttributesExtractors(additionalClientExtractors) + .addAttributesExtractor(new JsonRpcClientAttributesExtractor()) + .addOperationMetrics(RpcClientMetrics.get()); + + return new JsonRpcClientTelemetry( + clientInstrumenterBuilder.buildInstrumenter(SpanKindExtractor.alwaysClient()), + openTelemetry.getPropagators()); + } +} diff --git a/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcProxyInstrumentation.java b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcProxyInstrumentation.java index 5787536548c5..7a14f3b83819 100644 --- a/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcProxyInstrumentation.java +++ b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcProxyInstrumentation.java @@ -15,8 +15,6 @@ import com.googlecode.jsonrpc4j.IJsonRpcClient; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcClientRequest; -import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcClientResponse; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.lang.reflect.InvocationHandler; diff --git a/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcSingletons.java b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcSingletons.java index 85c9dc33c2a8..c09c745cf126 100644 --- a/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcSingletons.java +++ b/instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcSingletons.java @@ -8,9 +8,7 @@ import com.googlecode.jsonrpc4j.InvocationListener; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcClientRequest; -import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcClientResponse; -import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcTelemetry; +import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcServerTelemetry; public final class JsonRpcSingletons { @@ -19,10 +17,13 @@ public final class JsonRpcSingletons { public static final Instrumenter CLIENT_INSTRUMENTER; static { - JsonRpcTelemetry telemetry = JsonRpcTelemetry.builder(GlobalOpenTelemetry.get()).build(); + JsonRpcServerTelemetry serverTelemetry = + JsonRpcServerTelemetry.builder(GlobalOpenTelemetry.get()).build(); + JsonRpcClientTelemetry clientTelemetry = + JsonRpcClientTelemetry.builder(GlobalOpenTelemetry.get()).build(); - SERVER_INVOCATION_LISTENER = telemetry.newServerInvocationListener(); - CLIENT_INSTRUMENTER = telemetry.getClientInstrumenter(); + SERVER_INVOCATION_LISTENER = serverTelemetry.newServerInvocationListener(); + CLIENT_INSTRUMENTER = clientTelemetry.getClientInstrumenter(); } private JsonRpcSingletons() {} diff --git a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcTelemetry.java b/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcServerTelemetry.java similarity index 54% rename from instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcTelemetry.java rename to instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcServerTelemetry.java index a626a42b100d..b440c4cd4589 100644 --- a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcTelemetry.java +++ b/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcServerTelemetry.java @@ -10,33 +10,24 @@ import io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -public final class JsonRpcTelemetry { - public static JsonRpcTelemetry create(OpenTelemetry openTelemetry) { +public final class JsonRpcServerTelemetry { + public static JsonRpcServerTelemetry create(OpenTelemetry openTelemetry) { return builder(openTelemetry).build(); } - public static JsonRpcTelemetryBuilder builder(OpenTelemetry openTelemetry) { - return new JsonRpcTelemetryBuilder(openTelemetry); + public static JsonRpcServerTelemetryBuilder builder(OpenTelemetry openTelemetry) { + return new JsonRpcServerTelemetryBuilder(openTelemetry); } private final Instrumenter serverInstrumenter; - private final Instrumenter clientInstrumenter; - private final ContextPropagators propagators; - JsonRpcTelemetry( + JsonRpcServerTelemetry( Instrumenter serverInstrumenter, - Instrumenter clientInstrumenter, ContextPropagators propagators) { this.serverInstrumenter = serverInstrumenter; - this.clientInstrumenter = clientInstrumenter; - this.propagators = propagators; } public InvocationListener newServerInvocationListener() { return new OpenTelemetryJsonRpcInvocationListener(serverInstrumenter); } - - public Instrumenter getClientInstrumenter() { - return clientInstrumenter; - } } diff --git a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcTelemetryBuilder.java b/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcServerTelemetryBuilder.java similarity index 56% rename from instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcTelemetryBuilder.java rename to instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcServerTelemetryBuilder.java index aeb6da585f90..1fbfce04ddbf 100644 --- a/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcTelemetryBuilder.java +++ b/instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcServerTelemetryBuilder.java @@ -7,83 +7,51 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.api.OpenTelemetry; -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.RpcServerAttributesExtractor; import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcServerMetrics; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder; -import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor; import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; import java.util.ArrayList; import java.util.List; -public class JsonRpcTelemetryBuilder { +public class JsonRpcServerTelemetryBuilder { private static final String INSTRUMENTATION_NAME = "io.opentelemetry.jsonrpc4j-1.3"; private final OpenTelemetry openTelemetry; - private final List< - AttributesExtractor> - additionalClientExtractors = new ArrayList<>(); private final List< AttributesExtractor> additionalServerExtractors = new ArrayList<>(); - JsonRpcTelemetryBuilder(OpenTelemetry openTelemetry) { + JsonRpcServerTelemetryBuilder(OpenTelemetry openTelemetry) { this.openTelemetry = openTelemetry; } - /** - * Adds an extra client-only {@link AttributesExtractor} to invoke to set attributes to - * instrumented items. The {@link AttributesExtractor} will be executed after all default - * extractors. - */ - @CanIgnoreReturnValue - public JsonRpcTelemetryBuilder addClientAttributeExtractor( - AttributesExtractor - attributesExtractor) { - additionalClientExtractors.add(attributesExtractor); - return this; - } - /** * Adds an extra server-only {@link AttributesExtractor} to invoke to set attributes to * instrumented items. The {@link AttributesExtractor} will be executed after all default * extractors. */ @CanIgnoreReturnValue - public JsonRpcTelemetryBuilder addServerAttributeExtractor( + public JsonRpcServerTelemetryBuilder addServerAttributeExtractor( AttributesExtractor attributesExtractor) { additionalServerExtractors.add(attributesExtractor); return this; } - public JsonRpcTelemetry build() { - SpanNameExtractor clientSpanNameExtractor = - new JsonRpcClientSpanNameExtractor(); + public JsonRpcServerTelemetry build() { SpanNameExtractor serverSpanNameExtractor = new JsonRpcServerSpanNameExtractor(); - InstrumenterBuilder clientInstrumenterBuilder = - Instrumenter.builder(openTelemetry, INSTRUMENTATION_NAME, clientSpanNameExtractor); - InstrumenterBuilder serverInstrumenterBuilder = Instrumenter.builder(openTelemetry, INSTRUMENTATION_NAME, serverSpanNameExtractor); JsonRpcServerAttributesGetter serverRpcAttributesGetter = JsonRpcServerAttributesGetter.INSTANCE; - JsonRpcClientAttributesGetter clientRpcAttributesGetter = - JsonRpcClientAttributesGetter.INSTANCE; - - clientInstrumenterBuilder - .addAttributesExtractor(RpcClientAttributesExtractor.create(clientRpcAttributesGetter)) - .addAttributesExtractors(additionalClientExtractors) - .addAttributesExtractor(new JsonRpcClientAttributesExtractor()) - .addOperationMetrics(RpcClientMetrics.get()); serverInstrumenterBuilder .setSpanStatusExtractor(JsonRpcServerSpanStatusExtractor.INSTANCE) @@ -92,9 +60,8 @@ public JsonRpcTelemetry build() { .addAttributesExtractors(additionalServerExtractors) .addOperationMetrics(RpcServerMetrics.get()); - return new JsonRpcTelemetry( + return new JsonRpcServerTelemetry( serverInstrumenterBuilder.buildServerInstrumenter(JsonRpcServerRequestGetter.INSTANCE), - clientInstrumenterBuilder.buildInstrumenter(SpanKindExtractor.alwaysClient()), openTelemetry.getPropagators()); } } diff --git a/instrumentation/jsonrpc4j-1.3/library/src/test/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/LibraryJsonRpcTest.java b/instrumentation/jsonrpc4j-1.3/library/src/test/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/LibraryJsonRpcTest.java index 63e017601813..f6c592185fb9 100644 --- a/instrumentation/jsonrpc4j-1.3/library/src/test/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/LibraryJsonRpcTest.java +++ b/instrumentation/jsonrpc4j-1.3/library/src/test/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/LibraryJsonRpcTest.java @@ -23,7 +23,9 @@ protected InstrumentationExtension testing() { @Override protected JsonRpcBasicServer configureServer(JsonRpcBasicServer server) { server.setInvocationListener( - JsonRpcTelemetry.builder(testing.getOpenTelemetry()).build().newServerInvocationListener()); + JsonRpcServerTelemetry.builder(testing.getOpenTelemetry()) + .build() + .newServerInvocationListener()); return server; } }