diff --git a/conventions/src/main/kotlin/otel.javaagent-instrumentation.gradle.kts b/conventions/src/main/kotlin/otel.javaagent-instrumentation.gradle.kts index 24542bc5e37e..2fe5adb596bf 100644 --- a/conventions/src/main/kotlin/otel.javaagent-instrumentation.gradle.kts +++ b/conventions/src/main/kotlin/otel.javaagent-instrumentation.gradle.kts @@ -22,3 +22,7 @@ configurations { extendsFrom(bootstrap) } } + +dependencies { + api("io.opentelemetry.semconv:opentelemetry-semconv-incubating") +} diff --git a/instrumentation-api-incubator/build.gradle.kts b/instrumentation-api-incubator/build.gradle.kts index f901051e5438..6acb75e5f79d 100644 --- a/instrumentation-api-incubator/build.gradle.kts +++ b/instrumentation-api-incubator/build.gradle.kts @@ -12,7 +12,6 @@ group = "io.opentelemetry.instrumentation" dependencies { api("io.opentelemetry.semconv:opentelemetry-semconv") - api("io.opentelemetry.semconv:opentelemetry-semconv-incubating") api(project(":instrumentation-api")) implementation("io.opentelemetry:opentelemetry-api-incubator") diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/code/CodeAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/code/CodeAttributesExtractor.java index ededeae6686d..a258c20aa516 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/code/CodeAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/code/CodeAttributesExtractor.java @@ -7,10 +7,10 @@ import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes; import javax.annotation.Nullable; /** @@ -21,6 +21,11 @@ public final class CodeAttributesExtractor implements AttributesExtractor { + // copied from CodeIncubatingAttributes + private static final AttributeKey CODE_FUNCTION = AttributeKey.stringKey("code.function"); + private static final AttributeKey CODE_NAMESPACE = + AttributeKey.stringKey("code.namespace"); + /** Creates the code attributes extractor. */ public static AttributesExtractor create( CodeAttributesGetter getter) { @@ -37,9 +42,9 @@ private CodeAttributesExtractor(CodeAttributesGetter getter) { public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) { Class cls = getter.getCodeClass(request); if (cls != null) { - internalSet(attributes, CodeIncubatingAttributes.CODE_NAMESPACE, cls.getName()); + internalSet(attributes, CODE_NAMESPACE, cls.getName()); } - internalSet(attributes, CodeIncubatingAttributes.CODE_FUNCTION, getter.getMethodName(request)); + internalSet(attributes, CODE_FUNCTION, getter.getMethodName(request)); } @Override 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 83682e91132b..09c8fbc72570 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 @@ -7,10 +7,10 @@ import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; /** * Extractor of extends DbClientCommonAttributesExtractor< REQUEST, RESPONSE, DbClientAttributesGetter> { + // copied from DbIncubatingAttributes + private static final AttributeKey DB_STATEMENT = AttributeKey.stringKey("db.statement"); + private static final AttributeKey DB_OPERATION = AttributeKey.stringKey("db.operation"); + /** Creates the database client attributes extractor with default configuration. */ public static AttributesExtractor create( DbClientAttributesGetter getter) { @@ -38,7 +42,7 @@ public static AttributesExtractor create( public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) { super.onStart(attributes, parentContext, request); - internalSet(attributes, DbIncubatingAttributes.DB_STATEMENT, getter.getStatement(request)); - internalSet(attributes, DbIncubatingAttributes.DB_OPERATION, getter.getOperation(request)); + internalSet(attributes, DB_STATEMENT, getter.getStatement(request)); + internalSet(attributes, DB_OPERATION, getter.getOperation(request)); } } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientCommonAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientCommonAttributesExtractor.java index 96b9225ce01c..64390001c780 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientCommonAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientCommonAttributesExtractor.java @@ -7,18 +7,23 @@ import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.internal.SpanKey; import io.opentelemetry.instrumentation.api.internal.SpanKeyProvider; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import javax.annotation.Nullable; abstract class DbClientCommonAttributesExtractor< REQUEST, RESPONSE, GETTER extends DbClientCommonAttributesGetter> implements AttributesExtractor, SpanKeyProvider { + // copied from DbIncubatingAttributes + private static final AttributeKey DB_NAME = AttributeKey.stringKey("db.name"); + private static final AttributeKey DB_SYSTEM = AttributeKey.stringKey("db.system"); + private static final AttributeKey DB_USER = AttributeKey.stringKey("db.user"); + final GETTER getter; DbClientCommonAttributesExtractor(GETTER getter) { @@ -27,9 +32,9 @@ abstract class DbClientCommonAttributesExtractor< @Override public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) { - internalSet(attributes, DbIncubatingAttributes.DB_SYSTEM, getter.getSystem(request)); - internalSet(attributes, DbIncubatingAttributes.DB_USER, getter.getUser(request)); - internalSet(attributes, DbIncubatingAttributes.DB_NAME, getter.getName(request)); + internalSet(attributes, DB_SYSTEM, getter.getSystem(request)); + internalSet(attributes, DB_USER, getter.getUser(request)); + internalSet(attributes, DB_NAME, getter.getName(request)); } @Override diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesExtractor.java index 0b4754ad2ab3..b33d2e7a8673 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesExtractor.java @@ -11,7 +11,6 @@ import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; /** * Extractor of . This class is designed with SQL (or SQL-like) database clients in mind. * *

It sets the same set of attributes as {@link DbClientAttributesExtractor} plus an additional - * {@link DbIncubatingAttributes#DB_SQL_TABLE} attribute. The raw SQL statements - * returned by the {@link SqlClientAttributesGetter#getRawStatement(Object)} method are sanitized - * before use, all statement parameters are removed. + * db.sql.table attribute. The raw SQL statements returned by the {@link + * SqlClientAttributesGetter#getRawStatement(Object)} method are sanitized before use, all statement + * parameters are removed. */ public final class SqlClientAttributesExtractor extends DbClientCommonAttributesExtractor< REQUEST, RESPONSE, SqlClientAttributesGetter> { + // copied from DbIncubatingAttributes + private static final AttributeKey DB_OPERATION = AttributeKey.stringKey("db.operation"); + private static final AttributeKey DB_STATEMENT = AttributeKey.stringKey("db.statement"); + /** Creates the SQL client attributes extractor with default configuration. */ public static AttributesExtractor create( SqlClientAttributesGetter getter) { @@ -62,9 +65,8 @@ public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST SqlStatementInfo sanitizedStatement = sanitizer.sanitize(getter.getRawStatement(request)); String operation = sanitizedStatement.getOperation(); - internalSet( - attributes, DbIncubatingAttributes.DB_STATEMENT, sanitizedStatement.getFullStatement()); - internalSet(attributes, DbIncubatingAttributes.DB_OPERATION, operation); + internalSet(attributes, DB_STATEMENT, sanitizedStatement.getFullStatement()); + internalSet(attributes, DB_OPERATION, operation); if (!SQL_CALL.equals(operation)) { internalSet(attributes, dbTableAttribute, sanitizedStatement.getMainIdentifier()); } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesExtractorBuilder.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesExtractorBuilder.java index 083cfa503e7e..b8e0838020f9 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesExtractorBuilder.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesExtractorBuilder.java @@ -10,13 +10,15 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; /** A builder of {@link SqlClientAttributesExtractor}. */ public final class SqlClientAttributesExtractorBuilder { + // copied from DbIncubatingAttributes + private static final AttributeKey DB_SQL_TABLE = AttributeKey.stringKey("db.sql.table"); + final SqlClientAttributesGetter getter; - AttributeKey dbTableAttribute = DbIncubatingAttributes.DB_SQL_TABLE; + AttributeKey dbTableAttribute = DB_SQL_TABLE; boolean statementSanitizationEnabled = true; SqlClientAttributesExtractorBuilder(SqlClientAttributesGetter getter) { @@ -26,7 +28,7 @@ public final class SqlClientAttributesExtractorBuilder { /** * Configures the extractor to set the table value extracted by the {@link * SqlClientAttributesExtractor} under the {@code dbTableAttribute} key. By default, the - * {@link DbIncubatingAttributes#DB_SQL_TABLE} attribute is used. + * db.sql.table attribute is used. * * @param dbTableAttribute The {@link AttributeKey} under which the table extracted by the {@link * SqlClientAttributesExtractor} will be stored. diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpClientPeerServiceAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpClientPeerServiceAttributesExtractor.java index 57ea59d3bbe2..2f4066aeec7c 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpClientPeerServiceAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpClientPeerServiceAttributesExtractor.java @@ -5,13 +5,13 @@ package io.opentelemetry.instrumentation.api.incubator.semconv.http; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.incubator.semconv.net.PeerServiceResolver; import io.opentelemetry.instrumentation.api.incubator.semconv.net.internal.UrlParser; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.incubating.PeerIncubatingAttributes; import java.util.function.Supplier; import javax.annotation.Nullable; @@ -23,6 +23,9 @@ public final class HttpClientPeerServiceAttributesExtractor implements AttributesExtractor { + // copied from PeerIncubatingAttributes + private static final AttributeKey PEER_SERVICE = AttributeKey.stringKey("peer.service"); + private final HttpClientAttributesGetter attributesGetter; private final PeerServiceResolver peerServiceResolver; @@ -67,7 +70,7 @@ public void onEnd( Supplier pathSupplier = () -> getUrlPath(attributesGetter, request); String peerService = mapToPeerService(serverAddress, serverPort, pathSupplier); if (peerService != null) { - attributes.put(PeerIncubatingAttributes.PEER_SERVICE, peerService); + attributes.put(PEER_SERVICE, peerService); } } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpExperimentalAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpExperimentalAttributesExtractor.java index 18e0634dddfe..730a078882c1 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpExperimentalAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpExperimentalAttributesExtractor.java @@ -7,19 +7,25 @@ import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter; import io.opentelemetry.instrumentation.api.semconv.http.HttpCommonAttributesGetter; import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesGetter; -import io.opentelemetry.semconv.incubating.HttpIncubatingAttributes; import java.util.List; import javax.annotation.Nullable; public final class HttpExperimentalAttributesExtractor implements AttributesExtractor { + // copied from HttpIncubatingAttributes + static final AttributeKey HTTP_REQUEST_BODY_SIZE = + AttributeKey.longKey("http.request.body.size"); + static final AttributeKey HTTP_RESPONSE_BODY_SIZE = + AttributeKey.longKey("http.response.body.size"); + public static AttributesExtractor create( HttpClientAttributesGetter getter) { return new HttpExperimentalAttributesExtractor<>(getter); @@ -49,11 +55,11 @@ public void onEnd( @Nullable Throwable error) { Long requestBodySize = requestBodySize(request); - internalSet(attributes, HttpIncubatingAttributes.HTTP_REQUEST_BODY_SIZE, requestBodySize); + internalSet(attributes, HTTP_REQUEST_BODY_SIZE, requestBodySize); if (response != null) { Long responseBodySize = responseBodySize(request, response); - internalSet(attributes, HttpIncubatingAttributes.HTTP_RESPONSE_BODY_SIZE, responseBodySize); + internalSet(attributes, HTTP_RESPONSE_BODY_SIZE, responseBodySize); } } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpMessageBodySizeUtil.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpMessageBodySizeUtil.java index 61aa7cc3850d..6b1847d2c40c 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpMessageBodySizeUtil.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/http/HttpMessageBodySizeUtil.java @@ -7,19 +7,19 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.semconv.incubating.HttpIncubatingAttributes; import javax.annotation.Nullable; final class HttpMessageBodySizeUtil { @Nullable static Long getHttpRequestBodySize(Attributes... attributesList) { - return getAttribute(HttpIncubatingAttributes.HTTP_REQUEST_BODY_SIZE, attributesList); + return getAttribute(HttpExperimentalAttributesExtractor.HTTP_REQUEST_BODY_SIZE, attributesList); } @Nullable static Long getHttpResponseBodySize(Attributes... attributesList) { - return getAttribute(HttpIncubatingAttributes.HTTP_RESPONSE_BODY_SIZE, attributesList); + return getAttribute( + HttpExperimentalAttributesExtractor.HTTP_RESPONSE_BODY_SIZE, attributesList); } @Nullable diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/messaging/MessagingAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/messaging/MessagingAttributesExtractor.java index 0c5b6125be60..f49d267f7989 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/messaging/MessagingAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/messaging/MessagingAttributesExtractor.java @@ -7,12 +7,12 @@ import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.internal.SpanKey; import io.opentelemetry.instrumentation.api.internal.SpanKeyProvider; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.util.List; import javax.annotation.Nullable; @@ -27,6 +27,32 @@ public final class MessagingAttributesExtractor implements AttributesExtractor, SpanKeyProvider { + // copied from MessagingIncubatingAttributes + private static final AttributeKey MESSAGING_BATCH_MESSAGE_COUNT = + AttributeKey.longKey("messaging.batch.message_count"); + private static final AttributeKey MESSAGING_CLIENT_ID = + AttributeKey.stringKey("messaging.client_id"); + private static final AttributeKey MESSAGING_DESTINATION_ANONYMOUS = + AttributeKey.booleanKey("messaging.destination.anonymous"); + private static final AttributeKey MESSAGING_DESTINATION_NAME = + AttributeKey.stringKey("messaging.destination.name"); + private static final AttributeKey MESSAGING_DESTINATION_TEMPLATE = + AttributeKey.stringKey("messaging.destination.template"); + private static final AttributeKey MESSAGING_DESTINATION_TEMPORARY = + AttributeKey.booleanKey("messaging.destination.temporary"); + private static final AttributeKey MESSAGING_MESSAGE_BODY_SIZE = + AttributeKey.longKey("messaging.message.body.size"); + private static final AttributeKey MESSAGING_MESSAGE_CONVERSATION_ID = + AttributeKey.stringKey("messaging.message.conversation_id"); + private static final AttributeKey MESSAGING_MESSAGE_ENVELOPE_SIZE = + AttributeKey.longKey("messaging.message.envelope.size"); + private static final AttributeKey MESSAGING_MESSAGE_ID = + AttributeKey.stringKey("messaging.message.id"); + private static final AttributeKey MESSAGING_OPERATION = + AttributeKey.stringKey("messaging.operation"); + private static final AttributeKey MESSAGING_SYSTEM = + AttributeKey.stringKey("messaging.system"); + static final String TEMP_DESTINATION_NAME = "(temporary)"; /** @@ -62,46 +88,27 @@ public static MessagingAttributesExtractorBuilder values = getter.getMessageHeader(request, name); diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/net/PeerServiceAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/net/PeerServiceAttributesExtractor.java index b910fb1d9d9e..d2f9e3233c73 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/net/PeerServiceAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/net/PeerServiceAttributesExtractor.java @@ -5,11 +5,11 @@ package io.opentelemetry.instrumentation.api.incubator.semconv.net; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesGetter; -import io.opentelemetry.semconv.incubating.PeerIncubatingAttributes; import javax.annotation.Nullable; /** @@ -20,6 +20,9 @@ public final class PeerServiceAttributesExtractor implements AttributesExtractor { + // copied from PeerIncubatingAttributes + private static final AttributeKey PEER_SERVICE = AttributeKey.stringKey("peer.service"); + private final ServerAttributesGetter attributesGetter; private final PeerServiceResolver peerServiceResolver; @@ -60,7 +63,7 @@ public void onEnd( Integer serverPort = attributesGetter.getServerPort(request); String peerService = mapToPeerService(serverAddress, serverPort); if (peerService != null) { - attributes.put(PeerIncubatingAttributes.PEER_SERVICE, peerService); + attributes.put(PEER_SERVICE, peerService); } } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcCommonAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcCommonAttributesExtractor.java index 72cade9e84b0..f731e703586c 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcCommonAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcCommonAttributesExtractor.java @@ -7,15 +7,20 @@ import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import javax.annotation.Nullable; abstract class RpcCommonAttributesExtractor implements AttributesExtractor { + // copied from RpcIncubatingAttributes + static final AttributeKey RPC_METHOD = AttributeKey.stringKey("rpc.method"); + static final AttributeKey RPC_SERVICE = AttributeKey.stringKey("rpc.service"); + static final AttributeKey RPC_SYSTEM = AttributeKey.stringKey("rpc.system"); + private final RpcAttributesGetter getter; RpcCommonAttributesExtractor(RpcAttributesGetter getter) { @@ -24,9 +29,9 @@ abstract class RpcCommonAttributesExtractor @Override public final void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) { - internalSet(attributes, RpcIncubatingAttributes.RPC_SYSTEM, getter.getSystem(request)); - internalSet(attributes, RpcIncubatingAttributes.RPC_SERVICE, getter.getService(request)); - internalSet(attributes, RpcIncubatingAttributes.RPC_METHOD, getter.getMethod(request)); + internalSet(attributes, RPC_SYSTEM, getter.getSystem(request)); + internalSet(attributes, RPC_SERVICE, getter.getService(request)); + internalSet(attributes, RPC_METHOD, getter.getMethod(request)); } @Override diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcMetricsAdvice.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcMetricsAdvice.java index 7b3ef9bb78f2..0a24cca3f39c 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcMetricsAdvice.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcMetricsAdvice.java @@ -5,15 +5,19 @@ package io.opentelemetry.instrumentation.api.incubator.semconv.rpc; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogramBuilder; import io.opentelemetry.api.metrics.DoubleHistogramBuilder; import io.opentelemetry.semconv.NetworkAttributes; import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.util.Arrays; final class RpcMetricsAdvice { + // copied from RpcIncubatingAttributes + private static final AttributeKey RPC_GRPC_STATUS_CODE = + AttributeKey.longKey("rpc.grpc.status_code"); + static void applyClientDurationAdvice(DoubleHistogramBuilder builder) { if (!(builder instanceof ExtendedDoubleHistogramBuilder)) { return; @@ -23,10 +27,10 @@ static void applyClientDurationAdvice(DoubleHistogramBuilder builder) { ((ExtendedDoubleHistogramBuilder) builder) .setAttributesAdvice( Arrays.asList( - RpcIncubatingAttributes.RPC_SYSTEM, - RpcIncubatingAttributes.RPC_SERVICE, - RpcIncubatingAttributes.RPC_METHOD, - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RpcCommonAttributesExtractor.RPC_SYSTEM, + RpcCommonAttributesExtractor.RPC_SERVICE, + RpcCommonAttributesExtractor.RPC_METHOD, + RPC_GRPC_STATUS_CODE, NetworkAttributes.NETWORK_TYPE, NetworkAttributes.NETWORK_TRANSPORT, ServerAttributes.SERVER_ADDRESS, @@ -42,10 +46,10 @@ static void applyServerDurationAdvice(DoubleHistogramBuilder builder) { ((ExtendedDoubleHistogramBuilder) builder) .setAttributesAdvice( Arrays.asList( - RpcIncubatingAttributes.RPC_SYSTEM, - RpcIncubatingAttributes.RPC_SERVICE, - RpcIncubatingAttributes.RPC_METHOD, - RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, + RpcCommonAttributesExtractor.RPC_SYSTEM, + RpcCommonAttributesExtractor.RPC_SERVICE, + RpcCommonAttributesExtractor.RPC_METHOD, + RPC_GRPC_STATUS_CODE, NetworkAttributes.NETWORK_TYPE, NetworkAttributes.NETWORK_TRANSPORT, ServerAttributes.SERVER_ADDRESS, diff --git a/instrumentation-api/build.gradle.kts b/instrumentation-api/build.gradle.kts index 047a23fecda2..07c476fd8b94 100644 --- a/instrumentation-api/build.gradle.kts +++ b/instrumentation-api/build.gradle.kts @@ -15,7 +15,6 @@ dependencies { api("io.opentelemetry:opentelemetry-api") implementation("io.opentelemetry:opentelemetry-api-incubator") implementation("io.opentelemetry.semconv:opentelemetry-semconv") - implementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating") compileOnly("com.google.auto.value:auto-value-annotations") annotationProcessor("com.google.auto.value:auto-value") diff --git a/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboTelemetryBuilder.java b/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboTelemetryBuilder.java index 851d3216f5d4..83fb14de6ff4 100644 --- a/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboTelemetryBuilder.java +++ b/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboTelemetryBuilder.java @@ -7,6 +7,7 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.common.AttributeKey; 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.RpcServerAttributesExtractor; @@ -17,7 +18,6 @@ import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesExtractor; import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor; -import io.opentelemetry.semconv.incubating.PeerIncubatingAttributes; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; @@ -28,6 +28,9 @@ public final class DubboTelemetryBuilder { private static final String INSTRUMENTATION_NAME = "io.opentelemetry.apache-dubbo-2.7"; + // copied from PeerIncubatingAttributes + private static final AttributeKey PEER_SERVICE = AttributeKey.stringKey("peer.service"); + private final OpenTelemetry openTelemetry; @Nullable private String peerService; private final List> attributesExtractors = @@ -82,7 +85,7 @@ public DubboTelemetry build() { if (peerService != null) { clientInstrumenterBuilder.addAttributesExtractor( - AttributesExtractor.constant(PeerIncubatingAttributes.PEER_SERVICE, peerService)); + AttributesExtractor.constant(PEER_SERVICE, peerService)); } return new DubboTelemetry( diff --git a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaTelemetryBuilder.java b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaTelemetryBuilder.java index d962ba560581..8fe8f7051e41 100644 --- a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaTelemetryBuilder.java +++ b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaTelemetryBuilder.java @@ -11,6 +11,7 @@ import com.linecorp.armeria.common.logging.RequestLog; import com.linecorp.armeria.server.ServiceRequestContext; import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpClientExperimentalMetrics; import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpExperimentalAttributesExtractor; import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpServerExperimentalMetrics; @@ -30,7 +31,6 @@ import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanNameExtractorBuilder; import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanStatusExtractor; import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaHttpClientAttributesGetter; -import io.opentelemetry.semconv.incubating.PeerIncubatingAttributes; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -41,6 +41,8 @@ public final class ArmeriaTelemetryBuilder { private static final String INSTRUMENTATION_NAME = "io.opentelemetry.armeria-1.3"; + // copied from PeerIncubatingAttributes + private static final AttributeKey PEER_SERVICE = AttributeKey.stringKey("peer.service"); private final OpenTelemetry openTelemetry; @Nullable private String peerService; @@ -243,7 +245,7 @@ public ArmeriaTelemetry build() { if (peerService != null) { clientInstrumenterBuilder.addAttributesExtractor( - AttributesExtractor.constant(PeerIncubatingAttributes.PEER_SERVICE, peerService)); + AttributesExtractor.constant(PEER_SERVICE, peerService)); } if (emitExperimentalHttpClientMetrics) { clientInstrumenterBuilder diff --git a/instrumentation/aws-lambda/aws-lambda-core-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambdacore/v1_0/internal/AwsLambdaFunctionAttributesExtractor.java b/instrumentation/aws-lambda/aws-lambda-core-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambdacore/v1_0/internal/AwsLambdaFunctionAttributesExtractor.java index 51cebaeecc9c..d2d4569563e6 100644 --- a/instrumentation/aws-lambda/aws-lambda-core-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambdacore/v1_0/internal/AwsLambdaFunctionAttributesExtractor.java +++ b/instrumentation/aws-lambda/aws-lambda-core-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambdacore/v1_0/internal/AwsLambdaFunctionAttributesExtractor.java @@ -6,11 +6,10 @@ package io.opentelemetry.instrumentation.awslambdacore.v1_0.internal; import com.amazonaws.services.lambda.runtime.Context; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.awslambdacore.v1_0.AwsLambdaRequest; -import io.opentelemetry.semconv.incubating.CloudIncubatingAttributes; -import io.opentelemetry.semconv.incubating.FaasIncubatingAttributes; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; @@ -23,6 +22,15 @@ public final class AwsLambdaFunctionAttributesExtractor implements AttributesExtractor { + // copied from FaasIncubatingAttributes + private static final AttributeKey FAAS_INVOCATION_ID = + AttributeKey.stringKey("faas.invocation_id"); + // copied from CloudIncubatingAttributes + private static final AttributeKey CLOUD_ACCOUNT_ID = + AttributeKey.stringKey("cloud.account.id"); + private static final AttributeKey CLOUD_RESOURCE_ID = + AttributeKey.stringKey("cloud.resource_id"); + @Nullable private static final MethodHandle GET_FUNCTION_ARN; static { @@ -47,11 +55,11 @@ public void onStart( io.opentelemetry.context.Context parentContext, AwsLambdaRequest request) { Context awsContext = request.getAwsContext(); - attributes.put(FaasIncubatingAttributes.FAAS_INVOCATION_ID, awsContext.getAwsRequestId()); + attributes.put(FAAS_INVOCATION_ID, awsContext.getAwsRequestId()); String arn = getFunctionArn(awsContext); if (arn != null) { - attributes.put(CloudIncubatingAttributes.CLOUD_RESOURCE_ID, arn); - attributes.put(CloudIncubatingAttributes.CLOUD_ACCOUNT_ID, getAccountId(arn)); + attributes.put(CLOUD_RESOURCE_ID, arn); + attributes.put(CLOUD_ACCOUNT_ID, getAccountId(arn)); } } diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/internal/ApiGatewayProxyAttributesExtractor.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/internal/ApiGatewayProxyAttributesExtractor.java index 1a6b2935bd82..36f8dcd0b53e 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/internal/ApiGatewayProxyAttributesExtractor.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/internal/ApiGatewayProxyAttributesExtractor.java @@ -14,13 +14,13 @@ import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.awslambdacore.v1_0.AwsLambdaRequest; import io.opentelemetry.semconv.HttpAttributes; import io.opentelemetry.semconv.UrlAttributes; -import io.opentelemetry.semconv.incubating.FaasIncubatingAttributes; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; @@ -31,6 +31,11 @@ final class ApiGatewayProxyAttributesExtractor implements AttributesExtractor { + // copied from FaasIncubatingAttributes + private static final AttributeKey FAAS_TRIGGER = AttributeKey.stringKey("faas.trigger"); + // copied from FaasIncubatingAttributes.FaasTriggerValues + private static final String HTTP = "http"; + private final Set knownMethods; ApiGatewayProxyAttributesExtractor(Set knownMethods) { @@ -41,8 +46,7 @@ final class ApiGatewayProxyAttributesExtractor public void onStart( AttributesBuilder attributes, Context parentContext, AwsLambdaRequest request) { if (request.getInput() instanceof APIGatewayProxyRequestEvent) { - attributes.put( - FaasIncubatingAttributes.FAAS_TRIGGER, FaasIncubatingAttributes.FaasTriggerValues.HTTP); + attributes.put(FAAS_TRIGGER, HTTP); onRequest(attributes, (APIGatewayProxyRequestEvent) request.getInput()); } } diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/internal/SqsEventAttributesExtractor.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/internal/SqsEventAttributesExtractor.java index fbdd674450c6..f8aa3c80e137 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/internal/SqsEventAttributesExtractor.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/internal/SqsEventAttributesExtractor.java @@ -6,17 +6,26 @@ package io.opentelemetry.instrumentation.awslambdaevents.v2_2.internal; import com.amazonaws.services.lambda.runtime.events.SQSEvent; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import javax.annotation.Nullable; class SqsEventAttributesExtractor implements AttributesExtractor { + + // copied from MessagingIncubatingAttributes + private static final AttributeKey MESSAGING_OPERATION = + AttributeKey.stringKey("messaging.operation"); + private static final AttributeKey MESSAGING_SYSTEM = + AttributeKey.stringKey("messaging.system"); + // copied from MessagingIncubatingAttributes.MessagingSystemValues + private static final String AWS_SQS = "aws_sqs"; + @Override public void onStart(AttributesBuilder attributes, Context parentContext, SQSEvent event) { - attributes.put(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"); - attributes.put(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"); + attributes.put(MESSAGING_SYSTEM, AWS_SQS); + attributes.put(MESSAGING_OPERATION, "process"); } @Override diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/internal/SqsMessageAttributesExtractor.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/internal/SqsMessageAttributesExtractor.java index 5e70628a7692..ad6358c34f50 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/internal/SqsMessageAttributesExtractor.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/internal/SqsMessageAttributesExtractor.java @@ -6,20 +6,32 @@ package io.opentelemetry.instrumentation.awslambdaevents.v2_2.internal; import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import javax.annotation.Nullable; class SqsMessageAttributesExtractor implements AttributesExtractor { + + // copied from MessagingIncubatingAttributes + private static final AttributeKey MESSAGING_DESTINATION_NAME = + AttributeKey.stringKey("messaging.destination.name"); + private static final AttributeKey MESSAGING_MESSAGE_ID = + AttributeKey.stringKey("messaging.message.id"); + private static final AttributeKey MESSAGING_OPERATION = + AttributeKey.stringKey("messaging.operation"); + private static final AttributeKey MESSAGING_SYSTEM = + AttributeKey.stringKey("messaging.system"); + // copied from MessagingIncubatingAttributes.MessagingSystemValues + private static final String AWS_SQS = "aws_sqs"; + @Override public void onStart(AttributesBuilder attributes, Context parentContext, SQSMessage message) { - attributes.put(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"); - attributes.put(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"); - attributes.put(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, message.getMessageId()); - attributes.put( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, message.getEventSource()); + attributes.put(MESSAGING_SYSTEM, AWS_SQS); + attributes.put(MESSAGING_OPERATION, "process"); + attributes.put(MESSAGING_MESSAGE_ID, message.getMessageId()); + attributes.put(MESSAGING_DESTINATION_NAME, message.getEventSource()); } @Override diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsEventWrapperTest.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsEventWrapperTest.java index c3ab67024ea0..de6bd8b85f5b 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsEventWrapperTest.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsEventWrapperTest.java @@ -84,7 +84,9 @@ void eventTraced() { span.hasName("otel process") .hasKind(SpanKind.CONSUMER) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + equalTo( + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_OPERATION, "process")))); } diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsMessageHandlerTest.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsMessageHandlerTest.java index ff66553b1dfa..49bcbe97e241 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsMessageHandlerTest.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/test/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AwsLambdaSqsMessageHandlerTest.java @@ -86,7 +86,9 @@ void processSpans() { .hasKind(SpanKind.CONSUMER) .hasParentSpanId(trace.getSpan(0).getSpanId()) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + equalTo( + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process")) .hasLinks( LinkData.create( @@ -106,7 +108,9 @@ void processSpans() { .hasKind(SpanKind.CONSUMER) .hasParentSpanId(trace.getSpan(1).getSpanId()) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + equalTo( + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, "message1"), equalTo( @@ -123,7 +127,9 @@ void processSpans() { .hasKind(SpanKind.CONSUMER) .hasParentSpanId(trace.getSpan(1).getSpanId()) .hasAttributesSatisfyingExactly( - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + equalTo( + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "process"), equalTo(MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID, "message2"), equalTo( diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AbstractAwsLambdaSqsEventHandlerTest.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AbstractAwsLambdaSqsEventHandlerTest.java index 34bc9acf7c9b..c7003983787c 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AbstractAwsLambdaSqsEventHandlerTest.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/AbstractAwsLambdaSqsEventHandlerTest.java @@ -81,7 +81,8 @@ void sameSource() { .hasParentSpanId(trace.getSpan(0).getSpanId()) .hasAttributesSatisfyingExactly( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_OPERATION, "process")) .hasLinksSatisfying( @@ -129,7 +130,8 @@ void differentSource() { .hasParentSpanId(trace.getSpan(0).getSpanId()) .hasAttributesSatisfyingExactly( equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_OPERATION, "process")) .hasLinksSatisfying( diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/S3TracingTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/S3TracingTest.groovy index 85687e4cbd9f..1dea81b84719 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/S3TracingTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/S3TracingTest.groovy @@ -197,7 +197,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "$UrlAttributes.URL_FULL" { it.startsWith("http://") } "$ServerAttributes.SERVER_ADDRESS" String "$ServerAttributes.SERVER_PORT" { it == null || Number } - "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" "AmazonSQS" + "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS "$MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME" "s3ToSqsTestQueue" "$MessagingIncubatingAttributes.MESSAGING_OPERATION" "process" "$MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID" String @@ -533,7 +533,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "$UrlAttributes.URL_FULL" { it.startsWith("http://") } "$ServerAttributes.SERVER_ADDRESS" String "$ServerAttributes.SERVER_PORT" { it == null || Number } - "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" "AmazonSQS" + "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS "$MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME" "s3ToSnsToSqsTestQueue" "$MessagingIncubatingAttributes.MESSAGING_OPERATION" "process" "$MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID" String diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/SnsTracingTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/SnsTracingTest.groovy index 9372bb00afbb..ba6b28fafb59 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/SnsTracingTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/SnsTracingTest.groovy @@ -188,7 +188,7 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "$UrlAttributes.URL_FULL" String "$ServerAttributes.SERVER_ADDRESS" String "$ServerAttributes.SERVER_PORT" { it == null || Number } - "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" "AmazonSQS" + "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS "$MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME" "snsToSqsTestQueue" "$MessagingIncubatingAttributes.MESSAGING_OPERATION" "process" "$MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID" String diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SnsAttributesExtractor.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SnsAttributesExtractor.java index c0084254a75a..541db9291363 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SnsAttributesExtractor.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SnsAttributesExtractor.java @@ -8,19 +8,23 @@ import com.amazonaws.AmazonWebServiceRequest; import com.amazonaws.Request; import com.amazonaws.Response; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import javax.annotation.Nullable; public class SnsAttributesExtractor implements AttributesExtractor, Response> { + + // copied from MessagingIncubatingAttributes + private static final AttributeKey MESSAGING_DESTINATION_NAME = + AttributeKey.stringKey("messaging.destination.name"); + @Override public void onStart(AttributesBuilder attributes, Context parentContext, Request request) { String destination = findMessageDestination(request.getOriginalRequest()); - AttributesExtractorUtil.internalSet( - attributes, MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, destination); + AttributesExtractorUtil.internalSet(attributes, MESSAGING_DESTINATION_NAME, destination); } /* diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SqsAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SqsAttributesGetter.java index 2928d58f574e..cf24390446e1 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SqsAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SqsAttributesGetter.java @@ -15,9 +15,12 @@ enum SqsAttributesGetter implements MessagingAttributesGetter, Response> { INSTANCE; + // copied from MessagingIncubatingAttributes.MessagingSystemValues + private static final String AWS_SQS = "aws_sqs"; + @Override public String getSystem(Request request) { - return "AmazonSQS"; + return AWS_SQS; } @Override diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SqsProcessRequestAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SqsProcessRequestAttributesGetter.java index 1d619b674a39..c7786c8dab2f 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SqsProcessRequestAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SqsProcessRequestAttributesGetter.java @@ -15,9 +15,12 @@ enum SqsProcessRequestAttributesGetter implements MessagingAttributesGetter> { INSTANCE; + // copied from MessagingIncubatingAttributes.MessagingSystemValues + private static final String AWS_SQS = "aws_sqs"; + @Override public String getSystem(SqsProcessRequest request) { - return "AmazonSQS"; + return AWS_SQS; } @Override diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SqsReceiveRequestAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SqsReceiveRequestAttributesGetter.java index df8888dc9043..107adb34f648 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SqsReceiveRequestAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SqsReceiveRequestAttributesGetter.java @@ -16,9 +16,12 @@ enum SqsReceiveRequestAttributesGetter implements MessagingAttributesGetter> { INSTANCE; + // copied from MessagingIncubatingAttributes.MessagingSystemValues + private static final String AWS_SQS = "aws_sqs"; + @Override public String getSystem(SqsReceiveRequest request) { - return "AmazonSQS"; + return AWS_SQS; } @Override diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java index 88ff9e72015d..51dc8b4d37e9 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsSuppressReceiveSpansTest.java @@ -127,7 +127,8 @@ void testSimpleSqsProducerConsumerServices() { equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -156,7 +157,8 @@ void testSimpleSqsProducerConsumerServices() { equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -234,7 +236,8 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -263,7 +266,8 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java index 4b0031e2119b..3dd3fe259a3b 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.java @@ -159,7 +159,8 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -202,7 +203,8 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -243,7 +245,8 @@ void testSimpleSqsProducerConsumerServicesCaptureHeaders(boolean testCaptureHead equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -333,7 +336,8 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -401,7 +405,8 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( MessagingIncubatingAttributes.MESSAGING_SYSTEM, - "AmazonSQS"), + MessagingIncubatingAttributes.MessagingSystemValues + .AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -437,7 +442,8 @@ void testSimpleSqsProducerConsumerServicesWithParentSpan() { equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( MessagingIncubatingAttributes.MESSAGING_SYSTEM, - "AmazonSQS"), + MessagingIncubatingAttributes.MessagingSystemValues + .AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkRequestType.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkRequestType.java index 43053823ef47..8c6f4d4f311a 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkRequestType.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkRequestType.java @@ -7,7 +7,7 @@ import static io.opentelemetry.instrumentation.awssdk.v2_2.FieldMapping.request; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; +import io.opentelemetry.api.common.AttributeKey; import java.util.Collections; import java.util.List; import java.util.Map; @@ -21,8 +21,8 @@ enum AwsSdkRequestType { /* * Only one of TopicArn and TargetArn are permitted on an SNS request. */ - request(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME.getKey(), "TargetArn"), - request(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME.getKey(), "TopicArn")); + request(AttributeKeys.MESSAGING_DESTINATION_NAME.getKey(), "TargetArn"), + request(AttributeKeys.MESSAGING_DESTINATION_NAME.getKey(), "TopicArn")); // Wrapping in unmodifiableMap @SuppressWarnings("ImmutableEnumChecker") @@ -35,4 +35,10 @@ enum AwsSdkRequestType { List fields(FieldMapping.Type type) { return fields.get(type); } + + private static class AttributeKeys { + // copied from MessagingIncubatingAttributes + static final AttributeKey MESSAGING_DESTINATION_NAME = + AttributeKey.stringKey("messaging.destination.name"); + } } diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/SqsAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/SqsAttributesGetter.java index b28e5ca43619..1d899029d90e 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/SqsAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/SqsAttributesGetter.java @@ -16,9 +16,12 @@ enum SqsAttributesGetter implements MessagingAttributesGetter { INSTANCE; + // copied from MessagingIncubatingAttributes.MessagingSystemValues + private static final String AWS_SQS = "aws_sqs"; + @Override public String getSystem(ExecutionAttributes request) { - return "AmazonSQS"; + return AWS_SQS; } @Override diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/SqsProcessRequestAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/SqsProcessRequestAttributesGetter.java index 2406811342c5..d8ecfefbb113 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/SqsProcessRequestAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/SqsProcessRequestAttributesGetter.java @@ -15,9 +15,12 @@ enum SqsProcessRequestAttributesGetter implements MessagingAttributesGetter { INSTANCE; + // copied from MessagingIncubatingAttributes.MessagingSystemValues + private static final String AWS_SQS = "aws_sqs"; + @Override public String getSystem(SqsProcessRequest request) { - return "AmazonSQS"; + return AWS_SQS; } @Override diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/SqsReceiveRequestAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/SqsReceiveRequestAttributesGetter.java index cfed69117ec5..cab84a37205b 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/SqsReceiveRequestAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/SqsReceiveRequestAttributesGetter.java @@ -16,9 +16,12 @@ enum SqsReceiveRequestAttributesGetter implements MessagingAttributesGetter { INSTANCE; + // copied from MessagingIncubatingAttributes.MessagingSystemValues + private static final String AWS_SQS = "aws_sqs"; + @Override public String getSystem(SqsReceiveRequest request) { - return "AmazonSQS"; + return AWS_SQS; } @Override diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/TracingExecutionInterceptor.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/TracingExecutionInterceptor.java index 83d0fc9ec8cb..45eb61155b57 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/TracingExecutionInterceptor.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/TracingExecutionInterceptor.java @@ -18,7 +18,6 @@ import io.opentelemetry.instrumentation.api.internal.InstrumenterUtil; import io.opentelemetry.instrumentation.api.internal.Timer; import io.opentelemetry.semconv.HttpAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -44,6 +43,12 @@ /** AWS request execution interceptor. */ final class TracingExecutionInterceptor implements ExecutionInterceptor { + // copied from DbIncubatingAttributes + private static final AttributeKey DB_OPERATION = AttributeKey.stringKey("db.operation"); + private static final AttributeKey DB_SYSTEM = AttributeKey.stringKey("db.system"); + // copied from DbIncubatingAttributes.DbSystemValues + private static final String DB_SYSTEM_DYNAMODB = "dynamodb"; + // the class name is part of the attribute name, so that it will be shaded when used in javaagent // instrumentation, and won't conflict with usage outside javaagent instrumentation private static final ExecutionAttribute CONTEXT_ATTRIBUTE = @@ -312,10 +317,10 @@ private void populateRequestAttributes( fieldMapper.mapToAttributes(sdkRequest, awsSdkRequest, span); if (awsSdkRequest.type() == DYNAMODB) { - span.setAttribute(DbIncubatingAttributes.DB_SYSTEM, "dynamodb"); + span.setAttribute(DB_SYSTEM, DB_SYSTEM_DYNAMODB); String operation = attributes.getAttribute(SdkExecutionAttribute.OPERATION_NAME); if (operation != null) { - span.setAttribute(DbIncubatingAttributes.DB_OPERATION, operation); + span.setAttribute(DB_OPERATION, operation); } } } diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientTest.groovy index 8225c64f7f0e..3241c48640bb 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientTest.groovy @@ -145,7 +145,7 @@ abstract class AbstractAws2ClientTest extends AbstractAws2ClientCoreTest { "$MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME" "somequeue" "$MessagingIncubatingAttributes.MESSAGING_OPERATION" "publish" "$MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID" String - "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" "AmazonSQS" + "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS } else if (service == "Kinesis") { "aws.stream.name" "somestream" } else if (service == "Sns") { @@ -305,7 +305,7 @@ abstract class AbstractAws2ClientTest extends AbstractAws2ClientCoreTest { "$MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME" "somequeue" "$MessagingIncubatingAttributes.MESSAGING_OPERATION" "publish" "$MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID" String - "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" "AmazonSQS" + "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS } else if (service == "Kinesis") { "aws.stream.name" "somestream" } else if (service == "Sns") { diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsSuppressReceiveSpansTest.groovy b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsSuppressReceiveSpansTest.groovy index 58125c676e54..6f44c92573d6 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsSuppressReceiveSpansTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsSuppressReceiveSpansTest.groovy @@ -157,7 +157,7 @@ abstract class AbstractAws2SqsSuppressReceiveSpansTest extends InstrumentationSp "$UrlAttributes.URL_FULL" { it.startsWith("http://localhost:$sqsPort") } "$ServerAttributes.SERVER_ADDRESS" "localhost" "$ServerAttributes.SERVER_PORT" sqsPort - "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" "AmazonSQS" + "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS "$MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME" "testSdkSqs" "$MessagingIncubatingAttributes.MESSAGING_OPERATION" "publish" "$MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID" String @@ -178,7 +178,7 @@ abstract class AbstractAws2SqsSuppressReceiveSpansTest extends InstrumentationSp "$UrlAttributes.URL_FULL" { it.startsWith("http://localhost:$sqsPort") } "$ServerAttributes.SERVER_ADDRESS" "localhost" "$ServerAttributes.SERVER_PORT" sqsPort - "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" "AmazonSQS" + "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS "$MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME" "testSdkSqs" "$MessagingIncubatingAttributes.MESSAGING_OPERATION" "process" "$MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID" String @@ -329,7 +329,7 @@ abstract class AbstractAws2SqsSuppressReceiveSpansTest extends InstrumentationSp "$UrlAttributes.URL_FULL" { it.startsWith("http://localhost:$sqsPort") } "$ServerAttributes.SERVER_ADDRESS" "localhost" "$ServerAttributes.SERVER_PORT" sqsPort - "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" "AmazonSQS" + "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS "$MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME" "testSdkSqs" "$MessagingIncubatingAttributes.MESSAGING_OPERATION" "publish" } @@ -351,7 +351,7 @@ abstract class AbstractAws2SqsSuppressReceiveSpansTest extends InstrumentationSp "$UrlAttributes.URL_FULL" { it.startsWith("http://localhost:$sqsPort") } "$ServerAttributes.SERVER_ADDRESS" "localhost" "$ServerAttributes.SERVER_PORT" sqsPort - "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" "AmazonSQS" + "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS "$MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME" "testSdkSqs" "$MessagingIncubatingAttributes.MESSAGING_OPERATION" "process" "$MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID" String @@ -379,7 +379,7 @@ abstract class AbstractAws2SqsSuppressReceiveSpansTest extends InstrumentationSp "$UrlAttributes.URL_FULL" { it.startsWith("http://localhost:$sqsPort") } "$ServerAttributes.SERVER_ADDRESS" "localhost" "$ServerAttributes.SERVER_PORT" sqsPort - "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" "AmazonSQS" + "$MessagingIncubatingAttributes.MESSAGING_SYSTEM" MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS "$MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME" "testSdkSqs" "$MessagingIncubatingAttributes.MESSAGING_OPERATION" "process" "$MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID" String diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java index 0e4382dfc22d..39a267222ba0 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.java @@ -215,7 +215,8 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( - MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -298,7 +299,8 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( MessagingIncubatingAttributes.MESSAGING_SYSTEM, - "AmazonSQS"), + MessagingIncubatingAttributes.MessagingSystemValues + .AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -344,7 +346,8 @@ void assertSqsTraces(Boolean withParent, Boolean captureHeaders) { equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( MessagingIncubatingAttributes.MESSAGING_SYSTEM, - "AmazonSQS"), + MessagingIncubatingAttributes.MessagingSystemValues + .AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -522,7 +525,9 @@ void testBatchSqsProducerConsumerServicesSync() throws URISyntaxException { v -> v.startsWith("http://localhost:" + sqsPort)), equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), equalTo(ServerAttributes.SERVER_PORT, sqsPort), - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + equalTo( + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -549,7 +554,9 @@ void testBatchSqsProducerConsumerServicesSync() throws URISyntaxException { v -> v.startsWith("http://localhost:" + sqsPort)), equalTo(ServerAttributes.SERVER_ADDRESS, "localhost"), equalTo(ServerAttributes.SERVER_PORT, sqsPort), - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"), + equalTo( + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), @@ -596,7 +603,8 @@ void testBatchSqsProducerConsumerServicesSync() throws URISyntaxException { equalTo(ServerAttributes.SERVER_PORT, sqsPort), equalTo( MessagingIncubatingAttributes.MESSAGING_SYSTEM, - "AmazonSQS"), + MessagingIncubatingAttributes.MessagingSystemValues + .AWS_SQS), equalTo( MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, "testSdkSqs"), diff --git a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpanAssertions.java b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpanAssertions.java index 3df4569376d8..b004b676d209 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpanAssertions.java +++ b/instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpanAssertions.java @@ -95,7 +95,9 @@ static SpanDataAssert sqs( attributeAssertions.addAll( Arrays.asList( equalTo(MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME, queueName), - equalTo(MessagingIncubatingAttributes.MESSAGING_SYSTEM, "AmazonSQS"))); + equalTo( + MessagingIncubatingAttributes.MESSAGING_SYSTEM, + MessagingIncubatingAttributes.MessagingSystemValues.AWS_SQS))); if (spanName.endsWith("receive")) { attributeAssertions.add( equalTo(MessagingIncubatingAttributes.MESSAGING_OPERATION, "receive")); diff --git a/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraAttributesExtractor.java b/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraAttributesExtractor.java index b617e8be0396..a4219a59881a 100644 --- a/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraAttributesExtractor.java +++ b/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraAttributesExtractor.java @@ -13,11 +13,11 @@ import com.datastax.oss.driver.api.core.metadata.Node; import com.datastax.oss.driver.internal.core.metadata.DefaultEndPoint; import com.datastax.oss.driver.internal.core.metadata.SniEndPoint; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.semconv.ServerAttributes; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.lang.reflect.Field; import java.net.InetSocketAddress; import java.util.logging.Level; @@ -30,6 +30,20 @@ final class CassandraAttributesExtractor private static final Logger logger = Logger.getLogger(CassandraAttributesExtractor.class.getName()); + // copied from DbIncubatingAttributes + private static final AttributeKey DB_CASSANDRA_CONSISTENCY_LEVEL = + AttributeKey.stringKey("db.cassandra.consistency_level"); + private static final AttributeKey DB_CASSANDRA_COORDINATOR_DC = + AttributeKey.stringKey("db.cassandra.coordinator.dc"); + private static final AttributeKey DB_CASSANDRA_COORDINATOR_ID = + AttributeKey.stringKey("db.cassandra.coordinator.id"); + private static final AttributeKey DB_CASSANDRA_IDEMPOTENCE = + AttributeKey.booleanKey("db.cassandra.idempotence"); + private static final AttributeKey DB_CASSANDRA_PAGE_SIZE = + AttributeKey.longKey("db.cassandra.page_size"); + private static final AttributeKey DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = + AttributeKey.longKey("db.cassandra.speculative_execution_count"); + private static final Field proxyAddressField = getProxyAddressField(); @Override @@ -52,17 +66,14 @@ public void onEnd( updateServerAddressAndPort(attributes, coordinator); if (coordinator.getDatacenter() != null) { - attributes.put( - DbIncubatingAttributes.DB_CASSANDRA_COORDINATOR_DC, coordinator.getDatacenter()); + attributes.put(DB_CASSANDRA_COORDINATOR_DC, coordinator.getDatacenter()); } if (coordinator.getHostId() != null) { - attributes.put( - DbIncubatingAttributes.DB_CASSANDRA_COORDINATOR_ID, coordinator.getHostId().toString()); + attributes.put(DB_CASSANDRA_COORDINATOR_ID, coordinator.getHostId().toString()); } } attributes.put( - DbIncubatingAttributes.DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT, - executionInfo.getSpeculativeExecutionCount()); + DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT, executionInfo.getSpeculativeExecutionCount()); Statement statement = (Statement) executionInfo.getRequest(); String consistencyLevel; @@ -73,14 +84,14 @@ public void onEnd( } else { consistencyLevel = config.getString(DefaultDriverOption.REQUEST_CONSISTENCY); } - attributes.put(DbIncubatingAttributes.DB_CASSANDRA_CONSISTENCY_LEVEL, consistencyLevel); + attributes.put(DB_CASSANDRA_CONSISTENCY_LEVEL, consistencyLevel); if (statement.getPageSize() > 0) { - attributes.put(DbIncubatingAttributes.DB_CASSANDRA_PAGE_SIZE, statement.getPageSize()); + attributes.put(DB_CASSANDRA_PAGE_SIZE, statement.getPageSize()); } else { int pageSize = config.getInt(DefaultDriverOption.REQUEST_PAGE_SIZE); if (pageSize > 0) { - attributes.put(DbIncubatingAttributes.DB_CASSANDRA_PAGE_SIZE, pageSize); + attributes.put(DB_CASSANDRA_PAGE_SIZE, pageSize); } } @@ -88,7 +99,7 @@ public void onEnd( if (idempotent == null) { idempotent = config.getBoolean(DefaultDriverOption.REQUEST_DEFAULT_IDEMPOTENCE); } - attributes.put(DbIncubatingAttributes.DB_CASSANDRA_IDEMPOTENCE, idempotent); + attributes.put(DB_CASSANDRA_IDEMPOTENCE, idempotent); } private static void updateServerAddressAndPort(AttributesBuilder attributes, Node coordinator) { diff --git a/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraSqlAttributesGetter.java b/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraSqlAttributesGetter.java index dfd69eb2d99b..76dee45b3a5d 100644 --- a/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraSqlAttributesGetter.java +++ b/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraSqlAttributesGetter.java @@ -7,14 +7,15 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesGetter; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import javax.annotation.Nullable; final class CassandraSqlAttributesGetter implements SqlClientAttributesGetter { + // copied from DbIncubatingAttributes.DbSystemValues + private static final String CASSANDRA = "cassandra"; @Override public String getSystem(CassandraRequest request) { - return DbIncubatingAttributes.DbSystemValues.CASSANDRA; + return CASSANDRA; } @Override diff --git a/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraTelemetryBuilder.java b/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraTelemetryBuilder.java index 4961507a24ce..6d39ac2d6f0a 100644 --- a/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraTelemetryBuilder.java +++ b/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraTelemetryBuilder.java @@ -8,17 +8,20 @@ import com.datastax.oss.driver.api.core.cql.ExecutionInfo; import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientSpanNameExtractor; import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor; import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesExtractor; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; /** A builder of {@link CassandraTelemetry}. */ public class CassandraTelemetryBuilder { private static final String INSTRUMENTATION_NAME = "io.opentelemetry.cassandra-4.4"; + // copied from DbIncubatingAttributes + private static final AttributeKey DB_CASSANDRA_TABLE = + AttributeKey.stringKey("db.cassandra.table"); private final OpenTelemetry openTelemetry; @@ -55,7 +58,7 @@ protected Instrumenter createInstrumenter( openTelemetry, INSTRUMENTATION_NAME, DbClientSpanNameExtractor.create(attributesGetter)) .addAttributesExtractor( SqlClientAttributesExtractor.builder(attributesGetter) - .setTableAttribute(DbIncubatingAttributes.DB_CASSANDRA_TABLE) + .setTableAttribute(DB_CASSANDRA_TABLE) .setStatementSanitizationEnabled(statementSanitizationEnabled) .build()) .addAttributesExtractor( diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common/library/src/main/java/io/opentelemetry/instrumentation/elasticsearch/rest/internal/ElasticsearchDbAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-rest-common/library/src/main/java/io/opentelemetry/instrumentation/elasticsearch/rest/internal/ElasticsearchDbAttributesGetter.java index 9872932aa3a1..ddbc1278a172 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common/library/src/main/java/io/opentelemetry/instrumentation/elasticsearch/rest/internal/ElasticsearchDbAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common/library/src/main/java/io/opentelemetry/instrumentation/elasticsearch/rest/internal/ElasticsearchDbAttributesGetter.java @@ -8,7 +8,6 @@ import static java.util.logging.Level.FINE; import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientAttributesGetter; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -28,6 +27,9 @@ final class ElasticsearchDbAttributesGetter private static final Logger logger = Logger.getLogger(ElasticsearchDbAttributesGetter.class.getName()); + // copied from DbIncubatingAttributes.DbSystemValues + private static final String ELASTICSEARCH = "elasticsearch"; + private final boolean captureSearchQuery; ElasticsearchDbAttributesGetter(boolean captureSearchQuery) { @@ -36,7 +38,7 @@ final class ElasticsearchDbAttributesGetter @Override public String getSystem(ElasticsearchRestRequest request) { - return DbIncubatingAttributes.DbSystemValues.ELASTICSEARCH; + return ELASTICSEARCH; } @Override diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcAttributesExtractor.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcAttributesExtractor.java index d8665ec49941..1e4f6ee406ea 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcAttributesExtractor.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcAttributesExtractor.java @@ -9,14 +9,19 @@ import static io.opentelemetry.instrumentation.grpc.v1_6.CapturedGrpcMetadataUtil.requestAttributeKey; import io.grpc.Status; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.RpcIncubatingAttributes; import java.util.List; import javax.annotation.Nullable; final class GrpcAttributesExtractor implements AttributesExtractor { + + // copied from RpcIncubatingAttributes + private static final AttributeKey RPC_GRPC_STATUS_CODE = + AttributeKey.longKey("rpc.grpc.status_code"); + private final GrpcRpcAttributesGetter getter; private final List capturedRequestMetadata; @@ -39,7 +44,7 @@ public void onEnd( @Nullable Status status, @Nullable Throwable error) { if (status != null) { - attributes.put(RpcIncubatingAttributes.RPC_GRPC_STATUS_CODE, status.getCode().value()); + attributes.put(RPC_GRPC_STATUS_CODE, status.getCode().value()); } for (String key : capturedRequestMetadata) { List value = getter.metadataValue(request, key); diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcTelemetryBuilder.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcTelemetryBuilder.java index c839a057ef4d..499b229fbb1f 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcTelemetryBuilder.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcTelemetryBuilder.java @@ -8,6 +8,7 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.grpc.Status; import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.common.AttributeKey; 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; @@ -20,7 +21,6 @@ import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesExtractor; import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor; import io.opentelemetry.instrumentation.grpc.v1_6.internal.GrpcClientNetworkAttributesGetter; -import io.opentelemetry.semconv.incubating.PeerIncubatingAttributes; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -31,6 +31,8 @@ public final class GrpcTelemetryBuilder { private static final String INSTRUMENTATION_NAME = "io.opentelemetry.grpc-1.6"; + // copied from PeerIncubatingAttributes + private static final AttributeKey PEER_SERVICE = AttributeKey.stringKey("peer.service"); private final OpenTelemetry openTelemetry; @Nullable private String peerService; @@ -197,7 +199,7 @@ public GrpcTelemetry build() { if (peerService != null) { clientInstrumenterBuilder.addAttributesExtractor( - AttributesExtractor.constant(PeerIncubatingAttributes.PEER_SERVICE, peerService)); + AttributesExtractor.constant(PEER_SERVICE, peerService)); } return new GrpcTelemetry( diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java index 475d529b23fd..8790dad4c493 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java @@ -15,17 +15,24 @@ import io.grpc.Metadata; import io.grpc.MethodDescriptor; import io.grpc.Status; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.semconv.incubating.MessageIncubatingAttributes; import java.util.concurrent.atomic.AtomicLongFieldUpdater; final class TracingClientInterceptor implements ClientInterceptor { + // copied from MessageIncubatingAttributes + private static final AttributeKey MESSAGE_ID = AttributeKey.longKey("message.id"); + private static final AttributeKey MESSAGE_TYPE = AttributeKey.stringKey("message.type"); + // copied from MessageIncubatingAttributes.MessageTypeValues + private static final String SENT = "SENT"; + private static final String RECEIVED = "RECEIVED"; + @SuppressWarnings("rawtypes") private static final AtomicLongFieldUpdater MESSAGE_ID_UPDATER = AtomicLongFieldUpdater.newUpdater(TracingClientCall.class, "messageId"); @@ -110,11 +117,7 @@ public void sendMessage(REQUEST message) { } Span span = Span.fromContext(context); Attributes attributes = - Attributes.of( - MessageIncubatingAttributes.MESSAGE_TYPE, - MessageIncubatingAttributes.MessageTypeValues.SENT, - MessageIncubatingAttributes.MESSAGE_ID, - MESSAGE_ID_UPDATER.incrementAndGet(this)); + Attributes.of(MESSAGE_TYPE, SENT, MESSAGE_ID, MESSAGE_ID_UPDATER.incrementAndGet(this)); span.addEvent("message", attributes); } @@ -141,9 +144,9 @@ public void onMessage(RESPONSE message) { Span span = Span.fromContext(context); Attributes attributes = Attributes.of( - MessageIncubatingAttributes.MESSAGE_TYPE, - MessageIncubatingAttributes.MessageTypeValues.RECEIVED, - MessageIncubatingAttributes.MESSAGE_ID, + MESSAGE_TYPE, + RECEIVED, + MESSAGE_ID, MESSAGE_ID_UPDATER.incrementAndGet(TracingClientCall.this)); span.addEvent("message", attributes); try (Scope ignored = context.makeCurrent()) { diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java index f540b328cefd..1833bc98b08b 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java @@ -14,16 +14,23 @@ import io.grpc.ServerCallHandler; import io.grpc.ServerInterceptor; import io.grpc.Status; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.semconv.incubating.MessageIncubatingAttributes; import java.util.concurrent.atomic.AtomicLongFieldUpdater; final class TracingServerInterceptor implements ServerInterceptor { + // copied from MessageIncubatingAttributes + private static final AttributeKey MESSAGE_ID = AttributeKey.longKey("message.id"); + private static final AttributeKey MESSAGE_TYPE = AttributeKey.stringKey("message.type"); + // copied from MessageIncubatingAttributes.MessageTypeValues + private static final String SENT = "SENT"; + private static final String RECEIVED = "RECEIVED"; + @SuppressWarnings("rawtypes") private static final AtomicLongFieldUpdater MESSAGE_ID_UPDATER = AtomicLongFieldUpdater.newUpdater(TracingServerCall.class, "messageId"); @@ -92,11 +99,7 @@ public void sendMessage(RESPONSE message) { } Span span = Span.fromContext(context); Attributes attributes = - Attributes.of( - MessageIncubatingAttributes.MESSAGE_TYPE, - MessageIncubatingAttributes.MessageTypeValues.SENT, - MessageIncubatingAttributes.MESSAGE_ID, - MESSAGE_ID_UPDATER.incrementAndGet(this)); + Attributes.of(MESSAGE_TYPE, SENT, MESSAGE_ID, MESSAGE_ID_UPDATER.incrementAndGet(this)); span.addEvent("message", attributes); } @@ -126,9 +129,9 @@ final class TracingServerCallListener public void onMessage(REQUEST message) { Attributes attributes = Attributes.of( - MessageIncubatingAttributes.MESSAGE_TYPE, - MessageIncubatingAttributes.MessageTypeValues.RECEIVED, - MessageIncubatingAttributes.MESSAGE_ID, + MESSAGE_TYPE, + RECEIVED, + MESSAGE_ID, MESSAGE_ID_UPDATER.incrementAndGet(TracingServerCall.this)); Span.fromContext(context).addEvent("message", attributes); delegate().onMessage(message); diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DataSourceDbAttributesExtractor.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DataSourceDbAttributesExtractor.java index 72e818865b1d..8d050a960a57 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DataSourceDbAttributesExtractor.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DataSourceDbAttributesExtractor.java @@ -7,17 +7,22 @@ import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.jdbc.internal.dbinfo.DbInfo; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import javax.annotation.Nullable; import javax.sql.DataSource; enum DataSourceDbAttributesExtractor implements AttributesExtractor { INSTANCE; + // copied from DbIncubatingAttributes + private static final AttributeKey DB_NAME = AttributeKey.stringKey("db.name"); + private static final AttributeKey DB_SYSTEM = AttributeKey.stringKey("db.system"); + private static final AttributeKey DB_USER = AttributeKey.stringKey("db.user"); + @Override public void onStart(AttributesBuilder attributes, Context parentContext, DataSource dataSource) {} @@ -31,9 +36,9 @@ public void onEnd( if (dbInfo == null) { return; } - internalSet(attributes, DbIncubatingAttributes.DB_SYSTEM, dbInfo.getSystem()); - internalSet(attributes, DbIncubatingAttributes.DB_USER, dbInfo.getUser()); - internalSet(attributes, DbIncubatingAttributes.DB_NAME, getName(dbInfo)); + internalSet(attributes, DB_SYSTEM, dbInfo.getSystem()); + internalSet(attributes, DB_USER, dbInfo.getUser()); + internalSet(attributes, DB_NAME, getName(dbInfo)); } private static String getName(DbInfo dbInfo) { diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcConnectionUrlParser.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcConnectionUrlParser.java index a9412ce23643..92f650fd60eb 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcConnectionUrlParser.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcConnectionUrlParser.java @@ -11,7 +11,6 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.instrumentation.jdbc.internal.dbinfo.DbInfo; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URLDecoder; @@ -819,15 +818,15 @@ DbInfo.Builder doParse(String jdbcUrl, DbInfo.Builder builder) { builder.subtype(subtype); if (subtype.equals("sqlserver")) { - builder.system(DbIncubatingAttributes.DbSystemValues.MSSQL); + builder.system(DbSystemValues.MSSQL); } else if (subtype.equals("oracle")) { - builder.system(DbIncubatingAttributes.DbSystemValues.ORACLE); + builder.system(DbSystemValues.ORACLE); } else if (subtype.equals("mysql")) { - builder.system(DbIncubatingAttributes.DbSystemValues.MYSQL); + builder.system(DbSystemValues.MYSQL); } else if (subtype.equals("postgresql")) { - builder.system(DbIncubatingAttributes.DbSystemValues.POSTGRESQL); + builder.system(DbSystemValues.POSTGRESQL); } else if (subtype.equals("db2")) { - builder.system(DbIncubatingAttributes.DbSystemValues.DB2); + builder.system(DbSystemValues.DB2); } return MODIFIED_URL_LIKE.doParse(jdbcUrl, builder); @@ -971,29 +970,45 @@ private static String toDbSystem(String type) { switch (type) { case "as400": // IBM AS400 Database case "db2": // IBM Db2 - return DbIncubatingAttributes.DbSystemValues.DB2; + return DbSystemValues.DB2; case "derby": // Apache Derby - return DbIncubatingAttributes.DbSystemValues.DERBY; + return DbSystemValues.DERBY; case "h2": // H2 Database - return DbIncubatingAttributes.DbSystemValues.H2; + return DbSystemValues.H2; case "hsqldb": // Hyper SQL Database return "hsqldb"; case "mariadb": // MariaDB - return DbIncubatingAttributes.DbSystemValues.MARIADB; + return DbSystemValues.MARIADB; case "mysql": // MySQL - return DbIncubatingAttributes.DbSystemValues.MYSQL; + return DbSystemValues.MYSQL; case "oracle": // Oracle Database - return DbIncubatingAttributes.DbSystemValues.ORACLE; + return DbSystemValues.ORACLE; case "postgresql": // PostgreSQL - return DbIncubatingAttributes.DbSystemValues.POSTGRESQL; + return DbSystemValues.POSTGRESQL; case "jtds": // jTDS - the pure Java JDBC 3.0 driver for Microsoft SQL Server case "microsoft": case "sqlserver": // Microsoft SQL Server - return DbIncubatingAttributes.DbSystemValues.MSSQL; + return DbSystemValues.MSSQL; case "sap": // SAP Hana - return DbIncubatingAttributes.DbSystemValues.HANADB; + return DbSystemValues.HANADB; default: - return DbIncubatingAttributes.DbSystemValues.OTHER_SQL; // Unknown DBMS + return DbSystemValues.OTHER_SQL; // Unknown DBMS } } + + // copied from DbIncubatingAttributes + private static final class DbSystemValues { + static final String OTHER_SQL = "other_sql"; + static final String MSSQL = "mssql"; + static final String MYSQL = "mysql"; + static final String ORACLE = "oracle"; + static final String DB2 = "db2"; + static final String POSTGRESQL = "postgresql"; + static final String HANADB = "hanadb"; + static final String DERBY = "derby"; + static final String MARIADB = "mariadb"; + static final String H2 = "h2"; + + private DbSystemValues() {} + } } diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-common/library/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaConsumerAttributesExtractor.java b/instrumentation/kafka/kafka-clients/kafka-clients-common/library/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaConsumerAttributesExtractor.java index 4fea8da5713a..bb500ddeaa16 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-common/library/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaConsumerAttributesExtractor.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-common/library/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaConsumerAttributesExtractor.java @@ -5,10 +5,10 @@ package io.opentelemetry.instrumentation.kafka.internal; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.nio.ByteBuffer; import javax.annotation.Nullable; import org.apache.kafka.clients.consumer.ConsumerRecord; @@ -16,28 +16,38 @@ final class KafkaConsumerAttributesExtractor implements AttributesExtractor { + // copied from MessagingIncubatingAttributes + private static final AttributeKey MESSAGING_DESTINATION_PARTITION_ID = + AttributeKey.stringKey("messaging.destination.partition.id"); + private static final AttributeKey MESSAGING_KAFKA_CONSUMER_GROUP = + AttributeKey.stringKey("messaging.kafka.consumer.group"); + private static final AttributeKey MESSAGING_KAFKA_MESSAGE_KEY = + AttributeKey.stringKey("messaging.kafka.message.key"); + private static final AttributeKey MESSAGING_KAFKA_MESSAGE_OFFSET = + AttributeKey.longKey("messaging.kafka.message.offset"); + private static final AttributeKey MESSAGING_KAFKA_MESSAGE_TOMBSTONE = + AttributeKey.booleanKey("messaging.kafka.message.tombstone"); + @Override public void onStart( AttributesBuilder attributes, Context parentContext, KafkaProcessRequest request) { ConsumerRecord record = request.getRecord(); - attributes.put( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - String.valueOf(record.partition())); - attributes.put(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, record.offset()); + attributes.put(MESSAGING_DESTINATION_PARTITION_ID, String.valueOf(record.partition())); + attributes.put(MESSAGING_KAFKA_MESSAGE_OFFSET, record.offset()); Object key = record.key(); if (key != null && canSerialize(key.getClass())) { - attributes.put(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, key.toString()); + attributes.put(MESSAGING_KAFKA_MESSAGE_KEY, key.toString()); } if (record.value() == null) { - attributes.put(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_TOMBSTONE, true); + attributes.put(MESSAGING_KAFKA_MESSAGE_TOMBSTONE, true); } String consumerGroup = request.getConsumerGroup(); if (consumerGroup != null) { - attributes.put(MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, consumerGroup); + attributes.put(MESSAGING_KAFKA_CONSUMER_GROUP, consumerGroup); } } diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-common/library/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaProducerAttributesExtractor.java b/instrumentation/kafka/kafka-clients/kafka-clients-common/library/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaProducerAttributesExtractor.java index 96c733f60f1c..37d2f16fdc9f 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-common/library/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaProducerAttributesExtractor.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-common/library/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaProducerAttributesExtractor.java @@ -5,16 +5,25 @@ package io.opentelemetry.instrumentation.kafka.internal; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.nio.ByteBuffer; import javax.annotation.Nullable; import org.apache.kafka.clients.producer.RecordMetadata; final class KafkaProducerAttributesExtractor implements AttributesExtractor { + // copied from MessagingIncubatingAttributes + private static final AttributeKey MESSAGING_DESTINATION_PARTITION_ID = + AttributeKey.stringKey("messaging.destination.partition.id"); + private static final AttributeKey MESSAGING_KAFKA_MESSAGE_KEY = + AttributeKey.stringKey("messaging.kafka.message.key"); + private static final AttributeKey MESSAGING_KAFKA_MESSAGE_OFFSET = + AttributeKey.longKey("messaging.kafka.message.offset"); + private static final AttributeKey MESSAGING_KAFKA_MESSAGE_TOMBSTONE = + AttributeKey.booleanKey("messaging.kafka.message.tombstone"); @Override public void onStart( @@ -22,10 +31,10 @@ public void onStart( Object key = request.getRecord().key(); if (key != null && canSerialize(key.getClass())) { - attributes.put(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY, key.toString()); + attributes.put(MESSAGING_KAFKA_MESSAGE_KEY, key.toString()); } if (request.getRecord().value() == null) { - attributes.put(MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_TOMBSTONE, true); + attributes.put(MESSAGING_KAFKA_MESSAGE_TOMBSTONE, true); } } @@ -45,10 +54,8 @@ public void onEnd( if (recordMetadata != null) { attributes.put( - MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID, - String.valueOf(recordMetadata.partition())); - attributes.put( - MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET, recordMetadata.offset()); + MESSAGING_DESTINATION_PARTITION_ID, String.valueOf(recordMetadata.partition())); + attributes.put(MESSAGING_KAFKA_MESSAGE_OFFSET, recordMetadata.offset()); } } } diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-common/library/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaReceiveAttributesExtractor.java b/instrumentation/kafka/kafka-clients/kafka-clients-common/library/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaReceiveAttributesExtractor.java index 9e6c4aba96c4..7593e396f230 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-common/library/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaReceiveAttributesExtractor.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-common/library/src/main/java/io/opentelemetry/instrumentation/kafka/internal/KafkaReceiveAttributesExtractor.java @@ -5,22 +5,26 @@ package io.opentelemetry.instrumentation.kafka.internal; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import javax.annotation.Nullable; enum KafkaReceiveAttributesExtractor implements AttributesExtractor { INSTANCE; + // copied from MessagingIncubatingAttributes + private static final AttributeKey MESSAGING_KAFKA_CONSUMER_GROUP = + AttributeKey.stringKey("messaging.kafka.consumer.group"); + @Override public void onStart( AttributesBuilder attributes, Context parentContext, KafkaReceiveRequest request) { String consumerGroup = request.getConsumerGroup(); if (consumerGroup != null) { - attributes.put(MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP, consumerGroup); + attributes.put(MESSAGING_KAFKA_CONSUMER_GROUP, consumerGroup); } } diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java index 55b7833f3f0f..d040634872b6 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java @@ -17,6 +17,7 @@ import io.lettuce.core.tracing.Tracer; import io.lettuce.core.tracing.TracerProvider; import io.lettuce.core.tracing.Tracing; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.api.trace.Span; @@ -28,7 +29,6 @@ import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesExtractor; import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.time.Instant; @@ -38,6 +38,12 @@ final class OpenTelemetryTracing implements Tracing { + // copied from DbIncubatingAttributes + private static final AttributeKey DB_SYSTEM = AttributeKey.stringKey("db.system"); + private static final AttributeKey DB_STATEMENT = AttributeKey.stringKey("db.statement"); + // copied from DbIncubatingAttributes.DbSystemValues + private static final String REDIS = "redis"; + private static final AttributesExtractor serverAttributesExtractor = ServerAttributesExtractor.create(new LettuceServerAttributesGetter()); private static final AttributesExtractor networkAttributesExtractor = @@ -154,8 +160,7 @@ private OpenTelemetrySpan nextSpan(Context context) { .spanBuilder("redis") .setSpanKind(SpanKind.CLIENT) .setParent(context) - .setAttribute( - DbIncubatingAttributes.DB_SYSTEM, DbIncubatingAttributes.DbSystemValues.REDIS); + .setAttribute(DB_SYSTEM, REDIS); return new OpenTelemetrySpan(context, spanBuilder, sanitizer); } } @@ -333,7 +338,7 @@ private void finish(Span span) { if (name != null) { String statement = sanitizer.sanitize(name, argsList != null ? argsList : splitArgs(argsString)); - span.setAttribute(DbIncubatingAttributes.DB_STATEMENT, statement); + span.setAttribute(DB_STATEMENT, statement); } span.end(); } diff --git a/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/internal/LogEventMapper.java b/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/internal/LogEventMapper.java index 9ae3e34360ef..04dcba7d32fe 100644 --- a/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/internal/LogEventMapper.java +++ b/instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/internal/LogEventMapper.java @@ -13,7 +13,6 @@ import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.internal.cache.Cache; import io.opentelemetry.semconv.ExceptionAttributes; -import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; import java.io.PrintWriter; import java.io.StringWriter; import java.util.List; @@ -30,6 +29,10 @@ */ public final class LogEventMapper { + // copied from ThreadIncubatingAttributes + private static final AttributeKey THREAD_ID = AttributeKey.longKey("thread.id"); + private static final AttributeKey THREAD_NAME = AttributeKey.stringKey("thread.name"); + private static final String SPECIAL_MAP_MESSAGE_ATTRIBUTE = "message"; private static final Cache> contextDataAttributeKeyCache = @@ -108,8 +111,8 @@ public void mapLogEvent( captureContextDataAttributes(attributes, contextData); if (captureExperimentalAttributes) { - attributes.put(ThreadIncubatingAttributes.THREAD_NAME, threadName); - attributes.put(ThreadIncubatingAttributes.THREAD_ID, threadId); + attributes.put(THREAD_NAME, threadName); + attributes.put(THREAD_ID, threadId); } builder.setAllAttributes(attributes.build()); diff --git a/instrumentation/logback/logback-appender-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/appender/v1_0/internal/LoggingEventMapper.java b/instrumentation/logback/logback-appender-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/appender/v1_0/internal/LoggingEventMapper.java index a37c5fe8170c..5ff92f6672b7 100644 --- a/instrumentation/logback/logback-appender-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/appender/v1_0/internal/LoggingEventMapper.java +++ b/instrumentation/logback/logback-appender-1.0/library/src/main/java/io/opentelemetry/instrumentation/logback/appender/v1_0/internal/LoggingEventMapper.java @@ -21,8 +21,6 @@ import io.opentelemetry.instrumentation.api.internal.cache.Cache; import io.opentelemetry.javaagent.tooling.muzzle.NoMuzzle; import io.opentelemetry.semconv.ExceptionAttributes; -import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes; -import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes; import java.io.PrintWriter; import java.io.StringWriter; import java.util.ArrayList; @@ -37,6 +35,15 @@ * any time. */ public final class LoggingEventMapper { + // copied from CodeIncubatingAttributes + private static final AttributeKey CODE_FILEPATH = AttributeKey.stringKey("code.filepath"); + private static final AttributeKey CODE_FUNCTION = AttributeKey.stringKey("code.function"); + private static final AttributeKey CODE_LINENO = AttributeKey.longKey("code.lineno"); + private static final AttributeKey CODE_NAMESPACE = + AttributeKey.stringKey("code.namespace"); + // copied from + private static final AttributeKey THREAD_ID = AttributeKey.longKey("thread.id"); + private static final AttributeKey THREAD_NAME = AttributeKey.stringKey("thread.name"); private static final boolean supportsKeyValuePairs = supportsKeyValuePairs(); private static final boolean supportsMultipleMarkers = supportsMultipleMarkers(); @@ -126,9 +133,9 @@ private void mapLoggingEvent( captureMdcAttributes(attributes, loggingEvent.getMDCPropertyMap()); if (captureExperimentalAttributes) { - attributes.put(ThreadIncubatingAttributes.THREAD_NAME, loggingEvent.getThreadName()); + attributes.put(THREAD_NAME, loggingEvent.getThreadName()); if (threadId != -1) { - attributes.put(ThreadIncubatingAttributes.THREAD_ID, threadId); + attributes.put(THREAD_ID, threadId); } } @@ -138,13 +145,13 @@ private void mapLoggingEvent( StackTraceElement firstStackElement = callerData[0]; String fileName = firstStackElement.getFileName(); if (fileName != null) { - attributes.put(CodeIncubatingAttributes.CODE_FILEPATH, fileName); + attributes.put(CODE_FILEPATH, fileName); } - attributes.put(CodeIncubatingAttributes.CODE_NAMESPACE, firstStackElement.getClassName()); - attributes.put(CodeIncubatingAttributes.CODE_FUNCTION, firstStackElement.getMethodName()); + attributes.put(CODE_NAMESPACE, firstStackElement.getClassName()); + attributes.put(CODE_FUNCTION, firstStackElement.getMethodName()); int lineNumber = firstStackElement.getLineNumber(); if (lineNumber > 0) { - attributes.put(CodeIncubatingAttributes.CODE_LINENO, lineNumber); + attributes.put(CODE_LINENO, lineNumber); } } } diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoAttributesExtractor.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoAttributesExtractor.java index 9505ddff6422..6890025d5c8a 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoAttributesExtractor.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoAttributesExtractor.java @@ -5,10 +5,10 @@ package io.opentelemetry.instrumentation.mongo.v3_1; -import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_MONGODB_COLLECTION; import static java.util.Arrays.asList; import com.mongodb.event.CommandStartedEvent; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; @@ -18,6 +18,10 @@ import org.bson.BsonValue; class MongoAttributesExtractor implements AttributesExtractor { + // copied from DbIncubatingAttributes + private static final AttributeKey DB_MONGODB_COLLECTION = + AttributeKey.stringKey("db.mongodb.collection"); + @Override public void onStart( AttributesBuilder attributes, Context parentContext, CommandStartedEvent event) { diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoDbAttributesGetter.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoDbAttributesGetter.java index d1208f21a0d8..9803c0ddecdc 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoDbAttributesGetter.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoDbAttributesGetter.java @@ -7,7 +7,6 @@ import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientAttributesGetter; -import io.opentelemetry.semconv.incubating.DbIncubatingAttributes; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; @@ -24,6 +23,9 @@ class MongoDbAttributesGetter implements DbClientAttributesGetter { + // copied from DbIncubatingAttributes.DbSystemValues + private static final String MONGODB = "mongodb"; + @Nullable private static final Method IS_TRUNCATED_METHOD; private static final String HIDDEN_CHAR = "?"; @@ -47,7 +49,7 @@ class MongoDbAttributesGetter implements DbClientAttributesGetter CONTAINER_ID = AttributeKey.stringKey("container.id"); + static final Filesystem FILESYSTEM_INSTANCE = new Filesystem(); private static final Resource INSTANCE = buildSingleton(); @@ -48,7 +51,7 @@ private ContainerResource() { // Visible for testing Resource buildResource() { return getContainerId() - .map(id -> Resource.create(Attributes.of(ContainerIncubatingAttributes.CONTAINER_ID, id))) + .map(id -> Resource.create(Attributes.of(CONTAINER_ID, id))) .orElseGet(Resource::empty); } diff --git a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostIdResourceProvider.java b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostIdResourceProvider.java index 574bf5f23b83..04766d899835 100644 --- a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostIdResourceProvider.java +++ b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostIdResourceProvider.java @@ -7,12 +7,12 @@ import static java.util.logging.Level.FINE; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; import io.opentelemetry.sdk.autoconfigure.spi.internal.ConditionalResourceProvider; import io.opentelemetry.sdk.resources.Resource; -import io.opentelemetry.semconv.incubating.HostIncubatingAttributes; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -37,6 +37,9 @@ public final class HostIdResourceProvider implements ConditionalResourceProvider private static final Logger logger = Logger.getLogger(HostIdResourceProvider.class.getName()); + // copied from HostIncubatingAttributes + private static final AttributeKey HOST_ID = AttributeKey.stringKey("host.id"); + public static final String REGISTRY_QUERY = "reg query HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid"; @@ -97,7 +100,7 @@ private Resource readLinuxMachineId() { if (lines.isEmpty()) { return Resource.empty(); } - return Resource.create(Attributes.of(HostIncubatingAttributes.HOST_ID, lines.get(0))); + return Resource.create(Attributes.of(HOST_ID, lines.get(0))); } private static List readMachineIdFile(Path path) { @@ -120,7 +123,7 @@ private Resource readWindowsGuid() { if (line.contains("MachineGuid")) { String[] parts = line.trim().split("\\s+"); if (parts.length == 3) { - return Resource.create(Attributes.of(HostIncubatingAttributes.HOST_ID, parts[2])); + return Resource.create(Attributes.of(HOST_ID, parts[2])); } } } @@ -170,10 +173,8 @@ public static List getProcessOutput(Process process) throws IOException @Override public boolean shouldApply(ConfigProperties config, Resource existing) { - return !config - .getMap("otel.resource.attributes") - .containsKey(HostIncubatingAttributes.HOST_ID.getKey()) - && existing.getAttribute(HostIncubatingAttributes.HOST_ID) == null; + return !config.getMap("otel.resource.attributes").containsKey(HOST_ID.getKey()) + && existing.getAttribute(HOST_ID) == null; } @Override diff --git a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostResource.java b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostResource.java index 465691e698b2..82810aeb9178 100644 --- a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostResource.java +++ b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostResource.java @@ -5,17 +5,21 @@ package io.opentelemetry.instrumentation.resources; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.semconv.SchemaUrls; -import io.opentelemetry.semconv.incubating.HostIncubatingAttributes; import java.net.InetAddress; import java.net.UnknownHostException; /** Factory for a {@link Resource} which provides information about the host info. */ public final class HostResource { + // copied from HostIncubatingAttributes + public static final AttributeKey HOST_ARCH = AttributeKey.stringKey("host.arch"); + public static final AttributeKey HOST_NAME = AttributeKey.stringKey("host.name"); + private static final Resource INSTANCE = buildResource(); /** Returns a {@link Resource} which provides information about host. */ @@ -27,7 +31,7 @@ public static Resource get() { static Resource buildResource() { AttributesBuilder attributes = Attributes.builder(); try { - attributes.put(HostIncubatingAttributes.HOST_NAME, InetAddress.getLocalHost().getHostName()); + attributes.put(HOST_NAME, InetAddress.getLocalHost().getHostName()); } catch (UnknownHostException e) { // Ignore } @@ -38,7 +42,7 @@ static Resource buildResource() { // Ignore } if (hostArch != null) { - attributes.put(HostIncubatingAttributes.HOST_ARCH, hostArch); + attributes.put(HOST_ARCH, hostArch); } return Resource.create(attributes.build(), SchemaUrls.V1_24_0); diff --git a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/OsResource.java b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/OsResource.java index 26421513c6de..3de866869cfa 100644 --- a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/OsResource.java +++ b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/OsResource.java @@ -5,17 +5,22 @@ package io.opentelemetry.instrumentation.resources; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.semconv.SchemaUrls; -import io.opentelemetry.semconv.incubating.OsIncubatingAttributes; import java.util.Locale; import javax.annotation.Nullable; /** Factory of a {@link Resource} which provides information about the current operating system. */ public final class OsResource { + // copied from OsIncubatingAttributes + private static final AttributeKey OS_DESCRIPTION = + AttributeKey.stringKey("os.description"); + private static final AttributeKey OS_TYPE = AttributeKey.stringKey("os.type"); + private static final Resource INSTANCE = buildResource(); /** @@ -45,7 +50,7 @@ static Resource buildResource() { String osName = getOs(os); if (osName != null) { - attributes.put(OsIncubatingAttributes.OS_TYPE, osName); + attributes.put(OS_TYPE, osName); } String version = null; @@ -55,7 +60,7 @@ static Resource buildResource() { // Ignore } String osDescription = version != null ? os + ' ' + version : os; - attributes.put(OsIncubatingAttributes.OS_DESCRIPTION, osDescription); + attributes.put(OS_DESCRIPTION, osDescription); return Resource.create(attributes.build(), SchemaUrls.V1_24_0); } @@ -64,30 +69,47 @@ static Resource buildResource() { private static String getOs(String os) { os = os.toLowerCase(Locale.ROOT); if (os.startsWith("windows")) { - return OsIncubatingAttributes.OsTypeValues.WINDOWS; + return OsTypeValues.WINDOWS; } else if (os.startsWith("linux")) { - return OsIncubatingAttributes.OsTypeValues.LINUX; + return OsTypeValues.LINUX; } else if (os.startsWith("mac")) { - return OsIncubatingAttributes.OsTypeValues.DARWIN; + return OsTypeValues.DARWIN; } else if (os.startsWith("freebsd")) { - return OsIncubatingAttributes.OsTypeValues.FREEBSD; + return OsTypeValues.FREEBSD; } else if (os.startsWith("netbsd")) { - return OsIncubatingAttributes.OsTypeValues.NETBSD; + return OsTypeValues.NETBSD; } else if (os.startsWith("openbsd")) { - return OsIncubatingAttributes.OsTypeValues.OPENBSD; + return OsTypeValues.OPENBSD; } else if (os.startsWith("dragonflybsd")) { - return OsIncubatingAttributes.OsTypeValues.DRAGONFLYBSD; + return OsTypeValues.DRAGONFLYBSD; } else if (os.startsWith("hp-ux")) { - return OsIncubatingAttributes.OsTypeValues.HPUX; + return OsTypeValues.HPUX; } else if (os.startsWith("aix")) { - return OsIncubatingAttributes.OsTypeValues.AIX; + return OsTypeValues.AIX; } else if (os.startsWith("solaris")) { - return OsIncubatingAttributes.OsTypeValues.SOLARIS; + return OsTypeValues.SOLARIS; } else if (os.startsWith("z/os")) { - return OsIncubatingAttributes.OsTypeValues.Z_OS; + return OsTypeValues.Z_OS; } return null; } private OsResource() {} + + // copied from OsIncubatingAttributes + private static final class OsTypeValues { + static final String WINDOWS = "windows"; + static final String LINUX = "linux"; + static final String DARWIN = "darwin"; + static final String FREEBSD = "freebsd"; + static final String NETBSD = "netbsd"; + static final String OPENBSD = "openbsd"; + static final String DRAGONFLYBSD = "dragonflybsd"; + static final String HPUX = "hpux"; + static final String AIX = "aix"; + static final String SOLARIS = "solaris"; + static final String Z_OS = "z_os"; + + private OsTypeValues() {} + } } diff --git a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/ProcessResource.java b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/ProcessResource.java index 34f540721b0f..fe9b398abe79 100644 --- a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/ProcessResource.java +++ b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/ProcessResource.java @@ -5,11 +5,11 @@ package io.opentelemetry.instrumentation.resources; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.semconv.SchemaUrls; -import io.opentelemetry.semconv.incubating.ProcessIncubatingAttributes; import java.io.File; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; @@ -22,6 +22,15 @@ /** Factory of a {@link Resource} which provides information about the current running process. */ public final class ProcessResource { + // copied from ProcessIncubatingAttributes + private static final AttributeKey> PROCESS_COMMAND_ARGS = + AttributeKey.stringArrayKey("process.command_args"); + private static final AttributeKey PROCESS_COMMAND_LINE = + AttributeKey.stringKey("process.command_line"); + private static final AttributeKey PROCESS_EXECUTABLE_PATH = + AttributeKey.stringKey("process.executable.path"); + private static final AttributeKey PROCESS_PID = AttributeKey.longKey("process.pid"); + // Note: This pattern doesn't support file paths with spaces in them. // Important: This is statically used in buildResource, so must be declared/initialized first. private static final Pattern JAR_FILE_PATTERN = @@ -56,7 +65,7 @@ private static Resource doBuildResource() { long pid = ProcessPid.getPid(); if (pid >= 0) { - attributes.put(ProcessIncubatingAttributes.PROCESS_PID, pid); + attributes.put(PROCESS_PID, pid); } String javaHome = null; @@ -78,8 +87,7 @@ private static Resource doBuildResource() { executablePath.append(".exe"); } - attributes.put( - ProcessIncubatingAttributes.PROCESS_EXECUTABLE_PATH, executablePath.toString()); + attributes.put(PROCESS_EXECUTABLE_PATH, executablePath.toString()); String[] args = ProcessArguments.getProcessArguments(); // This will only work with Java 9+ but provides everything except the executablePath. @@ -87,7 +95,7 @@ private static Resource doBuildResource() { List commandArgs = new ArrayList<>(args.length + 1); commandArgs.add(executablePath.toString()); commandArgs.addAll(Arrays.asList(args)); - attributes.put(ProcessIncubatingAttributes.PROCESS_COMMAND_ARGS, commandArgs); + attributes.put(PROCESS_COMMAND_ARGS, commandArgs); } else { // Java 8 StringBuilder commandLine = new StringBuilder(executablePath); for (String arg : runtime.getInputArguments()) { @@ -103,7 +111,7 @@ private static Resource doBuildResource() { } commandLine.append(' ').append(javaCommand); } - attributes.put(ProcessIncubatingAttributes.PROCESS_COMMAND_LINE, commandLine.toString()); + attributes.put(PROCESS_COMMAND_LINE, commandLine.toString()); } } diff --git a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/ProcessRuntimeResource.java b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/ProcessRuntimeResource.java index 4a7da125a22e..d296f4f33dab 100644 --- a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/ProcessRuntimeResource.java +++ b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/ProcessRuntimeResource.java @@ -5,14 +5,22 @@ package io.opentelemetry.instrumentation.resources; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.semconv.SchemaUrls; -import io.opentelemetry.semconv.incubating.ProcessIncubatingAttributes; /** Factory of a {@link Resource} which provides information about the Java runtime. */ public final class ProcessRuntimeResource { + // copied from ProcessIncubatingAttributes + private static final AttributeKey PROCESS_RUNTIME_DESCRIPTION = + AttributeKey.stringKey("process.runtime.description"); + private static final AttributeKey PROCESS_RUNTIME_NAME = + AttributeKey.stringKey("process.runtime.name"); + private static final AttributeKey PROCESS_RUNTIME_VERSION = + AttributeKey.stringKey("process.runtime.version"); + private static final Resource INSTANCE = buildResource(); /** Returns a factory for a {@link Resource} which provides information about the Java runtime. */ @@ -34,11 +42,11 @@ static Resource buildResource() { return Resource.create( Attributes.of( - ProcessIncubatingAttributes.PROCESS_RUNTIME_NAME, + PROCESS_RUNTIME_NAME, name, - ProcessIncubatingAttributes.PROCESS_RUNTIME_VERSION, + PROCESS_RUNTIME_VERSION, version, - ProcessIncubatingAttributes.PROCESS_RUNTIME_DESCRIPTION, + PROCESS_RUNTIME_DESCRIPTION, description), SchemaUrls.V1_24_0); } catch (SecurityException ignored) { diff --git a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/RocketMqConsumerExperimentalAttributeExtractor.java b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/RocketMqConsumerExperimentalAttributeExtractor.java index 52c511abce67..8d017e75965f 100644 --- a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/RocketMqConsumerExperimentalAttributeExtractor.java +++ b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/RocketMqConsumerExperimentalAttributeExtractor.java @@ -9,7 +9,6 @@ import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import java.net.SocketAddress; import javax.annotation.Nullable; import org.apache.rocketmq.common.message.MessageExt; @@ -18,6 +17,10 @@ enum RocketMqConsumerExperimentalAttributeExtractor implements AttributesExtractor { INSTANCE; + // copied from MessagingIncubatingAttributes + private static final AttributeKey MESSAGING_ROCKETMQ_MESSAGE_TAG = + AttributeKey.stringKey("messaging.rocketmq.message.tag"); + private static final AttributeKey MESSAGING_ROCKETMQ_QUEUE_ID = AttributeKey.longKey("messaging.rocketmq.queue_id"); private static final AttributeKey MESSAGING_ROCKETMQ_QUEUE_OFFSET = @@ -29,7 +32,7 @@ enum RocketMqConsumerExperimentalAttributeExtractor public void onStart(AttributesBuilder attributes, Context parentContext, MessageExt msg) { String tags = msg.getTags(); if (tags != null) { - attributes.put(MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TAG, tags); + attributes.put(MESSAGING_ROCKETMQ_MESSAGE_TAG, tags); } attributes.put(MESSAGING_ROCKETMQ_QUEUE_ID, msg.getQueueId()); attributes.put(MESSAGING_ROCKETMQ_QUEUE_OFFSET, msg.getQueueOffset()); diff --git a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/RocketMqInstrumenterFactory.java b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/RocketMqInstrumenterFactory.java index 7e0831b8b396..f01f9b3ead35 100644 --- a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/RocketMqInstrumenterFactory.java +++ b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/RocketMqInstrumenterFactory.java @@ -6,10 +6,9 @@ package io.opentelemetry.instrumentation.rocketmqclient.v4_8; import static io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor.constant; -import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION; -import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM; import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.api.incubator.semconv.messaging.MessageOperation; import io.opentelemetry.instrumentation.api.incubator.semconv.messaging.MessagingAttributesExtractor; import io.opentelemetry.instrumentation.api.incubator.semconv.messaging.MessagingAttributesGetter; @@ -28,6 +27,12 @@ class RocketMqInstrumenterFactory { private static final String INSTRUMENTATION_NAME = "io.opentelemetry.rocketmq-client-4.8"; + // copied from MessagingIncubatingAttributes + private static final AttributeKey MESSAGING_OPERATION = + AttributeKey.stringKey("messaging.operation"); + private static final AttributeKey MESSAGING_SYSTEM = + AttributeKey.stringKey("messaging.system"); + static Instrumenter createProducerInstrumenter( OpenTelemetry openTelemetry, List capturedHeaders, diff --git a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/RocketMqProducerExperimentalAttributeExtractor.java b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/RocketMqProducerExperimentalAttributeExtractor.java index fa13de6cb011..11dfd668f6c5 100644 --- a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/RocketMqProducerExperimentalAttributeExtractor.java +++ b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/RocketMqProducerExperimentalAttributeExtractor.java @@ -9,7 +9,6 @@ import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes; import javax.annotation.Nullable; import org.apache.rocketmq.client.hook.SendMessageContext; @@ -17,6 +16,10 @@ enum RocketMqProducerExperimentalAttributeExtractor implements AttributesExtractor { INSTANCE; + // copied from MessagingIncubatingAttributes + private static final AttributeKey MESSAGING_ROCKETMQ_MESSAGE_TAG = + AttributeKey.stringKey("messaging.rocketmq.message.tag"); + private static final AttributeKey MESSAGING_ROCKETMQ_BROKER_ADDRESS = AttributeKey.stringKey("messaging.rocketmq.broker_address"); private static final AttributeKey MESSAGING_ROCKETMQ_SEND_RESULT = @@ -28,7 +31,7 @@ public void onStart( if (request.getMessage() != null) { String tags = request.getMessage().getTags(); if (tags != null) { - attributes.put(MessagingIncubatingAttributes.MESSAGING_ROCKETMQ_MESSAGE_TAG, tags); + attributes.put(MESSAGING_ROCKETMQ_MESSAGE_TAG, tags); } } String brokerAddr = request.getBrokerAddr(); diff --git a/instrumentation/spring/spring-security-config-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/security/config/v6_0/EnduserAttributesCapturer.java b/instrumentation/spring/spring-security-config-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/security/config/v6_0/EnduserAttributesCapturer.java index 7abfc954b75a..dafd161a2443 100644 --- a/instrumentation/spring/spring-security-config-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/security/config/v6_0/EnduserAttributesCapturer.java +++ b/instrumentation/spring/spring-security-config-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/security/config/v6_0/EnduserAttributesCapturer.java @@ -5,10 +5,10 @@ package io.opentelemetry.instrumentation.spring.security.config.v6_0; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.LocalRootSpan; -import io.opentelemetry.semconv.incubating.EnduserIncubatingAttributes; import java.util.Objects; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; @@ -21,6 +21,11 @@ */ public final class EnduserAttributesCapturer { + // copied from EnduserIncubatingAttributes + private static final AttributeKey ENDUSER_ID = AttributeKey.stringKey("enduser.id"); + private static final AttributeKey ENDUSER_ROLE = AttributeKey.stringKey("enduser.role"); + private static final AttributeKey ENDUSER_SCOPE = AttributeKey.stringKey("enduser.scope"); + private static final String DEFAULT_ROLE_PREFIX = "ROLE_"; private static final String DEFAULT_SCOPE_PREFIX = "SCOPE_"; @@ -67,8 +72,7 @@ public void captureEnduserAttributes(Context otelContext, Authentication authent Span localRootSpan = LocalRootSpan.fromContext(otelContext); if (enduserIdEnabled && authentication.getName() != null) { - localRootSpan.setAttribute( - EnduserIncubatingAttributes.ENDUSER_ID, authentication.getName()); + localRootSpan.setAttribute(ENDUSER_ID, authentication.getName()); } StringBuilder roleBuilder = null; @@ -85,12 +89,10 @@ public void captureEnduserAttributes(Context otelContext, Authentication authent } } if (roleBuilder != null) { - localRootSpan.setAttribute( - EnduserIncubatingAttributes.ENDUSER_ROLE, roleBuilder.toString()); + localRootSpan.setAttribute(ENDUSER_ROLE, roleBuilder.toString()); } if (scopeBuilder != null) { - localRootSpan.setAttribute( - EnduserIncubatingAttributes.ENDUSER_SCOPE, scopeBuilder.toString()); + localRootSpan.setAttribute(ENDUSER_SCOPE, scopeBuilder.toString()); } } } diff --git a/testing-common/build.gradle.kts b/testing-common/build.gradle.kts index 8af5d01e3a59..d787b154ae0a 100644 --- a/testing-common/build.gradle.kts +++ b/testing-common/build.gradle.kts @@ -36,6 +36,7 @@ dependencies { api("io.opentelemetry:opentelemetry-api") api("io.opentelemetry:opentelemetry-sdk") api("io.opentelemetry:opentelemetry-sdk-testing") + api("io.opentelemetry.semconv:opentelemetry-semconv-incubating") api(project(":instrumentation-api")) api("org.assertj:assertj-core")