diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesExtractor.java index 78f2c6b43de6..18a2cfd8434d 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesExtractor.java @@ -14,6 +14,7 @@ import io.opentelemetry.instrumentation.api.internal.SemconvStability; import io.opentelemetry.instrumentation.api.internal.SpanKey; import io.opentelemetry.instrumentation.api.internal.SpanKeyProvider; +import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor; import io.opentelemetry.instrumentation.api.semconv.network.internal.InternalNetworkAttributesExtractor; import javax.annotation.Nullable; @@ -44,6 +45,7 @@ public final class DbClientAttributesExtractor private final DbClientAttributesGetter getter; private final InternalNetworkAttributesExtractor internalNetworkExtractor; + private final ServerAttributesExtractor serverAttributesExtractor; /** Creates the database client attributes extractor with default configuration. */ public static AttributesExtractor create( @@ -56,6 +58,7 @@ public static AttributesExtractor create( internalNetworkExtractor = new InternalNetworkAttributesExtractor<>( getter, SemconvStability.emitOldDatabaseSemconv(), false); + serverAttributesExtractor = ServerAttributesExtractor.create(getter); } @Override @@ -74,6 +77,7 @@ public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST internalSet(attributes, DB_STATEMENT, getter.getDbQueryText(request)); internalSet(attributes, DB_OPERATION, getter.getDbOperationName(request)); } + serverAttributesExtractor.onStart(attributes, parentContext, request); } @Override diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesGetter.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesGetter.java index 2c3628f40c87..2f86a88b4976 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesGetter.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesGetter.java @@ -6,6 +6,7 @@ package io.opentelemetry.instrumentation.api.incubator.semconv.db; import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesGetter; +import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesGetter; import javax.annotation.Nullable; /** @@ -20,7 +21,7 @@ * OpenTelemetry specification. */ public interface DbClientAttributesGetter - extends NetworkAttributesGetter { + extends NetworkAttributesGetter, ServerAttributesGetter { @Deprecated @Nullable diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientSpanNameExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientSpanNameExtractor.java index ffcf7cb97341..8da6d2c50170 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientSpanNameExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientSpanNameExtractor.java @@ -18,7 +18,7 @@ public abstract class DbClientSpanNameExtractor implements SpanNameExtr * @see DbClientAttributesGetter#getDbNamespace(Object) used to extract {@code }. */ public static SpanNameExtractor create( - DbClientAttributesGetter getter) { + DbClientAttributesGetter getter) { return new GenericDbClientSpanNameExtractor<>(getter); } @@ -65,9 +65,9 @@ protected String computeSpanName(String dbName, String operation, String mainIde private static final class GenericDbClientSpanNameExtractor extends DbClientSpanNameExtractor { - private final DbClientAttributesGetter getter; + private final DbClientAttributesGetter getter; - private GenericDbClientSpanNameExtractor(DbClientAttributesGetter getter) { + private GenericDbClientSpanNameExtractor(DbClientAttributesGetter getter) { this.getter = getter; } diff --git a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseAttributesGetter.java b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseAttributesGetter.java index 7557ce3fdddd..1313982c75fb 100644 --- a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseAttributesGetter.java +++ b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseAttributesGetter.java @@ -7,6 +7,8 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientAttributesGetter; import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; +import java.net.InetSocketAddress; +import java.net.SocketAddress; import javax.annotation.Nullable; final class CouchbaseAttributesGetter @@ -48,4 +50,15 @@ public String getDbQueryText(CouchbaseRequestInfo couchbaseRequest) { public String getDbOperationName(CouchbaseRequestInfo couchbaseRequest) { return couchbaseRequest.operation(); } + + @Nullable + @Override + public InetSocketAddress getNetworkPeerInetSocketAddress( + CouchbaseRequestInfo couchbaseRequest, @Nullable Void unused) { + SocketAddress peerAddress = couchbaseRequest.getPeerAddress(); + if (peerAddress instanceof InetSocketAddress) { + return (InetSocketAddress) peerAddress; + } + return null; + } } diff --git a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseNetworkAttributesGetter.java b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseNetworkAttributesGetter.java deleted file mode 100644 index a551acdb322b..000000000000 --- a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseNetworkAttributesGetter.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.couchbase.v2_0; - -import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesGetter; -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import javax.annotation.Nullable; - -public class CouchbaseNetworkAttributesGetter - implements NetworkAttributesGetter { - - @Nullable - @Override - public InetSocketAddress getNetworkPeerInetSocketAddress( - CouchbaseRequestInfo couchbaseRequest, @Nullable Void unused) { - SocketAddress peerAddress = couchbaseRequest.getPeerAddress(); - if (peerAddress instanceof InetSocketAddress) { - return (InetSocketAddress) peerAddress; - } - return null; - } -} diff --git a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseSingletons.java b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseSingletons.java index 0e6c3eee550a..6fb754da9d7d 100644 --- a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseSingletons.java +++ b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseSingletons.java @@ -12,7 +12,6 @@ import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder; import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor; import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; -import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesExtractor; import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; public final class CouchbaseSingletons { @@ -25,13 +24,11 @@ public final class CouchbaseSingletons { CouchbaseAttributesGetter couchbaseAttributesGetter = new CouchbaseAttributesGetter(); SpanNameExtractor spanNameExtractor = new CouchbaseSpanNameExtractor(DbClientSpanNameExtractor.create(couchbaseAttributesGetter)); - CouchbaseNetworkAttributesGetter netAttributesGetter = new CouchbaseNetworkAttributesGetter(); InstrumenterBuilder builder = Instrumenter.builder( GlobalOpenTelemetry.get(), INSTRUMENTATION_NAME, spanNameExtractor) .addAttributesExtractor(DbClientAttributesExtractor.create(couchbaseAttributesGetter)) - .addAttributesExtractor(NetworkAttributesExtractor.create(netAttributesGetter)) .addContextCustomizer( (context, couchbaseRequest, startAttributes) -> CouchbaseRequestInfo.init(context, couchbaseRequest)); diff --git a/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisDbAttributesGetter.java b/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisDbAttributesGetter.java index 7fe41f093445..d3a36275752f 100644 --- a/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisDbAttributesGetter.java +++ b/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisDbAttributesGetter.java @@ -7,6 +7,8 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientAttributesGetter; import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; +import java.net.InetSocketAddress; +import java.net.SocketAddress; import javax.annotation.Nullable; final class JedisDbAttributesGetter implements DbClientAttributesGetter { @@ -43,4 +45,15 @@ public String getDbQueryText(JedisRequest request) { public String getDbOperationName(JedisRequest request) { return request.getOperation(); } + + @Override + @Nullable + public InetSocketAddress getNetworkPeerInetSocketAddress( + JedisRequest jedisRequest, @Nullable Void unused) { + SocketAddress socketAddress = jedisRequest.getRemoteSocketAddress(); + if (socketAddress instanceof InetSocketAddress) { + return (InetSocketAddress) socketAddress; + } + return null; + } } diff --git a/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisNetworkAttributesGetter.java b/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisNetworkAttributesGetter.java deleted file mode 100644 index 900ba8e08e69..000000000000 --- a/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisNetworkAttributesGetter.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.jedis.v4_0; - -import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesGetter; -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import javax.annotation.Nullable; - -final class JedisNetworkAttributesGetter implements NetworkAttributesGetter { - - @Override - @Nullable - public InetSocketAddress getNetworkPeerInetSocketAddress( - JedisRequest jedisRequest, @Nullable Void unused) { - SocketAddress socketAddress = jedisRequest.getRemoteSocketAddress(); - if (socketAddress instanceof InetSocketAddress) { - return (InetSocketAddress) socketAddress; - } - return null; - } -} diff --git a/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisSingletons.java b/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisSingletons.java index b22c482227a0..929387ae3a4a 100644 --- a/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisSingletons.java +++ b/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisSingletons.java @@ -10,7 +10,6 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor; -import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesExtractor; public final class JedisSingletons { private static final String INSTRUMENTATION_NAME = "io.opentelemetry.jedis-4.0"; @@ -19,7 +18,6 @@ public final class JedisSingletons { static { JedisDbAttributesGetter dbAttributesGetter = new JedisDbAttributesGetter(); - JedisNetworkAttributesGetter netAttributesGetter = new JedisNetworkAttributesGetter(); INSTRUMENTER = Instrumenter.builder( @@ -27,7 +25,6 @@ public final class JedisSingletons { INSTRUMENTATION_NAME, DbClientSpanNameExtractor.create(dbAttributesGetter)) .addAttributesExtractor(DbClientAttributesExtractor.create(dbAttributesGetter)) - .addAttributesExtractor(NetworkAttributesExtractor.create(netAttributesGetter)) .buildInstrumenter(SpanKindExtractor.alwaysClient()); } diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcInstrumenterBuilder.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcInstrumenterBuilder.java index 0b15861ff915..22a8fc782e5d 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcInstrumenterBuilder.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcInstrumenterBuilder.java @@ -13,7 +13,6 @@ import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor; import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; -import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor; import java.util.ArrayList; import java.util.List; import java.util.function.Function; @@ -46,6 +45,7 @@ public Instrumenter build( Function, ? extends SpanNameExtractor> spanNameExtractorTransformer, boolean statementSanitizationEnabled) { + SpanNameExtractor spanNameExtractor = spanNameExtractorTransformer.apply( DbClientSpanNameExtractor.create(R2dbcSqlAttributesGetter.INSTANCE)); @@ -56,7 +56,6 @@ public Instrumenter build( SqlClientAttributesExtractor.builder(R2dbcSqlAttributesGetter.INSTANCE) .setStatementSanitizationEnabled(statementSanitizationEnabled) .build()) - .addAttributesExtractor(ServerAttributesExtractor.create(R2dbcNetAttributesGetter.INSTANCE)) .addAttributesExtractors(additionalExtractors) .buildInstrumenter(SpanKindExtractor.alwaysClient()); } diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java deleted file mode 100644 index a50799c26984..000000000000 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.r2dbc.v1_0.internal; - -import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesGetter; -import javax.annotation.Nullable; - -/** - * This class is internal and is hence not for public use. Its APIs are unstable and can change at - * any time. - */ -public enum R2dbcNetAttributesGetter implements ServerAttributesGetter { - INSTANCE; - - @Nullable - @Override - public String getServerAddress(DbExecution request) { - return request.getHost(); - } - - @Nullable - @Override - public Integer getServerPort(DbExecution request) { - return request.getPort(); - } -} diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java index 9f0a259d5ae9..cc19846e2862 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java @@ -12,7 +12,7 @@ * This class is internal and is hence not for public use. Its APIs are unstable and can change at * any time. */ -public enum R2dbcSqlAttributesGetter implements SqlClientAttributesGetter { +public enum R2dbcSqlAttributesGetter implements SqlClientAttributesGetter { INSTANCE; @Override @@ -45,4 +45,16 @@ public String getConnectionString(DbExecution request) { public String getRawQueryText(DbExecution request) { return request.getRawQueryText(); } + + @Nullable + @Override + public String getServerAddress(DbExecution request) { + return request.getHost(); + } + + @Nullable + @Override + public Integer getServerPort(DbExecution request) { + return request.getPort(); + } } diff --git a/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonDbAttributesGetter.java b/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonDbAttributesGetter.java index d809d9d42821..d028a47a3827 100644 --- a/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonDbAttributesGetter.java +++ b/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonDbAttributesGetter.java @@ -7,6 +7,7 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientAttributesGetter; import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; +import java.net.InetSocketAddress; import javax.annotation.Nullable; final class RedissonDbAttributesGetter implements DbClientAttributesGetter { @@ -45,4 +46,10 @@ public String getDbQueryText(RedissonRequest request) { public String getDbOperationName(RedissonRequest request) { return request.getOperation(); } + + @Override + public InetSocketAddress getNetworkPeerInetSocketAddress( + RedissonRequest request, @Nullable Void unused) { + return request.getAddress(); + } } diff --git a/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonInstrumenterFactory.java b/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonInstrumenterFactory.java index 39dc2034ec19..da09abdaf1bd 100644 --- a/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonInstrumenterFactory.java +++ b/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonInstrumenterFactory.java @@ -10,20 +10,17 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor; -import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesExtractor; public final class RedissonInstrumenterFactory { public static Instrumenter createInstrumenter(String instrumentationName) { RedissonDbAttributesGetter dbAttributesGetter = new RedissonDbAttributesGetter(); - RedissonNetAttributesGetter netAttributesGetter = new RedissonNetAttributesGetter(); return Instrumenter.builder( GlobalOpenTelemetry.get(), instrumentationName, DbClientSpanNameExtractor.create(dbAttributesGetter)) .addAttributesExtractor(DbClientAttributesExtractor.create(dbAttributesGetter)) - .addAttributesExtractor(NetworkAttributesExtractor.create(netAttributesGetter)) .buildInstrumenter(SpanKindExtractor.alwaysClient()); } diff --git a/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonNetAttributesGetter.java b/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonNetAttributesGetter.java deleted file mode 100644 index a1739cff1104..000000000000 --- a/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonNetAttributesGetter.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.redisson; - -import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesGetter; -import java.net.InetSocketAddress; -import javax.annotation.Nullable; - -final class RedissonNetAttributesGetter implements NetworkAttributesGetter { - - @Override - public InetSocketAddress getNetworkPeerInetSocketAddress( - RedissonRequest request, @Nullable Void unused) { - return request.getAddress(); - } -}