From 60338ed5ef265740df158766c432355605917a64 Mon Sep 17 00:00:00 2001 From: otelbot <197425009+otelbot@users.noreply.github.com> Date: Mon, 2 Nov 2026 16:50:37 +0000 Subject: [PATCH 1/2] Update the semantic conventions version to 1.45.0 --- CHANGELOG.md | 3 + build.gradle.kts | 3 +- .../opentelemetry-semconv.txt | 18 +- .../incubating/AwsIncubatingAttributes.java | 4 +- .../incubating/AwsIncubatingEntities.java | 13 +- .../incubating/AzureIncubatingAttributes.java | 37 +++ .../ClientIncubatingAttributes.java | 104 ++++++++ .../CloudfoundryIncubatingEntities.java | 3 + .../incubating/CpuIncubatingAttributes.java | 11 +- .../incubating/DbIncubatingAttributes.java | 62 +++-- .../incubating/DbIncubatingMetrics.java | 43 ++- .../DestinationIncubatingAttributes.java | 89 ++++++- .../EnduserIncubatingAttributes.java | 11 +- .../incubating/FaasIncubatingAttributes.java | 14 +- .../incubating/GcpIncubatingAttributes.java | 19 ++ .../incubating/GcpIncubatingEntities.java | 8 +- .../incubating/HostIncubatingAttributes.java | 69 ++++- .../incubating/JvmIncubatingAttributes.java | 54 ++++ .../incubating/JvmIncubatingMetrics.java | 70 +++++ .../incubating/K8sIncubatingMetrics.java | 175 ++++++++++++ .../incubating/KafkaIncubatingAttributes.java | 52 ++++ .../incubating/LogIncubatingAttributes.java | 10 +- .../MessagingIncubatingAttributes.java | 251 +++++++++++++++--- .../NetworkIncubatingAttributes.java | 151 +++++++++++ .../OpentracingIncubatingAttributes.java | 14 +- .../incubating/OtelIncubatingMetrics.java | 2 +- .../incubating/PeerIncubatingAttributes.java | 3 +- .../ProfileIncubatingAttributes.java | 3 + .../RabbitmqIncubatingAttributes.java | 28 ++ .../RocketmqIncubatingAttributes.java | 85 ++++++ .../incubating/RpcIncubatingAttributes.java | 191 +++++++++---- .../ServerIncubatingAttributes.java | 104 ++++++++ .../ServiceIncubatingAttributes.java | 31 +++ .../incubating/SessionIncubatingEvents.java | 14 +- .../SourceIncubatingAttributes.java | 87 +++++- .../SystemIncubatingAttributes.java | 44 ++- .../incubating/SystemIncubatingMetrics.java | 4 +- .../incubating/UrlIncubatingAttributes.java | 20 ++ .../incubating/V8jsIncubatingAttributes.java | 31 ++- .../incubating/ZosIncubatingAttributes.java | 19 +- .../opentelemetry/semconv/DbAttributes.java | 49 ++-- .../opentelemetry/semconv/RpcAttributes.java | 83 ++++++ .../io/opentelemetry/semconv/SchemaUrls.java | 1 + .../opentelemetry/semconv/UrlAttributes.java | 20 ++ 44 files changed, 1901 insertions(+), 206 deletions(-) create mode 100644 semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/KafkaIncubatingAttributes.java create mode 100644 semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RabbitmqIncubatingAttributes.java create mode 100644 semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RocketmqIncubatingAttributes.java create mode 100644 semconv/src/main/java/io/opentelemetry/semconv/RpcAttributes.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 9dbcebcf..9148a7b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +* Bump to semconv v1.45.0 + ([#PRNUM](https://github.com/open-telemetry/semantic-conventions-java/pull/PRNUM)) + ## Version 1.44.0 (2026-09-09) * Bump to semconv v1.44.0 diff --git a/build.gradle.kts b/build.gradle.kts index 4dc9aee8..c92ad17f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,9 +13,10 @@ val snapshot = true val apidiffBaselineVersion = "1.44.0" // The release version of https://github.com/open-telemetry/semantic-conventions used to generate classes -var semanticConventionsVersion = "1.44.0" +var semanticConventionsVersion = "1.45.0" val schemaUrlVersions = listOf( semanticConventionsVersion, + "1.44.0", "1.43.0", "1.42.0", "1.41.1", diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-semconv.txt b/docs/apidiffs/current_vs_latest/opentelemetry-semconv.txt index 557d8e15..72e8b721 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-semconv.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-semconv.txt @@ -1,2 +1,16 @@ -Comparing source compatibility of opentelemetry-semconv-1.44.0-SNAPSHOT.jar against opentelemetry-semconv-1.44.0.jar -No changes. \ No newline at end of file +Comparing source compatibility of opentelemetry-semconv-1.45.0-SNAPSHOT.jar against opentelemetry-semconv-1.44.0.jar ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.opentelemetry.semconv.RpcAttributes (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.opentelemetry.api.common.AttributeKey RPC_SYSTEM_NAME + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.opentelemetry.api.common.AttributeKey RPC_METHOD + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.opentelemetry.api.common.AttributeKey RPC_METHOD_ORIGINAL + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.opentelemetry.api.common.AttributeKey RPC_STATUS_CODE ++++ NEW CLASS: PUBLIC(+) STATIC(+) FINAL(+) io.opentelemetry.semconv.RpcAttributes$RpcSystemNameValues (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String DUBBO + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String GRPC +*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.semconv.SchemaUrls (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String V1_45_0 diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/AwsIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/AwsIncubatingAttributes.java index 7e81c6f7..dfc0bbe4 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/AwsIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/AwsIncubatingAttributes.java @@ -131,8 +131,8 @@ public final class AwsIncubatingAttributes { /** * The Amazon Resource Name (ARN) of an ECS - * container instance. + * href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v4-response.html">ECS + * container. */ public static final AttributeKey AWS_ECS_CONTAINER_ARN = stringKey("aws.ecs.container.arn"); diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/AwsIncubatingEntities.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/AwsIncubatingEntities.java index 2bf0b05c..a2915f7f 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/AwsIncubatingEntities.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/AwsIncubatingEntities.java @@ -9,14 +9,17 @@ // buildscripts/templates/registry/incubating_java/IncubatingSemanticEntities.java.j2 @SuppressWarnings("unused") public final class AwsIncubatingEntities { - /** Entities used by AWS Elastic Container Service (ECS). */ - public static final String AWS_ECS_TYPE = "aws.ecs"; + /** An AWS Elastic Container Service (ECS) cluster. */ + public static final String AWS_ECS_CLUSTER_TYPE = "aws.ecs.cluster"; + + /** An application container running in an AWS Elastic Container Service (ECS) task. */ + public static final String AWS_ECS_CONTAINER_TYPE = "aws.ecs.container"; + + /** A running AWS Elastic Container Service (ECS) task. */ + public static final String AWS_ECS_TASK_TYPE = "aws.ecs.task"; /** Entities used by AWS Elastic Kubernetes Service (EKS). */ public static final String AWS_EKS_TYPE = "aws.eks"; - /** Entities specific to Amazon Web Services. */ - public static final String AWS_LOG_TYPE = "aws.log"; - private AwsIncubatingEntities() {} } diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/AzureIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/AzureIncubatingAttributes.java index 87856a5c..cd68ba43 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/AzureIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/AzureIncubatingAttributes.java @@ -57,6 +57,10 @@ public final class AzureIncubatingAttributes { public static final AttributeKey AZURE_COSMOSDB_RESPONSE_SUB_STATUS_CODE = longKey("azure.cosmosdb.response.sub_status_code"); + /** The UTC epoch seconds at which the message has been accepted and stored in the entity. */ + public static final AttributeKey AZURE_EVENTHUBS_MESSAGE_ENQUEUED_TIME = + longKey("azure.eventhubs.message.enqueued_time"); + /** * The name of the Azure resource @@ -80,6 +84,22 @@ public final class AzureIncubatingAttributes { public static final AttributeKey AZURE_SERVICE_REQUEST_ID = stringKey("azure.service.request.id"); + /** + * Describes the settlement + * type. + */ + public static final AttributeKey AZURE_SERVICEBUS_DISPOSITION_STATUS = + stringKey("azure.servicebus.disposition_status"); + + /** Number of deliveries that have been attempted for this message. */ + public static final AttributeKey AZURE_SERVICEBUS_MESSAGE_DELIVERY_COUNT = + longKey("azure.servicebus.message.delivery_count"); + + /** The UTC epoch seconds at which the message has been accepted and stored in the entity. */ + public static final AttributeKey AZURE_SERVICEBUS_MESSAGE_ENQUEUED_TIME = + longKey("azure.servicebus.message.enqueued_time"); + // Enum definitions /** Values for {@link #AZURE_COSMOSDB_CONNECTION_MODE}. */ @@ -113,5 +133,22 @@ public static final class AzureCosmosdbConsistencyLevelIncubatingValues { private AzureCosmosdbConsistencyLevelIncubatingValues() {} } + /** Values for {@link #AZURE_SERVICEBUS_DISPOSITION_STATUS}. */ + public static final class AzureServicebusDispositionStatusIncubatingValues { + /** Message is completed */ + public static final String COMPLETE = "complete"; + + /** Message is abandoned */ + public static final String ABANDON = "abandon"; + + /** Message is sent to dead letter queue */ + public static final String DEAD_LETTER = "dead_letter"; + + /** Message is deferred */ + public static final String DEFER = "defer"; + + private AzureServicebusDispositionStatusIncubatingValues() {} + } + private AzureIncubatingAttributes() {} } diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ClientIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ClientIncubatingAttributes.java index 5c235a4e..576f0a05 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ClientIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ClientIncubatingAttributes.java @@ -29,6 +29,53 @@ public final class ClientIncubatingAttributes { */ @Deprecated public static final AttributeKey CLIENT_ADDRESS = stringKey("client.address"); + /** + * The Autonomous System + * Number (ASN) associated with the client IP address. + * + *

Notes: + * + *

This attribute SHOULD only be set when the client address is an IP address and the ASN is + * available from routing, enrichment, or lookup data. The value SHOULD be represented as an + * integer without the {@code AS} prefix. + */ + public static final AttributeKey CLIENT_AS_NUMBER = longKey("client.as.number"); + + /** + * The name of the organization associated with the autonomous system of the client IP address. + * + *

Notes: + * + *

This attribute SHOULD only be set when {@code client.as.number} is set and the organization + * name is available. The value SHOULD be the organization name as provided by the lookup or + * enrichment source, not the AS name or short code. + */ + public static final AttributeKey CLIENT_AS_ORGANIZATION = + stringKey("client.as.organization"); + + /** + * Client Media Access Control (MAC) address. + * + *

Notes: + * + *

This attribute MUST identify a MAC address associated with the logical client endpoint, + * including when that endpoint is behind intermediaries. If the client's MAC address is unknown, + * this attribute MUST NOT be set. The MAC address of a proxy, gateway, or next-hop router MUST + * NOT be used as a substitute. + * + *

MAC addresses MUST be represented in IEEE RA + * hexadecimal form: as hyphen-separated octets in uppercase hexadecimal form from most to + * least significant. + * + *

+ * [!WARNING] + * + *

This attribute may contain sensitive (PII) information. + *

+ */ + public static final AttributeKey CLIENT_MAC_ADDRESS = stringKey("client.mac.address"); + /** * Client port number. * @@ -43,6 +90,63 @@ public final class ClientIncubatingAttributes { */ @Deprecated public static final AttributeKey CLIENT_PORT = longKey("client.port"); + /** + * The IP prefix associated with the client IP address, in CIDR notation. + * + *

Notes: + * + *

+ * [!WARNING] + * + *

This attribute may contain sensitive (PII) information. A {@code /32} IPv4 prefix or {@code + * /128} IPv6 prefix preserves the complete endpoint IP address. Using CIDR notation does not + * guarantee that the data is anonymous. + *

+ * + *

The value MUST be an IPv4 or IPv6 network prefix in CIDR notation, as defined in RFC 4632 for IPv4 and RFC 4291 for IPv6. IPv4 + * prefixes MUST use a dotted-decimal address followed by {@code /} and a decimal prefix length + * from 0 to 32. IPv6 prefixes MUST use the canonical address text representation defined in RFC 5952, followed by {@code /} and a + * decimal prefix length from 0 to 128. All host bits in the address MUST be set to zero. The + * value MUST NOT contain a domain name, UNIX domain socket name, or IPv6 zone identifier. + * + *

Instrumentation or Collector receivers that populate this attribute MUST convert native + * representations, such as an address and subnet mask or an address and prefix length, to + * equivalent CIDR notation before emitting it. + * + *

This attribute MUST NOT be set unless {@code client.address} is set to an IPv4 or IPv6 + * address. The address MUST use the same IP version as this prefix and be contained in it. + */ + public static final AttributeKey CLIENT_PREFIX = stringKey("client.prefix"); + + /** + * Logical name of the service acting as the client in a connection-based network interaction. + * + *

Notes: + * + *

SHOULD be equal to the actual {@code + * service.name} resource attribute of the logical client, if any. This identifies the client + * service whether the telemetry is recorded by the client, the server, or another observer. + */ + public static final AttributeKey CLIENT_SERVICE_NAME = stringKey("client.service.name"); + + /** + * Logical namespace of the service acting as the client in a connection-based network + * interaction. + * + *

Notes: + * + *

SHOULD be equal to the actual {@code + * service.namespace} resource attribute of the logical client, if any. This identifies the + * client service's namespace whether the telemetry is recorded by the client, the server, or + * another observer. Together with {@code client.service.name}, this identifies the client + * service. An empty namespace is equivalent to an unspecified namespace. + */ + public static final AttributeKey CLIENT_SERVICE_NAMESPACE = + stringKey("client.service.namespace"); + // Enum definitions private ClientIncubatingAttributes() {} diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/CloudfoundryIncubatingEntities.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/CloudfoundryIncubatingEntities.java index 2c2cae84..f0c7a1a6 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/CloudfoundryIncubatingEntities.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/CloudfoundryIncubatingEntities.java @@ -24,5 +24,8 @@ public final class CloudfoundryIncubatingEntities { /** The system component which is monitored. */ public static final String CLOUDFOUNDRY_SYSTEM_TYPE = "cloudfoundry.system"; + /** A concrete instance of the system component which is monitored. */ + public static final String CLOUDFOUNDRY_SYSTEM_INSTANCE_TYPE = "cloudfoundry.system.instance"; + private CloudfoundryIncubatingEntities() {} } diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/CpuIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/CpuIncubatingAttributes.java index 38e4fa99..8db35799 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/CpuIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/CpuIncubatingAttributes.java @@ -14,7 +14,16 @@ // buildscripts/templates/registry/incubating_java/IncubatingSemanticAttributes.java.j2 @SuppressWarnings("unused") public final class CpuIncubatingAttributes { - /** The logical CPU number [0..n-1] */ + /** + * The identifier of a logical execution target (CPU) as seen by the operating system, in the + * range [0..n-1]. + * + *

Notes: + * + *

On systems with simultaneous multithreading (SMT) enabled — such as Intel Hyper-Threading or + * AMD SMT — this value will usually differ from the physical core number, because each core + * presents multiple logical CPUs for the system to use. + */ public static final AttributeKey CPU_LOGICAL_NUMBER = longKey("cpu.logical_number"); /** The mode of the CPU */ diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DbIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DbIncubatingAttributes.java index 604d9773..29034c0d 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DbIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DbIncubatingAttributes.java @@ -82,12 +82,11 @@ public final class DbIncubatingAttributes { public static final AttributeKey DB_CASSANDRA_TABLE = stringKey("db.cassandra.table"); /** - * The name of the connection pool; unique within the instrumented application. In case the - * connection pool implementation doesn't provide a name, instrumentation SHOULD use a combination - * of parameters that would make the name unique, for example, combining attributes {@code - * server.address}, {@code server.port}, and {@code db.namespace}, formatted as {@code - * server.address:server.port/db.namespace}. Instrumentations that generate connection pool name - * following different patterns SHOULD document it. + * The name of the connection pool. If the connection pool does not have a name, instrumentation + * SHOULD use {@code db.namespace}; otherwise {@code server.address}, with {@code server.port} + * appended using {@code :} if set. When appending a port to an IPv6 address, instrumentation MUST + * enclose the address in square brackets. If {@code server.address} is not available, + * instrumentation SHOULD use {@code db.system.name}; otherwise the connection pool library name. */ public static final AttributeKey DB_CLIENT_CONNECTION_POOL_NAME = stringKey("db.client.connection.pool.name"); @@ -125,8 +124,9 @@ public final class DbIncubatingAttributes { *

The collection name SHOULD NOT be extracted from {@code db.query.text}, when the database * system supports query text with multiple collections in non-batch operations. * - *

For batch operations, if the individual operations are known to have the same collection - * name then that collection name SHOULD be used. + *

For batch operations, if the individual operations would all have the same {@code + * db.collection.name} when executed as non-batch operations, then that collection name SHOULD be + * used. * * @deprecated deprecated in favor of stable {@link * io.opentelemetry.semconv.DbAttributes#DB_COLLECTION_NAME} attribute. @@ -374,10 +374,10 @@ public final class DbIncubatingAttributes { *

If spaces can occur in the operation name, multiple consecutive spaces SHOULD be normalized * to a single space. * - *

For batch operations, if the individual operations are known to have the same operation name - * then that operation name SHOULD be used prepended by {@code BATCH }, otherwise {@code - * db.operation.name} SHOULD be {@code BATCH} or some other database system specific term if more - * applicable. + *

For batch operations, if the individual operations would all have the same {@code + * db.operation.name} when executed as non-batch operations, then that operation name SHOULD be + * used prepended by {@code BATCH }. Otherwise, {@code db.operation.name} SHOULD be {@code BATCH} + * or some other database system specific term if more applicable. * * @deprecated deprecated in favor of stable {@link * io.opentelemetry.semconv.DbAttributes#DB_OPERATION_NAME} attribute. @@ -448,10 +448,10 @@ public final class DbIncubatingAttributes { * href="/docs/db/database-spans.md#generating-a-summary-of-the-query">Generating query * summary section. * - *

For batch operations, if the individual operations are known to have the same query summary - * then that query summary SHOULD be used prepended by {@code BATCH }, otherwise {@code - * db.query.summary} SHOULD be {@code BATCH} or some other database system specific term if more - * applicable. + *

For batch operations, if the individual operations would all have the same {@code + * db.query.summary} when executed as non-batch operations, then that query summary SHOULD be used + * prepended by {@code BATCH }. Otherwise, {@code db.query.summary} SHOULD be {@code BATCH} or + * some other database system specific term if more applicable. * * @deprecated deprecated in favor of stable {@link * io.opentelemetry.semconv.DbAttributes#DB_QUERY_SUMMARY} attribute. @@ -466,14 +466,14 @@ public final class DbIncubatingAttributes { * *

For sanitization see Sanitization of {@code - * db.query.text}. For batch operations, if the individual operations are known to have the - * same query text then that query text SHOULD be used, otherwise all of the individual query - * texts SHOULD be concatenated with separator {@code ; } or some other database system specific - * separator if more applicable. Parameterized query text SHOULD NOT be sanitized. Even though - * parameterized query text can potentially have sensitive data, by using a parameterized query - * the user is giving a strong signal that any sensitive data will be passed as parameter values, - * and the benefit to observability of capturing the static part of the query text by default - * outweighs the risk. + * db.query.text}. For batch operations, if the individual operations would all have the same + * {@code db.query.text} when executed as non-batch operations, then that query text SHOULD be + * used. Otherwise, all of the individual query texts SHOULD be concatenated with separator {@code + * ; } or some other database system specific separator if more applicable. Parameterized query + * text SHOULD NOT be sanitized. Even though parameterized query text can potentially have + * sensitive data, by using a parameterized query the user is giving a strong signal that any + * sensitive data will be passed as parameter values, and the benefit to observability of + * capturing the static part of the query text by default outweighs the risk. * * @deprecated deprecated in favor of stable {@link * io.opentelemetry.semconv.DbAttributes#DB_QUERY_TEXT} attribute. @@ -500,8 +500,11 @@ public final class DbIncubatingAttributes { * *

The status code returned by the database. Usually it represents an error code, but may also * represent partial success, warning, or differentiate between various types of successful - * outcomes. Semantic conventions for individual database systems SHOULD document what {@code - * db.response.status_code} means in the context of that system. + * outcomes. The value MAY use a standardized string representation of a numeric status code, if + * one exists, instead of the numeric code. The value MAY be a synthetic status provided by the + * client library rather than returned by the remote service. Semantic conventions for individual + * database systems SHOULD document what {@code db.response.status_code} means in the context of + * that system. * * @deprecated deprecated in favor of stable {@link * io.opentelemetry.semconv.DbAttributes#DB_RESPONSE_STATUS_CODE} attribute. @@ -533,8 +536,9 @@ public final class DbIncubatingAttributes { *

It is RECOMMENDED to capture the value as provided by the application without attempting to * do any case normalization. * - *

For batch operations, if the individual operations are known to have the same stored - * procedure name then that stored procedure name SHOULD be used. + *

For batch operations, if the individual operations would all have the same {@code + * db.stored_procedure.name} when executed as non-batch operations, then that stored procedure + * name SHOULD be used. * * @deprecated deprecated in favor of stable {@link * io.opentelemetry.semconv.DbAttributes#DB_STORED_PROCEDURE_NAME} attribute. @@ -999,7 +1003,7 @@ public static final class DbSystemNameIncubatingValues { /** HyperSQL Database */ public static final String HSQLDB = "hsqldb"; - /** IBM Db2 */ + /** IBM Db2 */ public static final String IBM_DB2 = "ibm.db2"; /** IBM Informix */ diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DbIncubatingMetrics.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DbIncubatingMetrics.java index 3041e02b..9e89f063 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DbIncubatingMetrics.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DbIncubatingMetrics.java @@ -50,16 +50,39 @@ public final class DbIncubatingMetrics { public static final String DB_CLIENT_CONNECTION_IDLE_MIN_DESCRIPTION = "The minimum number of idle open connections allowed."; - /** Name of the {@code db.client.connection.max} metric. */ - public static final String DB_CLIENT_CONNECTION_MAX_NAME = "db.client.connection.max"; + /** Name of the {@code db.client.connection.limit} metric. */ + public static final String DB_CLIENT_CONNECTION_LIMIT_NAME = "db.client.connection.limit"; - /** Unit of the {@code db.client.connection.max} metric. */ - public static final String DB_CLIENT_CONNECTION_MAX_UNIT = "{connection}"; + /** Unit of the {@code db.client.connection.limit} metric. */ + public static final String DB_CLIENT_CONNECTION_LIMIT_UNIT = "{connection}"; - /** Description of the {@code db.client.connection.max} metric. */ - public static final String DB_CLIENT_CONNECTION_MAX_DESCRIPTION = + /** Description of the {@code db.client.connection.limit} metric. */ + public static final String DB_CLIENT_CONNECTION_LIMIT_DESCRIPTION = "The maximum number of open connections allowed."; + /** + * Name of the {@code db.client.connection.max} metric. + * + * @deprecated Replaced by {@code db.client.connection.limit}. + */ + @Deprecated public static final String DB_CLIENT_CONNECTION_MAX_NAME = "db.client.connection.max"; + + /** + * Unit of the {@code db.client.connection.max} metric. + * + * @deprecated Replaced by {@code db.client.connection.limit}. + */ + @Deprecated public static final String DB_CLIENT_CONNECTION_MAX_UNIT = "{connection}"; + + /** + * Description of the {@code db.client.connection.max} metric. + * + * @deprecated Replaced by {@code db.client.connection.limit}. + */ + @Deprecated + public static final String DB_CLIENT_CONNECTION_MAX_DESCRIPTION = + "Deprecated, use `db.client.connection.limit` instead."; + /** Name of the {@code db.client.connection.pending_requests} metric. */ public static final String DB_CLIENT_CONNECTION_PENDING_REQUESTS_NAME = "db.client.connection.pending_requests"; @@ -177,7 +200,7 @@ public final class DbIncubatingMetrics { /** * Name of the {@code db.client.connections.max} metric. * - * @deprecated Replaced by {@code db.client.connection.max}. + * @deprecated Replaced by {@code db.client.connection.limit}. */ @Deprecated public static final String DB_CLIENT_CONNECTIONS_MAX_NAME = "db.client.connections.max"; @@ -185,18 +208,18 @@ public final class DbIncubatingMetrics { /** * Unit of the {@code db.client.connections.max} metric. * - * @deprecated Replaced by {@code db.client.connection.max}. + * @deprecated Replaced by {@code db.client.connection.limit}. */ @Deprecated public static final String DB_CLIENT_CONNECTIONS_MAX_UNIT = "{connection}"; /** * Description of the {@code db.client.connections.max} metric. * - * @deprecated Replaced by {@code db.client.connection.max}. + * @deprecated Replaced by {@code db.client.connection.limit}. */ @Deprecated public static final String DB_CLIENT_CONNECTIONS_MAX_DESCRIPTION = - "Deprecated, use `db.client.connection.max` instead."; + "Deprecated, use `db.client.connection.limit` instead."; /** * Name of the {@code db.client.connections.pending_requests} metric. diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DestinationIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DestinationIncubatingAttributes.java index abeecb16..7932317a 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DestinationIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DestinationIncubatingAttributes.java @@ -15,20 +15,99 @@ @SuppressWarnings("unused") public final class DestinationIncubatingAttributes { /** - * Destination address - domain name if available without reverse DNS lookup; otherwise, IP - * address or UNIX domain socket name. + * Destination address as observed at the point of instrumentation - typically an IP address, or a + * UNIX domain socket name; a domain name only when the receiver was addressed by name (for + * example a peer-to-peer node dialed by hostname), never obtained via reverse DNS lookup. * *

Notes: * - *

When observed from the source side, and when communicating through an intermediary, {@code - * destination.address} SHOULD represent the destination address behind any intermediaries, for - * example proxies, if it's available. + *

{@code destination.address} SHOULD be the receiver address as observed at the point of + * instrumentation, for example the destination of the packet, flow, or exchange seen on the wire + * or socket. Instrumentation SHOULD capture the available address and SHOULD NOT try to resolve + * the address behind intermediaries such as proxies or load balancers, or perform a reverse DNS + * lookup to obtain a domain name. */ public static final AttributeKey DESTINATION_ADDRESS = stringKey("destination.address"); + /** + * The Autonomous System + * Number (ASN) associated with the destination IP address. + * + *

Notes: + * + *

This attribute SHOULD only be set when the destination address is an IP address and the ASN + * is available from routing, enrichment, or lookup data. The value SHOULD be represented as an + * integer without the {@code AS} prefix. + */ + public static final AttributeKey DESTINATION_AS_NUMBER = longKey("destination.as.number"); + + /** + * The name of the organization associated with the autonomous system of the destination IP + * address. + * + *

Notes: + * + *

This attribute SHOULD only be set when {@code destination.as.number} is set and the + * organization name is available. The value SHOULD be the organization name as provided by the + * lookup or enrichment source, not the AS name or short code. + */ + public static final AttributeKey DESTINATION_AS_ORGANIZATION = + stringKey("destination.as.organization"); + + /** + * Destination Media Access Control (MAC) address. + * + *

Notes: + * + *

MAC addresses MUST be represented in IEEE RA + * hexadecimal form: as hyphen-separated octets in uppercase hexadecimal form from most to + * least significant. + * + *

+ * [!WARNING] + * + *

This attribute may contain sensitive (PII) information. + *

+ */ + public static final AttributeKey DESTINATION_MAC_ADDRESS = + stringKey("destination.mac.address"); + /** Destination port number */ public static final AttributeKey DESTINATION_PORT = longKey("destination.port"); + /** + * The IP prefix associated with the destination IP address, in CIDR notation. + * + *

Notes: + * + *

+ * [!WARNING] + * + *

This attribute may contain sensitive (PII) information. A {@code /32} IPv4 prefix or {@code + * /128} IPv6 prefix preserves the complete endpoint IP address. Using CIDR notation does not + * guarantee that the data is anonymous. + *

+ * + *

The value MUST be an IPv4 or IPv6 network prefix in CIDR notation, as defined in RFC 4632 for IPv4 and RFC 4291 for IPv6. IPv4 + * prefixes MUST use a dotted-decimal address followed by {@code /} and a decimal prefix length + * from 0 to 32. IPv6 prefixes MUST use the canonical address text representation defined in RFC 5952, followed by {@code /} and a + * decimal prefix length from 0 to 128. All host bits in the address MUST be set to zero. The + * value MUST NOT contain a domain name, UNIX domain socket name, or IPv6 zone identifier. + * + *

Instrumentation or Collector receivers that populate this attribute MUST convert native + * representations, such as an address and subnet mask or an address and prefix length, to + * equivalent CIDR notation before emitting it. + * + *

This attribute MAY be set whether or not {@code destination.address} is set. If {@code + * destination.address} is also set to an IP address, it MUST use the same IP version and be + * contained in this prefix. + */ + public static final AttributeKey DESTINATION_PREFIX = stringKey("destination.prefix"); + // Enum definitions private DestinationIncubatingAttributes() {} diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/EnduserIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/EnduserIncubatingAttributes.java index cb7ab808..7c693d47 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/EnduserIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/EnduserIncubatingAttributes.java @@ -24,8 +24,12 @@ public final class EnduserIncubatingAttributes { *

* [!Warning] This field contains sensitive (PII) information. *
+ * + * @deprecated Moved to the OpenTelemetry + * Client-Side semantic conventions repository. */ - public static final AttributeKey ENDUSER_ID = stringKey("enduser.id"); + @Deprecated public static final AttributeKey ENDUSER_ID = stringKey("enduser.id"); /** * Pseudonymous identifier of an end user. This identifier should be a random value that is not @@ -38,7 +42,12 @@ public final class EnduserIncubatingAttributes { *
* [!Warning] This field contains sensitive (linkable PII) information. *
+ * + * @deprecated Moved to the OpenTelemetry + * Client-Side semantic conventions repository. */ + @Deprecated public static final AttributeKey ENDUSER_PSEUDO_ID = stringKey("enduser.pseudo.id"); /** diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/FaasIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/FaasIncubatingAttributes.java index 1a542d9d..4baafc95 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/FaasIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/FaasIncubatingAttributes.java @@ -65,7 +65,15 @@ public final class FaasIncubatingAttributes { public static final AttributeKey FAAS_INSTANCE = stringKey("faas.instance"); /** The invocation ID of the current function invocation. */ - public static final AttributeKey FAAS_INVOCATION_ID = stringKey("faas.invocation_id"); + public static final AttributeKey FAAS_INVOCATION_ID = stringKey("faas.invocation.id"); + + /** + * A string containing the function invocation time in the ISO 8601 format expressed in + * UTC. + */ + public static final AttributeKey FAAS_INVOCATION_START_TIME = + stringKey("faas.invocation.start_time"); /** * The name of the invoked function. @@ -135,8 +143,10 @@ public final class FaasIncubatingAttributes { * A string containing the function invocation time in the ISO 8601 format expressed in * UTC. + * + * @deprecated Replaced by {@code faas.invocation.start_time}. */ - public static final AttributeKey FAAS_TIME = stringKey("faas.time"); + @Deprecated public static final AttributeKey FAAS_TIME = stringKey("faas.time"); /** Type of the trigger which caused this function invocation. */ public static final AttributeKey FAAS_TRIGGER = stringKey("faas.trigger"); diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/GcpIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/GcpIncubatingAttributes.java index 4358785a..e42a8da3 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/GcpIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/GcpIncubatingAttributes.java @@ -208,6 +208,25 @@ public final class GcpIncubatingAttributes { public static final AttributeKey GCP_GCE_INSTANCE_GROUP_MANAGER_ZONE = stringKey("gcp.gce.instance_group_manager.zone"); + /** The ack deadline in seconds set for the modify ack deadline request. */ + public static final AttributeKey GCP_PUBSUB_MESSAGE_ACK_DEADLINE = + longKey("gcp.pubsub.message.ack_deadline"); + + /** The ack ID for a given message. */ + public static final AttributeKey GCP_PUBSUB_MESSAGE_ACK_ID = + stringKey("gcp.pubsub.message.ack_id"); + + /** The delivery attempt for a given message. */ + public static final AttributeKey GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT = + longKey("gcp.pubsub.message.delivery_attempt"); + + /** + * The ordering key for a given message. If the attribute is not present, the message does not + * have an ordering key. + */ + public static final AttributeKey GCP_PUBSUB_MESSAGE_ORDERING_KEY = + stringKey("gcp.pubsub.message.ordering_key"); + // Enum definitions /** Values for {@link #GCP_APPHUB_SERVICE_CRITICALITY_TYPE}. */ diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/GcpIncubatingEntities.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/GcpIncubatingEntities.java index a8949fa5..f039e02d 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/GcpIncubatingEntities.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/GcpIncubatingEntities.java @@ -27,11 +27,11 @@ public final class GcpIncubatingEntities { */ public static final String GCP_APPHUB_WORKLOAD_TYPE = "gcp.apphub.workload"; - /** Resource used by Google Cloud Run. */ - public static final String GCP_CLOUD_RUN_TYPE = "gcp.cloud_run"; + /** A task within a Google Cloud Run job execution. */ + public static final String GCP_CLOUD_RUN_JOB_TASK_TYPE = "gcp.cloud_run.job.task"; - /** Resources used by Google Compute Engine (GCE). */ - public static final String GCP_GCE_TYPE = "gcp.gce"; + /** A Google Compute Engine (GCE) instance. */ + public static final String GCP_GCE_INSTANCE_TYPE = "gcp.gce.instance"; /** A GCE instance group manager. */ public static final String GCP_GCE_INSTANCE_GROUP_MANAGER_TYPE = "gcp.gce.instance_group_manager"; diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/HostIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/HostIncubatingAttributes.java index f6388e8c..5388a78a 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/HostIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/HostIncubatingAttributes.java @@ -49,9 +49,72 @@ public final class HostIncubatingAttributes { public static final AttributeKey HOST_CPU_VENDOR_ID = stringKey("host.cpu.vendor.id"); /** - * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For - * non-containerized systems, this should be the {@code machine-id}. See the table below for the - * sources to use to determine the {@code machine-id} based on operating system. + * Unique host ID, determined by the first matching source in the priority order. + * + *

Notes: + * + *

SHOULD be determined using the first available source from the following priority tiers: + * + *

    + *
  1. Known cloud vendors - cloud instance ID + *
  2. Known VM vendors - provider VM ID + *
  3. OS-dependent machine ID + *
  4. User-provided value + *
+ * + *

The value SHOULD conform to the following properties: + * + *

    + *
  • Unique within a given context; + *
  • Repeatable + * - multiple observers on the same host come up with the same value; + *
  • Persistent - survives host restarts and software updates. + *
+ * + *

Collecting {@code host.id} From Known Environments: When {@code host.id} is + * derived from a cloud vendor instance ID, the resource SHOULD also carry the corresponding + * {@code cloud.provider} and {@code cloud.platform} attributes so that the source of the {@code + * host.id} value can be unambiguously determined. + * + *

The following cloud environments are currently recognized: + * + *

| Environment | {@code host.id} source | {@code cloud.provider} | {@code cloud.platform} | | + * --- | --- | --- | --- | | AWS EC2 | EC2 instance ID | {@code aws} | {@code aws_ec2} | | AWS EKS + * (node) | EC2 instance ID | {@code aws} | {@code aws_eks} | | Azure VM | {@code vmId} | {@code + * azure} | {@code azure.vm} | | GCP Compute Engine | GCE instance ID | {@code gcp} | {@code + * gcp_compute_engine} | | GCP GKE (node) | GCE instance ID | {@code gcp} | {@code + * gcp_kubernetes_engine} | + * + *

The listed {@code cloud.provider}/{@code cloud.platform} values are for example only. Refer + * to the {@code cloud} attribute definitions for + * the relevant set of values. + * + *

Non-privileged Machine ID Lookup: When collecting {@code host.id} for + * non-containerized systems, non-privileged lookups of the machine ID are preferred. SDK detector + * implementations MUST use the sources listed below to obtain the machine ID. + * + *

| OS | Primary | Fallback | | --- | --- | --- | | Linux | contents of {@code + * /etc/machine-id} | contents of {@code /var/lib/dbus/machine-id} | | BSD | contents of {@code + * /etc/hostid} | output of {@code /bin/kenv -q smbios.system.uuid} | | macOS | {@code + * IOPlatformUUID} line from the output of {@code /usr/sbin/ioreg -rd1 -c + * "IOPlatformExpertDevice"} | - | | Windows | {@code MachineGuid} from registry {@code + * HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography} | - | + * + *

Privileged Machine ID Lookup: The {@code host.id} can be looked up using + * privileged sources. For example, Linux systems can use the output of {@code dmidecode -t + * system}, {@code dmidecode -t baseboard}, {@code dmidecode -t chassis}, or read the + * corresponding data from the filesystem (e.g. {@code cat + * /sys/devices/virtual/dmi/id/product_id}, {@code cat /sys/devices/virtual/dmi/id/product_uuid}, + * etc), however, SDK resource detector implementations MUST NOT collect {@code host.id} from + * privileged sources. If privileged lookup of {@code host.id} is required, the value SHOULD be + * injected via the {@code OTEL_RESOURCE_ATTRIBUTES} environment variable. + * + *

Collecting {@code host.id} From User Configuration: If none of the above + * sources yields a non-empty value, the implementation MAY be unable to determine {@code host.id} + * automatically and SHOULD omit the attribute. In that case, the {@code host.id} can only be + * provided through user configuration or other available manual options. Users SHOULD ensure that + * the {@code host.id} value conforms to the properties stated above. */ public static final AttributeKey HOST_ID = stringKey("host.id"); diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/JvmIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/JvmIncubatingAttributes.java index d36f3df4..f5d43562 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/JvmIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/JvmIncubatingAttributes.java @@ -24,6 +24,49 @@ public final class JvmIncubatingAttributes { */ public static final AttributeKey JVM_BUFFER_POOL_NAME = stringKey("jvm.buffer.pool.name"); + /** + * Name of the executor. + * + *

Notes: + * + *

The executor name SHOULD be low-cardinality. If {@code jvm.executor.owner.name} is present, + * the combination of {@code jvm.executor.owner.name} and {@code jvm.executor.name} SHOULD be + * unique within the instrumented application; otherwise, {@code jvm.executor.name} SHOULD be + * unique when an executor-specific name is available. If the executor implementation does not + * provide an explicit name, instrumentation SHOULD derive a name from available + * implementation-specific metadata, such as a normalized worker thread name. If no + * executor-specific name or metadata is available, instrumentation MAY use {@code unknown}. The + * {@code unknown} value does not identify an executor, and metrics from multiple executors using + * this value MAY be aggregated. Users requiring per-executor metric series SHOULD configure a + * distinct name through the executor's {@code ThreadFactory}. Instrumentations SHOULD document + * how the name is derived and how users can configure it. Once metric series registration for an + * executor has started, {@code jvm.executor.name} and {@code jvm.executor.owner.name} MUST remain + * stable for the lifetime of that registration. Instrumentations SHOULD determine these + * attributes before the first worker is registered. Instrumentations MUST NOT re-register + * cumulative metrics under a new attribute set or replay prior cumulative values under new + * attributes. + */ + public static final AttributeKey JVM_EXECUTOR_NAME = stringKey("jvm.executor.name"); + + /** + * Name of the logical component that owns the executor. + * + *

Notes: + * + *

The executor owner name SHOULD be a low-cardinality identifier for the component that + * creates and configures the executor. It is neither the executor implementation type nor an + * OpenTelemetry instrumentation scope. + */ + public static final AttributeKey JVM_EXECUTOR_OWNER_NAME = + stringKey("jvm.executor.owner.name"); + + /** State of an executor thread. */ + public static final AttributeKey JVM_EXECUTOR_THREAD_STATE = + stringKey("jvm.executor.thread.state"); + + /** The fully qualified class name of the executor implementation. */ + public static final AttributeKey JVM_EXECUTOR_TYPE = stringKey("jvm.executor.type"); + /** * Name of the garbage collector action. * @@ -103,6 +146,17 @@ public final class JvmIncubatingAttributes { // Enum definitions + /** Values for {@link #JVM_EXECUTOR_THREAD_STATE}. */ + public static final class JvmExecutorThreadStateIncubatingValues { + /** The thread is currently executing a task. */ + public static final String ACTIVE = "active"; + + /** The thread currently exists but is not executing a task. */ + public static final String IDLE = "idle"; + + private JvmExecutorThreadStateIncubatingValues() {} + } + /** * Values for {@link #JVM_MEMORY_TYPE}. * diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/JvmIncubatingMetrics.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/JvmIncubatingMetrics.java index 70f9bafb..977ca622 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/JvmIncubatingMetrics.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/JvmIncubatingMetrics.java @@ -120,6 +120,76 @@ public final class JvmIncubatingMetrics { public static final String JVM_CPU_TIME_DESCRIPTION = "CPU time used by the process as reported by the JVM."; + /** Name of the {@code jvm.executor.queue.capacity} metric. */ + public static final String JVM_EXECUTOR_QUEUE_CAPACITY_NAME = "jvm.executor.queue.capacity"; + + /** Unit of the {@code jvm.executor.queue.capacity} metric. */ + public static final String JVM_EXECUTOR_QUEUE_CAPACITY_UNIT = "{task}"; + + /** Description of the {@code jvm.executor.queue.capacity} metric. */ + public static final String JVM_EXECUTOR_QUEUE_CAPACITY_DESCRIPTION = + "The maximum number of tasks the executor queue can hold."; + + /** Name of the {@code jvm.executor.queue.size} metric. */ + public static final String JVM_EXECUTOR_QUEUE_SIZE_NAME = "jvm.executor.queue.size"; + + /** Unit of the {@code jvm.executor.queue.size} metric. */ + public static final String JVM_EXECUTOR_QUEUE_SIZE_UNIT = "{task}"; + + /** Description of the {@code jvm.executor.queue.size} metric. */ + public static final String JVM_EXECUTOR_QUEUE_SIZE_DESCRIPTION = + "The number of tasks currently queued for execution."; + + /** Name of the {@code jvm.executor.task.completed} metric. */ + public static final String JVM_EXECUTOR_TASK_COMPLETED_NAME = "jvm.executor.task.completed"; + + /** Unit of the {@code jvm.executor.task.completed} metric. */ + public static final String JVM_EXECUTOR_TASK_COMPLETED_UNIT = "{task}"; + + /** Description of the {@code jvm.executor.task.completed} metric. */ + public static final String JVM_EXECUTOR_TASK_COMPLETED_DESCRIPTION = + "The number of tasks completed by the executor."; + + /** Name of the {@code jvm.executor.task.rejected} metric. */ + public static final String JVM_EXECUTOR_TASK_REJECTED_NAME = "jvm.executor.task.rejected"; + + /** Unit of the {@code jvm.executor.task.rejected} metric. */ + public static final String JVM_EXECUTOR_TASK_REJECTED_UNIT = "{task}"; + + /** Description of the {@code jvm.executor.task.rejected} metric. */ + public static final String JVM_EXECUTOR_TASK_REJECTED_DESCRIPTION = + "The number of task submissions rejected by the executor."; + + /** Name of the {@code jvm.executor.thread.core} metric. */ + public static final String JVM_EXECUTOR_THREAD_CORE_NAME = "jvm.executor.thread.core"; + + /** Unit of the {@code jvm.executor.thread.core} metric. */ + public static final String JVM_EXECUTOR_THREAD_CORE_UNIT = "{thread}"; + + /** Description of the {@code jvm.executor.thread.core} metric. */ + public static final String JVM_EXECUTOR_THREAD_CORE_DESCRIPTION = + "The number of core threads configured for the executor."; + + /** Name of the {@code jvm.executor.thread.count} metric. */ + public static final String JVM_EXECUTOR_THREAD_COUNT_NAME = "jvm.executor.thread.count"; + + /** Unit of the {@code jvm.executor.thread.count} metric. */ + public static final String JVM_EXECUTOR_THREAD_COUNT_UNIT = "{thread}"; + + /** Description of the {@code jvm.executor.thread.count} metric. */ + public static final String JVM_EXECUTOR_THREAD_COUNT_DESCRIPTION = + "The number of executor threads that are currently in the state described by the `jvm.executor.thread.state` attribute. "; + + /** Name of the {@code jvm.executor.thread.limit} metric. */ + public static final String JVM_EXECUTOR_THREAD_LIMIT_NAME = "jvm.executor.thread.limit"; + + /** Unit of the {@code jvm.executor.thread.limit} metric. */ + public static final String JVM_EXECUTOR_THREAD_LIMIT_UNIT = "{thread}"; + + /** Description of the {@code jvm.executor.thread.limit} metric. */ + public static final String JVM_EXECUTOR_THREAD_LIMIT_DESCRIPTION = + "The maximum number of threads allowed for the executor."; + /** Name of the {@code jvm.file_descriptor.count} metric. */ public static final String JVM_FILE_DESCRIPTOR_COUNT_NAME = "jvm.file_descriptor.count"; diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/K8sIncubatingMetrics.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/K8sIncubatingMetrics.java index 4de27b24..772815a4 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/K8sIncubatingMetrics.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/K8sIncubatingMetrics.java @@ -201,6 +201,17 @@ public final class K8sIncubatingMetrics { public static final String K8S_CONTAINER_MEMORY_LIMIT_DESIRED_DESCRIPTION = "Maximum memory resource limit as defined by the container spec."; + /** Name of the {@code k8s.container.memory.limit.utilization} metric. */ + public static final String K8S_CONTAINER_MEMORY_LIMIT_UTILIZATION_NAME = + "k8s.container.memory.limit.utilization"; + + /** Unit of the {@code k8s.container.memory.limit.utilization} metric. */ + public static final String K8S_CONTAINER_MEMORY_LIMIT_UTILIZATION_UNIT = "1"; + + /** Description of the {@code k8s.container.memory.limit.utilization} metric. */ + public static final String K8S_CONTAINER_MEMORY_LIMIT_UTILIZATION_DESCRIPTION = + "The ratio of container memory working set to its current memory limit."; + /** * Name of the {@code k8s.container.memory.request} metric. * @@ -247,6 +258,17 @@ public final class K8sIncubatingMetrics { public static final String K8S_CONTAINER_MEMORY_REQUEST_DESIRED_DESCRIPTION = "Memory resource requested as defined by the container spec."; + /** Name of the {@code k8s.container.memory.request.utilization} metric. */ + public static final String K8S_CONTAINER_MEMORY_REQUEST_UTILIZATION_NAME = + "k8s.container.memory.request.utilization"; + + /** Unit of the {@code k8s.container.memory.request.utilization} metric. */ + public static final String K8S_CONTAINER_MEMORY_REQUEST_UTILIZATION_UNIT = "1"; + + /** Description of the {@code k8s.container.memory.request.utilization} metric. */ + public static final String K8S_CONTAINER_MEMORY_REQUEST_UTILIZATION_DESCRIPTION = + "The ratio of container memory working set to its current memory request."; + /** Name of the {@code k8s.container.ready} metric. */ public static final String K8S_CONTAINER_READY_NAME = "k8s.container.ready"; @@ -1185,6 +1207,26 @@ public final class K8sIncubatingMetrics { /** Description of the {@code k8s.node.paging.faults} metric. */ public static final String K8S_NODE_PAGING_FAULTS_DESCRIPTION = "Node memory paging faults."; + /** Name of the {@code k8s.node.pid.limit} metric. */ + public static final String K8S_NODE_PID_LIMIT_NAME = "k8s.node.pid.limit"; + + /** Unit of the {@code k8s.node.pid.limit} metric. */ + public static final String K8S_NODE_PID_LIMIT_UNIT = "{thread}"; + + /** Description of the {@code k8s.node.pid.limit} metric. */ + public static final String K8S_NODE_PID_LIMIT_DESCRIPTION = + "Total number of processes/threads allowed by the operating system on the node."; + + /** Name of the {@code k8s.node.pid.usage} metric. */ + public static final String K8S_NODE_PID_USAGE_NAME = "k8s.node.pid.usage"; + + /** Unit of the {@code k8s.node.pid.usage} metric. */ + public static final String K8S_NODE_PID_USAGE_UNIT = "{thread}"; + + /** Description of the {@code k8s.node.pid.usage} metric. */ + public static final String K8S_NODE_PID_USAGE_DESCRIPTION = + "Total number of existing processes and threads on the node."; + /** Name of the {@code k8s.node.pod.allocatable} metric. */ public static final String K8S_NODE_POD_ALLOCATABLE_NAME = "k8s.node.pod.allocatable"; @@ -1304,6 +1346,67 @@ public final class K8sIncubatingMetrics { public static final String K8S_PERSISTENTVOLUMECLAIM_STORAGE_REQUEST_DESCRIPTION = "The storage requested by the PersistentVolumeClaim."; + /** Name of the {@code k8s.pod.cpu.limit.current} metric. */ + public static final String K8S_POD_CPU_LIMIT_CURRENT_NAME = "k8s.pod.cpu.limit.current"; + + /** Unit of the {@code k8s.pod.cpu.limit.current} metric. */ + public static final String K8S_POD_CPU_LIMIT_CURRENT_UNIT = "{cpu}"; + + /** Description of the {@code k8s.pod.cpu.limit.current} metric. */ + public static final String K8S_POD_CPU_LIMIT_CURRENT_DESCRIPTION = + "Maximum CPU resource limit currently configured for a running Pod."; + + /** Name of the {@code k8s.pod.cpu.limit.desired} metric. */ + public static final String K8S_POD_CPU_LIMIT_DESIRED_NAME = "k8s.pod.cpu.limit.desired"; + + /** Unit of the {@code k8s.pod.cpu.limit.desired} metric. */ + public static final String K8S_POD_CPU_LIMIT_DESIRED_UNIT = "{cpu}"; + + /** Description of the {@code k8s.pod.cpu.limit.desired} metric. */ + public static final String K8S_POD_CPU_LIMIT_DESIRED_DESCRIPTION = + "Maximum CPU resource limit as defined by the Pod spec."; + + /** Name of the {@code k8s.pod.cpu.limit.utilization} metric. */ + public static final String K8S_POD_CPU_LIMIT_UTILIZATION_NAME = "k8s.pod.cpu.limit.utilization"; + + /** Unit of the {@code k8s.pod.cpu.limit.utilization} metric. */ + public static final String K8S_POD_CPU_LIMIT_UTILIZATION_UNIT = "1"; + + /** Description of the {@code k8s.pod.cpu.limit.utilization} metric. */ + public static final String K8S_POD_CPU_LIMIT_UTILIZATION_DESCRIPTION = + "The ratio of Pod CPU usage to its current CPU limit."; + + /** Name of the {@code k8s.pod.cpu.request.current} metric. */ + public static final String K8S_POD_CPU_REQUEST_CURRENT_NAME = "k8s.pod.cpu.request.current"; + + /** Unit of the {@code k8s.pod.cpu.request.current} metric. */ + public static final String K8S_POD_CPU_REQUEST_CURRENT_UNIT = "{cpu}"; + + /** Description of the {@code k8s.pod.cpu.request.current} metric. */ + public static final String K8S_POD_CPU_REQUEST_CURRENT_DESCRIPTION = + "CPU resource requested currently configured for a running Pod."; + + /** Name of the {@code k8s.pod.cpu.request.desired} metric. */ + public static final String K8S_POD_CPU_REQUEST_DESIRED_NAME = "k8s.pod.cpu.request.desired"; + + /** Unit of the {@code k8s.pod.cpu.request.desired} metric. */ + public static final String K8S_POD_CPU_REQUEST_DESIRED_UNIT = "{cpu}"; + + /** Description of the {@code k8s.pod.cpu.request.desired} metric. */ + public static final String K8S_POD_CPU_REQUEST_DESIRED_DESCRIPTION = + "CPU resource requested as defined by the Pod spec."; + + /** Name of the {@code k8s.pod.cpu.request.utilization} metric. */ + public static final String K8S_POD_CPU_REQUEST_UTILIZATION_NAME = + "k8s.pod.cpu.request.utilization"; + + /** Unit of the {@code k8s.pod.cpu.request.utilization} metric. */ + public static final String K8S_POD_CPU_REQUEST_UTILIZATION_UNIT = "1"; + + /** Description of the {@code k8s.pod.cpu.request.utilization} metric. */ + public static final String K8S_POD_CPU_REQUEST_UTILIZATION_DESCRIPTION = + "The ratio of Pod CPU usage to its current CPU request."; + /** Name of the {@code k8s.pod.cpu.time} metric. */ public static final String K8S_POD_CPU_TIME_NAME = "k8s.pod.cpu.time"; @@ -1360,6 +1463,37 @@ public final class K8sIncubatingMetrics { /** Description of the {@code k8s.pod.memory.available} metric. */ public static final String K8S_POD_MEMORY_AVAILABLE_DESCRIPTION = "Pod memory available."; + /** Name of the {@code k8s.pod.memory.limit.current} metric. */ + public static final String K8S_POD_MEMORY_LIMIT_CURRENT_NAME = "k8s.pod.memory.limit.current"; + + /** Unit of the {@code k8s.pod.memory.limit.current} metric. */ + public static final String K8S_POD_MEMORY_LIMIT_CURRENT_UNIT = "By"; + + /** Description of the {@code k8s.pod.memory.limit.current} metric. */ + public static final String K8S_POD_MEMORY_LIMIT_CURRENT_DESCRIPTION = + "Maximum memory resource limit currently configured for a running Pod."; + + /** Name of the {@code k8s.pod.memory.limit.desired} metric. */ + public static final String K8S_POD_MEMORY_LIMIT_DESIRED_NAME = "k8s.pod.memory.limit.desired"; + + /** Unit of the {@code k8s.pod.memory.limit.desired} metric. */ + public static final String K8S_POD_MEMORY_LIMIT_DESIRED_UNIT = "By"; + + /** Description of the {@code k8s.pod.memory.limit.desired} metric. */ + public static final String K8S_POD_MEMORY_LIMIT_DESIRED_DESCRIPTION = + "Maximum memory resource limit as defined by the Pod spec."; + + /** Name of the {@code k8s.pod.memory.limit.utilization} metric. */ + public static final String K8S_POD_MEMORY_LIMIT_UTILIZATION_NAME = + "k8s.pod.memory.limit.utilization"; + + /** Unit of the {@code k8s.pod.memory.limit.utilization} metric. */ + public static final String K8S_POD_MEMORY_LIMIT_UTILIZATION_UNIT = "1"; + + /** Description of the {@code k8s.pod.memory.limit.utilization} metric. */ + public static final String K8S_POD_MEMORY_LIMIT_UTILIZATION_DESCRIPTION = + "The ratio of Pod memory working set to its current memory limit."; + /** * Name of the {@code k8s.pod.memory.paging.faults} metric. * @@ -1384,6 +1518,37 @@ public final class K8sIncubatingMetrics { public static final String K8S_POD_MEMORY_PAGING_FAULTS_DESCRIPTION = "Deprecated, use `k8s.pod.paging.faults` instead."; + /** Name of the {@code k8s.pod.memory.request.current} metric. */ + public static final String K8S_POD_MEMORY_REQUEST_CURRENT_NAME = "k8s.pod.memory.request.current"; + + /** Unit of the {@code k8s.pod.memory.request.current} metric. */ + public static final String K8S_POD_MEMORY_REQUEST_CURRENT_UNIT = "By"; + + /** Description of the {@code k8s.pod.memory.request.current} metric. */ + public static final String K8S_POD_MEMORY_REQUEST_CURRENT_DESCRIPTION = + "Memory resource request currently configured for a running Pod."; + + /** Name of the {@code k8s.pod.memory.request.desired} metric. */ + public static final String K8S_POD_MEMORY_REQUEST_DESIRED_NAME = "k8s.pod.memory.request.desired"; + + /** Unit of the {@code k8s.pod.memory.request.desired} metric. */ + public static final String K8S_POD_MEMORY_REQUEST_DESIRED_UNIT = "By"; + + /** Description of the {@code k8s.pod.memory.request.desired} metric. */ + public static final String K8S_POD_MEMORY_REQUEST_DESIRED_DESCRIPTION = + "Memory resource requested as defined by the Pod spec."; + + /** Name of the {@code k8s.pod.memory.request.utilization} metric. */ + public static final String K8S_POD_MEMORY_REQUEST_UTILIZATION_NAME = + "k8s.pod.memory.request.utilization"; + + /** Unit of the {@code k8s.pod.memory.request.utilization} metric. */ + public static final String K8S_POD_MEMORY_REQUEST_UTILIZATION_UNIT = "1"; + + /** Description of the {@code k8s.pod.memory.request.utilization} metric. */ + public static final String K8S_POD_MEMORY_REQUEST_UTILIZATION_DESCRIPTION = + "The ratio of Pod memory working set to its current memory request."; + /** Name of the {@code k8s.pod.memory.rss} metric. */ public static final String K8S_POD_MEMORY_RSS_NAME = "k8s.pod.memory.rss"; @@ -2006,6 +2171,16 @@ public final class K8sIncubatingMetrics { public static final String K8S_STATEFULSET_DESIRED_PODS_DESCRIPTION = "Deprecated, use `k8s.statefulset.pod.desired` instead."; + /** Name of the {@code k8s.statefulset.pod.available} metric. */ + public static final String K8S_STATEFULSET_POD_AVAILABLE_NAME = "k8s.statefulset.pod.available"; + + /** Unit of the {@code k8s.statefulset.pod.available} metric. */ + public static final String K8S_STATEFULSET_POD_AVAILABLE_UNIT = "{pod}"; + + /** Description of the {@code k8s.statefulset.pod.available} metric. */ + public static final String K8S_STATEFULSET_POD_AVAILABLE_DESCRIPTION = + "Total number of available replica pods (ready for at least minReadySeconds) targeted by this statefulset."; + /** Name of the {@code k8s.statefulset.pod.current} metric. */ public static final String K8S_STATEFULSET_POD_CURRENT_NAME = "k8s.statefulset.pod.current"; diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/KafkaIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/KafkaIncubatingAttributes.java new file mode 100644 index 00000000..7c50f82e --- /dev/null +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/KafkaIncubatingAttributes.java @@ -0,0 +1,52 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.semconv.incubating; + +import static io.opentelemetry.api.common.AttributeKey.booleanKey; +import static io.opentelemetry.api.common.AttributeKey.longKey; +import static io.opentelemetry.api.common.AttributeKey.stringKey; + +import io.opentelemetry.api.common.AttributeKey; + +// DO NOT EDIT, this is an Auto-generated file from +// buildscripts/templates/registry/incubating_java/IncubatingSemanticAttributes.java.j2 +@SuppressWarnings("unused") +public final class KafkaIncubatingAttributes { + /** + * The Kafka cluster ID, obtained from the broker metadata exposed through the Kafka client (or + * AdminClient) API. + * + *

Notes: + * + *

The cluster ID is a unique identifier reported by the Kafka broker. It identifies the + * cluster independently of the individual brokers the client is configured to connect to, and + * remains stable even if broker hostnames, IP addresses, or ports change. + */ + public static final AttributeKey KAFKA_CLUSTER_ID = stringKey("kafka.cluster.id"); + + /** + * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the + * same partition. They differ from {@code messaging.message.id} in that they're not unique. If + * the key is {@code null}, the attribute MUST NOT be set. + * + *

Notes: + * + *

If the key type is not string, its string representation has to be supplied for the + * attribute. If the key has no unambiguous, canonical string form, don't include its value. + */ + public static final AttributeKey KAFKA_MESSAGE_KEY = stringKey("kafka.message.key"); + + /** A boolean that is true if the message is a tombstone. */ + public static final AttributeKey KAFKA_MESSAGE_TOMBSTONE = + booleanKey("kafka.message.tombstone"); + + /** The offset of a record in the corresponding Kafka partition. */ + public static final AttributeKey KAFKA_OFFSET = longKey("kafka.offset"); + + // Enum definitions + + private KafkaIncubatingAttributes() {} +} diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/LogIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/LogIncubatingAttributes.java index 77eaeb79..feba88f3 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/LogIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/LogIncubatingAttributes.java @@ -13,21 +13,21 @@ // buildscripts/templates/registry/incubating_java/IncubatingSemanticAttributes.java.j2 @SuppressWarnings("unused") public final class LogIncubatingAttributes { - /** The basename of the file. */ + /** The basename of the file to which the log record was emitted. */ public static final AttributeKey LOG_FILE_NAME = stringKey("log.file.name"); - /** The basename of the file, with symlinks resolved. */ + /** The basename of the file to which the log record was emitted, with symlinks resolved. */ public static final AttributeKey LOG_FILE_NAME_RESOLVED = stringKey("log.file.name_resolved"); - /** The full path to the file. */ + /** The full path to the file to which the log record was emitted. */ public static final AttributeKey LOG_FILE_PATH = stringKey("log.file.path"); - /** The full path to the file, with symlinks resolved. */ + /** The full path to the file to which the log record was emitted, with symlinks resolved. */ public static final AttributeKey LOG_FILE_PATH_RESOLVED = stringKey("log.file.path_resolved"); - /** The stream associated with the log. See below for a list of well-known values. */ + /** The stream the log record was emitted to. */ public static final AttributeKey LOG_IOSTREAM = stringKey("log.iostream"); /** diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/MessagingIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/MessagingIncubatingAttributes.java index ace817bf..7bf3d7a6 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/MessagingIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/MessagingIncubatingAttributes.java @@ -128,39 +128,63 @@ public final class MessagingIncubatingAttributes { public static final AttributeKey MESSAGING_EVENTHUBS_CONSUMER_GROUP = stringKey("messaging.eventhubs.consumer.group"); - /** The UTC epoch seconds at which the message has been accepted and stored in the entity. */ + /** + * Deprecated, use {@code azure.eventhubs.message.enqueued_time} instead. + * + * @deprecated Replaced by {@code azure.eventhubs.message.enqueued_time}. + */ + @Deprecated public static final AttributeKey MESSAGING_EVENTHUBS_MESSAGE_ENQUEUED_TIME = longKey("messaging.eventhubs.message.enqueued_time"); - /** The ack deadline in seconds set for the modify ack deadline request. */ + /** + * Deprecated, use {@code gcp.pubsub.message.ack_deadline} instead. + * + * @deprecated Replaced by {@code gcp.pubsub.message.ack_deadline}. + */ + @Deprecated public static final AttributeKey MESSAGING_GCP_PUBSUB_MESSAGE_ACK_DEADLINE = longKey("messaging.gcp_pubsub.message.ack_deadline"); - /** The ack ID for a given message. */ + /** + * Deprecated, use {@code gcp.pubsub.message.ack_id} instead. + * + * @deprecated Replaced by {@code gcp.pubsub.message.ack_id}. + */ + @Deprecated public static final AttributeKey MESSAGING_GCP_PUBSUB_MESSAGE_ACK_ID = stringKey("messaging.gcp_pubsub.message.ack_id"); - /** The delivery attempt for a given message. */ + /** + * Deprecated, use {@code gcp.pubsub.message.delivery_attempt} instead. + * + * @deprecated Replaced by {@code gcp.pubsub.message.delivery_attempt}. + */ + @Deprecated public static final AttributeKey MESSAGING_GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT = longKey("messaging.gcp_pubsub.message.delivery_attempt"); /** - * The ordering key for a given message. If the attribute is not present, the message does not - * have an ordering key. + * Deprecated, use {@code gcp.pubsub.message.ordering_key} instead. + * + * @deprecated Replaced by {@code gcp.pubsub.message.ordering_key}. */ + @Deprecated public static final AttributeKey MESSAGING_GCP_PUBSUB_MESSAGE_ORDERING_KEY = stringKey("messaging.gcp_pubsub.message.ordering_key"); /** - * The Kafka cluster ID, obtained from the broker metadata exposed through the Kafka client (or - * AdminClient) API. + * Deprecated, use {@code kafka.cluster.id} instead. * *

Notes: * *

The cluster ID is a unique identifier reported by the Kafka broker. It identifies the * cluster independently of the individual brokers the client is configured to connect to, and * remains stable even if broker hostnames, IP addresses, or ports change. + * + * @deprecated Replaced by {@code kafka.cluster.id}. */ + @Deprecated public static final AttributeKey MESSAGING_KAFKA_CLUSTER_ID = stringKey("messaging.kafka.cluster.id"); @@ -184,32 +208,43 @@ public final class MessagingIncubatingAttributes { longKey("messaging.kafka.destination.partition"); /** - * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the - * same partition. They differ from {@code messaging.message.id} in that they're not unique. If - * the key is {@code null}, the attribute MUST NOT be set. + * Deprecated, use {@code kafka.message.key} instead. * *

Notes: * *

If the key type is not string, it's string representation has to be supplied for the * attribute. If the key has no unambiguous, canonical string form, don't include its value. + * + * @deprecated Replaced by {@code kafka.message.key}. */ + @Deprecated public static final AttributeKey MESSAGING_KAFKA_MESSAGE_KEY = stringKey("messaging.kafka.message.key"); /** - * Deprecated, use {@code messaging.kafka.offset} instead. + * Deprecated, use {@code kafka.offset} instead. * - * @deprecated Replaced by {@code messaging.kafka.offset}. + * @deprecated Replaced by {@code kafka.offset}. */ @Deprecated public static final AttributeKey MESSAGING_KAFKA_MESSAGE_OFFSET = longKey("messaging.kafka.message.offset"); - /** A boolean that is true if the message is a tombstone. */ + /** + * Deprecated, use {@code kafka.message.tombstone} instead. + * + * @deprecated Replaced by {@code kafka.message.tombstone}. + */ + @Deprecated public static final AttributeKey MESSAGING_KAFKA_MESSAGE_TOMBSTONE = booleanKey("messaging.kafka.message.tombstone"); - /** The offset of a record in the corresponding Kafka partition. */ + /** + * Deprecated, use {@code kafka.offset} instead. + * + * @deprecated Replaced by {@code kafka.offset}. + */ + @Deprecated public static final AttributeKey MESSAGING_KAFKA_OFFSET = longKey("messaging.kafka.offset"); /** @@ -268,11 +303,21 @@ public final class MessagingIncubatingAttributes { public static final AttributeKey MESSAGING_OPERATION_TYPE = stringKey("messaging.operation.type"); - /** RabbitMQ message routing key. */ + /** + * Deprecated, use {@code rabbitmq.destination.routing_key} instead. + * + * @deprecated Replaced by {@code rabbitmq.destination.routing_key}. + */ + @Deprecated public static final AttributeKey MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY = stringKey("messaging.rabbitmq.destination.routing_key"); - /** RabbitMQ message delivery tag */ + /** + * Deprecated, use {@code rabbitmq.message.delivery_tag} instead. + * + * @deprecated Replaced by {@code rabbitmq.message.delivery_tag}. + */ + @Deprecated public static final AttributeKey MESSAGING_RABBITMQ_MESSAGE_DELIVERY_TAG = longKey("messaging.rabbitmq.message.delivery_tag"); @@ -286,40 +331,75 @@ public final class MessagingIncubatingAttributes { public static final AttributeKey MESSAGING_ROCKETMQ_CLIENT_GROUP = stringKey("messaging.rocketmq.client_group"); - /** Model of message consumption. This only applies to consumer spans. */ + /** + * Deprecated, use {@code rocketmq.consumption_model} instead. + * + * @deprecated Replaced by {@code rocketmq.consumption_model}. + */ + @Deprecated public static final AttributeKey MESSAGING_ROCKETMQ_CONSUMPTION_MODEL = stringKey("messaging.rocketmq.consumption_model"); - /** The delay time level for delay message, which determines the message delay time. */ + /** + * Deprecated, use {@code rocketmq.message.delay_time_level} instead. + * + * @deprecated Replaced by {@code rocketmq.message.delay_time_level}. + */ + @Deprecated public static final AttributeKey MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL = longKey("messaging.rocketmq.message.delay_time_level"); /** - * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. + * Deprecated, use {@code rocketmq.message.delivery_timestamp} instead. + * + * @deprecated Replaced by {@code rocketmq.message.delivery_timestamp}. */ + @Deprecated public static final AttributeKey MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP = longKey("messaging.rocketmq.message.delivery_timestamp"); /** - * It is essential for FIFO message. Messages that belong to the same message group are always - * processed one by one within the same consumer group. + * Deprecated, use {@code rocketmq.message.group} instead. + * + * @deprecated Replaced by {@code rocketmq.message.group}. */ + @Deprecated public static final AttributeKey MESSAGING_ROCKETMQ_MESSAGE_GROUP = stringKey("messaging.rocketmq.message.group"); - /** Key(s) of message, another way to mark message besides message ID. */ + /** + * Deprecated, use {@code rocketmq.message.keys} instead. + * + * @deprecated Replaced by {@code rocketmq.message.keys}. + */ + @Deprecated public static final AttributeKey> MESSAGING_ROCKETMQ_MESSAGE_KEYS = stringArrayKey("messaging.rocketmq.message.keys"); - /** The secondary classifier of message besides topic. */ + /** + * Deprecated, use {@code rocketmq.message.tag} instead. + * + * @deprecated Replaced by {@code rocketmq.message.tag}. + */ + @Deprecated public static final AttributeKey MESSAGING_ROCKETMQ_MESSAGE_TAG = stringKey("messaging.rocketmq.message.tag"); - /** Type of message. */ + /** + * Deprecated, use {@code rocketmq.message.type} instead. + * + * @deprecated Replaced by {@code rocketmq.message.type}. + */ + @Deprecated public static final AttributeKey MESSAGING_ROCKETMQ_MESSAGE_TYPE = stringKey("messaging.rocketmq.message.type"); - /** Namespace of RocketMQ resources, resources in different namespaces are individual. */ + /** + * Deprecated, use {@code rocketmq.namespace} instead. + * + * @deprecated Replaced by {@code rocketmq.namespace}. + */ + @Deprecated public static final AttributeKey MESSAGING_ROCKETMQ_NAMESPACE = stringKey("messaging.rocketmq.namespace"); @@ -333,32 +413,70 @@ public final class MessagingIncubatingAttributes { stringKey("messaging.servicebus.destination.subscription_name"); /** - * Describes the settlement - * type. + * Deprecated, use {@code azure.servicebus.disposition_status} instead. + * + * @deprecated Replaced by {@code azure.servicebus.disposition_status}. */ + @Deprecated public static final AttributeKey MESSAGING_SERVICEBUS_DISPOSITION_STATUS = stringKey("messaging.servicebus.disposition_status"); - /** Number of deliveries that have been attempted for this message. */ + /** + * Deprecated, use {@code azure.servicebus.message.delivery_count} instead. + * + * @deprecated Replaced by {@code azure.servicebus.message.delivery_count}. + */ + @Deprecated public static final AttributeKey MESSAGING_SERVICEBUS_MESSAGE_DELIVERY_COUNT = longKey("messaging.servicebus.message.delivery_count"); - /** The UTC epoch seconds at which the message has been accepted and stored in the entity. */ + /** + * Deprecated, use {@code azure.servicebus.message.enqueued_time} instead. + * + * @deprecated Replaced by {@code azure.servicebus.message.enqueued_time}. + */ + @Deprecated public static final AttributeKey MESSAGING_SERVICEBUS_MESSAGE_ENQUEUED_TIME = longKey("messaging.servicebus.message.enqueued_time"); /** - * The messaging system as identified by the client instrumentation. + * Deprecated, use {@code messaging.system.name} instead. * *

Notes: * *

The actual messaging system may differ from the one known by the client. For example, when * using Kafka client libraries to communicate with Azure Event Hubs, the {@code messaging.system} * is set to {@code kafka} based on the instrumentation's best knowledge. + * + *

When migrating to {@code messaging.system.name}, update the following values: + * + *

    + *
  • {@code aws_sqs} to {@code aws.sqs} + *
  • {@code eventgrid} to {@code azure.eventgrid} + *
  • {@code eventhubs} to {@code azure.eventhubs} + *
  • {@code servicebus} to {@code azure.servicebus} + *
  • {@code gcp_pubsub} to {@code gcp.pubsub} + *
+ * + *

All other values are unchanged. + * + * @deprecated Replaced by {@code messaging.system.name}. */ + @Deprecated public static final AttributeKey MESSAGING_SYSTEM = stringKey("messaging.system"); + /** + * The messaging system as identified by the client instrumentation. + * + *

Notes: + * + *

The actual messaging system may differ from the one known by the client. For example, when + * using Kafka client libraries to communicate with Azure Event Hubs, the {@code + * messaging.system.name} is set to {@code kafka} based on the instrumentation's best knowledge. + */ + public static final AttributeKey MESSAGING_SYSTEM_NAME = + stringKey("messaging.system.name"); + // Enum definitions /** Values for {@link #MESSAGING_OPERATION_TYPE}. */ @@ -405,7 +523,12 @@ public static final class MessagingOperationTypeIncubatingValues { private MessagingOperationTypeIncubatingValues() {} } - /** Values for {@link #MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}. */ + /** + * Values for {@link #MESSAGING_ROCKETMQ_CONSUMPTION_MODEL} + * + * @deprecated Replaced by {@code rocketmq.consumption_model}. + */ + @Deprecated public static final class MessagingRocketmqConsumptionModelIncubatingValues { /** Clustering consumption model */ public static final String CLUSTERING = "clustering"; @@ -416,7 +539,12 @@ public static final class MessagingRocketmqConsumptionModelIncubatingValues { private MessagingRocketmqConsumptionModelIncubatingValues() {} } - /** Values for {@link #MESSAGING_ROCKETMQ_MESSAGE_TYPE}. */ + /** + * Values for {@link #MESSAGING_ROCKETMQ_MESSAGE_TYPE} + * + * @deprecated Replaced by {@code rocketmq.message.type}. + */ + @Deprecated public static final class MessagingRocketmqMessageTypeIncubatingValues { /** Normal message */ public static final String NORMAL = "normal"; @@ -433,7 +561,12 @@ public static final class MessagingRocketmqMessageTypeIncubatingValues { private MessagingRocketmqMessageTypeIncubatingValues() {} } - /** Values for {@link #MESSAGING_SERVICEBUS_DISPOSITION_STATUS}. */ + /** + * Values for {@link #MESSAGING_SERVICEBUS_DISPOSITION_STATUS} + * + * @deprecated Replaced by {@code azure.servicebus.disposition_status}. + */ + @Deprecated public static final class MessagingServicebusDispositionStatusIncubatingValues { /** Message is completed */ public static final String COMPLETE = "complete"; @@ -450,7 +583,12 @@ public static final class MessagingServicebusDispositionStatusIncubatingValues { private MessagingServicebusDispositionStatusIncubatingValues() {} } - /** Values for {@link #MESSAGING_SYSTEM}. */ + /** + * Values for {@link #MESSAGING_SYSTEM} + * + * @deprecated Replaced by {@code messaging.system.name}. + */ + @Deprecated public static final class MessagingSystemIncubatingValues { /** Apache ActiveMQ */ public static final String ACTIVEMQ = "activemq"; @@ -491,5 +629,46 @@ public static final class MessagingSystemIncubatingValues { private MessagingSystemIncubatingValues() {} } + /** Values for {@link #MESSAGING_SYSTEM_NAME}. */ + public static final class MessagingSystemNameIncubatingValues { + /** Apache ActiveMQ */ + public static final String ACTIVEMQ = "activemq"; + + /** Amazon Simple Notification Service (SNS) */ + public static final String AWS_SNS = "aws.sns"; + + /** Amazon Simple Queue Service (SQS) */ + public static final String AWS_SQS = "aws.sqs"; + + /** Azure Event Grid */ + public static final String AZURE_EVENTGRID = "azure.eventgrid"; + + /** Azure Event Hubs */ + public static final String AZURE_EVENTHUBS = "azure.eventhubs"; + + /** Azure Service Bus */ + public static final String AZURE_SERVICEBUS = "azure.servicebus"; + + /** Google Cloud Pub/Sub */ + public static final String GCP_PUBSUB = "gcp.pubsub"; + + /** Java Message Service */ + public static final String JMS = "jms"; + + /** Apache Kafka */ + public static final String KAFKA = "kafka"; + + /** RabbitMQ */ + public static final String RABBITMQ = "rabbitmq"; + + /** Apache RocketMQ */ + public static final String ROCKETMQ = "rocketmq"; + + /** Apache Pulsar */ + public static final String PULSAR = "pulsar"; + + private MessagingSystemNameIncubatingValues() {} + } + private MessagingIncubatingAttributes() {} } diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/NetworkIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/NetworkIncubatingAttributes.java index f403005d..a606ee2c 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/NetworkIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/NetworkIncubatingAttributes.java @@ -69,6 +69,50 @@ public final class NetworkIncubatingAttributes { public static final AttributeKey NETWORK_LOCAL_ADDRESS = stringKey("network.local.address"); + /** + * The Autonomous System + * Number (ASN) associated with the local IP address. + * + *

Notes: + * + *

This attribute SHOULD only be set when the local address is an IP address and the ASN is + * available from routing, enrichment, or lookup data. The value SHOULD be represented as an + * integer without the {@code AS} prefix. + */ + public static final AttributeKey NETWORK_LOCAL_AS_NUMBER = + longKey("network.local.as.number"); + + /** + * The name of the organization associated with the autonomous system of the local IP address. + * + *

Notes: + * + *

This attribute SHOULD only be set when {@code network.local.as.number} is set and the + * organization name is available. The value SHOULD be the organization name as provided by the + * lookup or enrichment source, not the AS name or short code. + */ + public static final AttributeKey NETWORK_LOCAL_AS_ORGANIZATION = + stringKey("network.local.as.organization"); + + /** + * Local Media Access Control (MAC) address of the network connection. + * + *

Notes: + * + *

MAC addresses MUST be represented in IEEE RA + * hexadecimal form: as hyphen-separated octets in uppercase hexadecimal form from most to + * least significant. + * + *

+ * [!WARNING] + * + *

This attribute may contain sensitive (PII) information. + *

+ */ + public static final AttributeKey NETWORK_LOCAL_MAC_ADDRESS = + stringKey("network.local.mac.address"); + /** * Local port number of the network connection. * @@ -78,6 +122,38 @@ public final class NetworkIncubatingAttributes { @Deprecated public static final AttributeKey NETWORK_LOCAL_PORT = longKey("network.local.port"); + /** + * The IP prefix associated with the local IP address, in CIDR notation. + * + *

Notes: + * + *

+ * [!WARNING] + * + *

This attribute may contain sensitive (PII) information. A {@code /32} IPv4 prefix or {@code + * /128} IPv6 prefix preserves the complete endpoint IP address. Using CIDR notation does not + * guarantee that the data is anonymous. + *

+ * + *

The value MUST be an IPv4 or IPv6 network prefix in CIDR notation, as defined in RFC 4632 for IPv4 and RFC 4291 for IPv6. IPv4 + * prefixes MUST use a dotted-decimal address followed by {@code /} and a decimal prefix length + * from 0 to 32. IPv6 prefixes MUST use the canonical address text representation defined in RFC 5952, followed by {@code /} and a + * decimal prefix length from 0 to 128. All host bits in the address MUST be set to zero. The + * value MUST NOT contain a domain name, UNIX domain socket name, or IPv6 zone identifier. + * + *

Instrumentation or Collector receivers that populate this attribute MUST convert native + * representations, such as an address and subnet mask or an address and prefix length, to + * equivalent CIDR notation before emitting it. + * + *

This attribute MAY be set whether or not {@code network.local.address} is set. If {@code + * network.local.address} is also set to an IP address, it MUST use the same IP version and be + * contained in this prefix. + */ + public static final AttributeKey NETWORK_LOCAL_PREFIX = stringKey("network.local.prefix"); + /** * Peer address of the network connection - IP address or UNIX domain socket name. * @@ -87,6 +163,49 @@ public final class NetworkIncubatingAttributes { @Deprecated public static final AttributeKey NETWORK_PEER_ADDRESS = stringKey("network.peer.address"); + /** + * The Autonomous System + * Number (ASN) associated with the peer IP address. + * + *

Notes: + * + *

This attribute SHOULD only be set when the peer address is an IP address and the ASN is + * available from routing, enrichment, or lookup data. The value SHOULD be represented as an + * integer without the {@code AS} prefix. + */ + public static final AttributeKey NETWORK_PEER_AS_NUMBER = longKey("network.peer.as.number"); + + /** + * The name of the organization associated with the autonomous system of the peer IP address. + * + *

Notes: + * + *

This attribute SHOULD only be set when {@code network.peer.as.number} is set and the + * organization name is available. The value SHOULD be the organization name as provided by the + * lookup or enrichment source, not the AS name or short code. + */ + public static final AttributeKey NETWORK_PEER_AS_ORGANIZATION = + stringKey("network.peer.as.organization"); + + /** + * Peer Media Access Control (MAC) address of the network connection. + * + *

Notes: + * + *

MAC addresses MUST be represented in IEEE RA + * hexadecimal form: as hyphen-separated octets in uppercase hexadecimal form from most to + * least significant. + * + *

+ * [!WARNING] + * + *

This attribute may contain sensitive (PII) information. + *

+ */ + public static final AttributeKey NETWORK_PEER_MAC_ADDRESS = + stringKey("network.peer.mac.address"); + /** * Peer port number of the network connection. * @@ -96,6 +215,38 @@ public final class NetworkIncubatingAttributes { @Deprecated public static final AttributeKey NETWORK_PEER_PORT = longKey("network.peer.port"); + /** + * The IP prefix associated with the peer IP address, in CIDR notation. + * + *

Notes: + * + *

+ * [!WARNING] + * + *

This attribute may contain sensitive (PII) information. A {@code /32} IPv4 prefix or {@code + * /128} IPv6 prefix preserves the complete endpoint IP address. Using CIDR notation does not + * guarantee that the data is anonymous. + *

+ * + *

The value MUST be an IPv4 or IPv6 network prefix in CIDR notation, as defined in RFC 4632 for IPv4 and RFC 4291 for IPv6. IPv4 + * prefixes MUST use a dotted-decimal address followed by {@code /} and a decimal prefix length + * from 0 to 32. IPv6 prefixes MUST use the canonical address text representation defined in RFC 5952, followed by {@code /} and a + * decimal prefix length from 0 to 128. All host bits in the address MUST be set to zero. The + * value MUST NOT contain a domain name, UNIX domain socket name, or IPv6 zone identifier. + * + *

Instrumentation or Collector receivers that populate this attribute MUST convert native + * representations, such as an address and subnet mask or an address and prefix length, to + * equivalent CIDR notation before emitting it. + * + *

This attribute MAY be set whether or not {@code network.peer.address} is set. If {@code + * network.peer.address} is also set to an IP address, it MUST use the same IP version and be + * contained in this prefix. + */ + public static final AttributeKey NETWORK_PEER_PREFIX = stringKey("network.peer.prefix"); + /** * OSI application layer or non-OSI * equivalent. diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/OpentracingIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/OpentracingIncubatingAttributes.java index c5df4db1..84f5f12c 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/OpentracingIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/OpentracingIncubatingAttributes.java @@ -19,12 +19,24 @@ public final class OpentracingIncubatingAttributes { *

Notes: * *

The causal relationship between a child Span and a parent Span. + * + * @deprecated OpenTracing compatibility requirements are deprecated in + * OpenTelemetry Specification */ + @Deprecated public static final AttributeKey OPENTRACING_REF_TYPE = stringKey("opentracing.ref_type"); // Enum definitions - /** Values for {@link #OPENTRACING_REF_TYPE}. */ + /** + * Values for {@link #OPENTRACING_REF_TYPE} + * + * @deprecated OpenTracing compatibility requirements are deprecated in + * OpenTelemetry Specification + */ + @Deprecated public static final class OpentracingRefTypeIncubatingValues { /** The parent Span depends on the child Span in some capacity */ public static final String CHILD_OF = "child_of"; diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/OtelIncubatingMetrics.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/OtelIncubatingMetrics.java index 4ae3cca0..fd8803aa 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/OtelIncubatingMetrics.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/OtelIncubatingMetrics.java @@ -142,7 +142,7 @@ public final class OtelIncubatingMetrics { /** Description of the {@code otel.sdk.log.created} metric. */ public static final String OTEL_SDK_LOG_CREATED_DESCRIPTION = - "The number of logs submitted to enabled SDK Loggers."; + "The number of log records submitted to an enabled `Logger`."; /** Name of the {@code otel.sdk.metric_reader.collection.duration} metric. */ public static final String OTEL_SDK_METRIC_READER_COLLECTION_DURATION_NAME = diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java index f80b12a5..8089816a 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java @@ -29,7 +29,8 @@ public final class PeerIncubatingAttributes { * peer.service="AuthService"}. * * - * @deprecated Replaced by {@code service.peer.name}. + * @deprecated Use {@code server.service.name} on the client side or {@code client.service.name} + * on the server side. */ @Deprecated public static final AttributeKey PEER_SERVICE = stringKey("peer.service"); diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ProfileIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ProfileIncubatingAttributes.java index d40b435b..4339e0d5 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ProfileIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ProfileIncubatingAttributes.java @@ -66,6 +66,9 @@ public static final class ProfileFrameTypeIncubatingValues { /** LuaJIT */ public static final String LUAJIT = "luajit"; + /** CUDA */ + public static final String CUDA = "cuda"; + private ProfileFrameTypeIncubatingValues() {} } diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RabbitmqIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RabbitmqIncubatingAttributes.java new file mode 100644 index 00000000..1b232296 --- /dev/null +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RabbitmqIncubatingAttributes.java @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.semconv.incubating; + +import static io.opentelemetry.api.common.AttributeKey.longKey; +import static io.opentelemetry.api.common.AttributeKey.stringKey; + +import io.opentelemetry.api.common.AttributeKey; + +// DO NOT EDIT, this is an Auto-generated file from +// buildscripts/templates/registry/incubating_java/IncubatingSemanticAttributes.java.j2 +@SuppressWarnings("unused") +public final class RabbitmqIncubatingAttributes { + /** RabbitMQ message routing key. */ + public static final AttributeKey RABBITMQ_DESTINATION_ROUTING_KEY = + stringKey("rabbitmq.destination.routing_key"); + + /** RabbitMQ message delivery tag */ + public static final AttributeKey RABBITMQ_MESSAGE_DELIVERY_TAG = + longKey("rabbitmq.message.delivery_tag"); + + // Enum definitions + + private RabbitmqIncubatingAttributes() {} +} diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RocketmqIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RocketmqIncubatingAttributes.java new file mode 100644 index 00000000..ab812e72 --- /dev/null +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RocketmqIncubatingAttributes.java @@ -0,0 +1,85 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.semconv.incubating; + +import static io.opentelemetry.api.common.AttributeKey.longKey; +import static io.opentelemetry.api.common.AttributeKey.stringArrayKey; +import static io.opentelemetry.api.common.AttributeKey.stringKey; + +import io.opentelemetry.api.common.AttributeKey; +import java.util.List; + +// DO NOT EDIT, this is an Auto-generated file from +// buildscripts/templates/registry/incubating_java/IncubatingSemanticAttributes.java.j2 +@SuppressWarnings("unused") +public final class RocketmqIncubatingAttributes { + /** Model of message consumption. This only applies to consumer spans. */ + public static final AttributeKey ROCKETMQ_CONSUMPTION_MODEL = + stringKey("rocketmq.consumption_model"); + + /** The delay time level for delay message, which determines the message delay time. */ + public static final AttributeKey ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL = + longKey("rocketmq.message.delay_time_level"); + + /** + * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. + */ + public static final AttributeKey ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP = + longKey("rocketmq.message.delivery_timestamp"); + + /** + * It is essential for FIFO message. Messages that belong to the same message group are always + * processed one by one within the same consumer group. + */ + public static final AttributeKey ROCKETMQ_MESSAGE_GROUP = + stringKey("rocketmq.message.group"); + + /** Key(s) of message, another way to mark message besides message ID. */ + public static final AttributeKey> ROCKETMQ_MESSAGE_KEYS = + stringArrayKey("rocketmq.message.keys"); + + /** The secondary classifier of message besides topic. */ + public static final AttributeKey ROCKETMQ_MESSAGE_TAG = stringKey("rocketmq.message.tag"); + + /** Type of message. */ + public static final AttributeKey ROCKETMQ_MESSAGE_TYPE = + stringKey("rocketmq.message.type"); + + /** Namespace of RocketMQ resources, resources in different namespaces are individual. */ + public static final AttributeKey ROCKETMQ_NAMESPACE = stringKey("rocketmq.namespace"); + + // Enum definitions + + /** Values for {@link #ROCKETMQ_CONSUMPTION_MODEL}. */ + public static final class RocketmqConsumptionModelIncubatingValues { + /** Clustering consumption model */ + public static final String CLUSTERING = "clustering"; + + /** Broadcasting consumption model */ + public static final String BROADCASTING = "broadcasting"; + + private RocketmqConsumptionModelIncubatingValues() {} + } + + /** Values for {@link #ROCKETMQ_MESSAGE_TYPE}. */ + public static final class RocketmqMessageTypeIncubatingValues { + /** Normal message */ + public static final String NORMAL = "normal"; + + /** FIFO message */ + public static final String FIFO = "fifo"; + + /** Delay message */ + public static final String DELAY = "delay"; + + /** Transaction message */ + public static final String TRANSACTION = "transaction"; + + private RocketmqMessageTypeIncubatingValues() {} + } + + private RocketmqIncubatingAttributes() {} +} diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java index d6d3d2e8..ed621baa 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java @@ -18,65 +18,65 @@ @SuppressWarnings("unused") public final class RpcIncubatingAttributes { /** - * Deprecated, use {@code rpc.response.status_code} attribute instead. + * Deprecated, use {@code rpc.status_code} attribute instead. * - * @deprecated Replaced by {@code rpc.response.status_code}. + * @deprecated Replaced by {@code rpc.status_code}. */ @Deprecated public static final AttributeKey RPC_CONNECT_RPC_ERROR_CODE = stringKey("rpc.connect_rpc.error_code"); /** - * Deprecated, use {@code rpc.request.metadata} instead. + * Deprecated, use {@code rpc.request.header} instead. * - * @deprecated Replaced by {@code rpc.request.metadata}. + * @deprecated Replaced by {@code rpc.request.header}. */ @Deprecated public static final AttributeKeyTemplate> RPC_CONNECT_RPC_REQUEST_METADATA = stringArrayKeyTemplate("rpc.connect_rpc.request.metadata"); /** - * Deprecated, use {@code rpc.response.metadata} instead. + * Deprecated, use {@code rpc.response.header} and {@code rpc.response.trailer}. * - * @deprecated Replaced by {@code rpc.response.metadata}. + * @deprecated Split to {@code rpc.response.header} for metadata sent before the response payload + * and {@code rpc.response.trailer} for metadata sent after it. */ @Deprecated public static final AttributeKeyTemplate> RPC_CONNECT_RPC_RESPONSE_METADATA = stringArrayKeyTemplate("rpc.connect_rpc.response.metadata"); /** - * Deprecated, use {@code rpc.request.metadata} instead. + * Deprecated, use {@code rpc.request.header} instead. * - * @deprecated Replaced by {@code rpc.request.metadata}. + * @deprecated Replaced by {@code rpc.request.header}. */ @Deprecated public static final AttributeKeyTemplate> RPC_GRPC_REQUEST_METADATA = stringArrayKeyTemplate("rpc.grpc.request.metadata"); /** - * Deprecated, use {@code rpc.response.metadata} instead. + * Deprecated, use {@code rpc.response.header} and {@code rpc.response.trailer}. * - * @deprecated Replaced by {@code rpc.response.metadata}. + * @deprecated Split to {@code rpc.response.header} for metadata sent before the response payload + * and {@code rpc.response.trailer} for metadata sent after it. */ @Deprecated public static final AttributeKeyTemplate> RPC_GRPC_RESPONSE_METADATA = stringArrayKeyTemplate("rpc.grpc.response.metadata"); /** - * Deprecated, use string representation on the {@code rpc.response.status_code} attribute - * instead. + * Deprecated, use string representation on the {@code rpc.status_code} attribute instead. * - * @deprecated Use string representation of the gRPC status code on the {@code - * rpc.response.status_code} attribute. + * @deprecated Use string representation of the gRPC status code on the {@code rpc.status_code} + * attribute. */ @Deprecated public static final AttributeKey RPC_GRPC_STATUS_CODE = longKey("rpc.grpc.status_code"); /** - * Deprecated, use string representation on the {@code rpc.response.status_code} attribute - * instead. + * Deprecated, use string representation on the {@code rpc.status_code} attribute instead. * - * @deprecated Use string representation of the error code on the {@code rpc.response.status_code} + * @deprecated Use string representation of the error code on the {@code rpc.status_code} * attribute. */ @Deprecated @@ -168,59 +168,121 @@ public final class RpcIncubatingAttributes { * The {@code code.function.name} attribute may be used to record the fully-qualified method * actually executing the call on the server side, or the RPC client stub method on the client * side. + * + * @deprecated deprecated in favor of stable {@link + * io.opentelemetry.semconv.RpcAttributes#RPC_METHOD} attribute. */ - public static final AttributeKey RPC_METHOD = stringKey("rpc.method"); + @Deprecated public static final AttributeKey RPC_METHOD = stringKey("rpc.method"); - /** The original name of the method used by the client. */ + /** + * The original name of the method used by the client. + * + * @deprecated deprecated in favor of stable {@link + * io.opentelemetry.semconv.RpcAttributes#RPC_METHOD_ORIGINAL} attribute. + */ + @Deprecated public static final AttributeKey RPC_METHOD_ORIGINAL = stringKey("rpc.method_original"); /** - * RPC request metadata, {@code } being the normalized RPC metadata key (lowercase), the - * value being the metadata values. + * RPC request headers or metadata, {@code } being the normalized header name (lowercase), + * the value being the header values. * *

Notes: * - *

Instrumentations SHOULD require an explicit configuration of which metadata values are to be - * captured. Including all request metadata values can be a security risk - explicit configuration - * helps avoid leaking sensitive information. + *

Instrumentations SHOULD require an explicit configuration of which headers are to be + * captured. Including all request headers can be a security risk - explicit configuration helps + * avoid leaking sensitive information. * - *

For example, a property {@code my-custom-key} with value {@code ["1.2.3.4", "1.2.3.5"]} - * SHOULD be recorded as {@code rpc.request.metadata.my-custom-key} attribute with value {@code + *

For example, a header {@code my-custom-key} with value {@code ["1.2.3.4", "1.2.3.5"]} SHOULD + * be recorded as the {@code rpc.request.header.my-custom-key} attribute with value {@code * ["1.2.3.4", "1.2.3.5"]} + * + *

The attribute value MUST consist of either multiple header values as an array of strings or + * a single-item array containing a possibly comma-concatenated string, depending on the way the + * RPC library provides access to headers. + * + *

Values that the RPC system exposes as binary data, or that are otherwise not valid UTF-8 + * strings, SHOULD be base64-encoded when recorded. + */ + public static final AttributeKeyTemplate> RPC_REQUEST_HEADER = + stringArrayKeyTemplate("rpc.request.header"); + + /** + * Deprecated, use {@code rpc.request.header} instead. + * + * @deprecated Replaced by {@code rpc.request.header}. */ + @Deprecated public static final AttributeKeyTemplate> RPC_REQUEST_METADATA = stringArrayKeyTemplate("rpc.request.metadata"); /** - * RPC response metadata, {@code } being the normalized RPC metadata key (lowercase), the - * value being the metadata values. + * RPC response headers or metadata sent before the response payload, {@code } being the + * normalized header name (lowercase), the value being the header values. * *

Notes: * - *

Instrumentations SHOULD require an explicit configuration of which metadata values are to be - * captured. Including all response metadata values can be a security risk - explicit - * configuration helps avoid leaking sensitive information. + *

Instrumentations SHOULD require an explicit configuration of which headers are to be + * captured. Including all response headers can be a security risk - explicit configuration helps + * avoid leaking sensitive information. * - *

For example, a property {@code my-custom-key} with value {@code ["attribute_value"]} SHOULD - * be recorded as the {@code rpc.response.metadata.my-custom-key} attribute with value {@code + *

For example, a header {@code my-custom-key} with value {@code ["attribute_value"]} SHOULD be + * recorded as the {@code rpc.response.header.my-custom-key} attribute with value {@code * ["attribute_value"]} + * + *

The attribute value MUST consist of either multiple header values as an array of strings or + * a single-item array containing a possibly comma-concatenated string, depending on the way the + * RPC library provides access to headers. + * + *

Values that the RPC system exposes as binary data, or that are otherwise not valid UTF-8 + * strings, SHOULD be base64-encoded when recorded. + */ + public static final AttributeKeyTemplate> RPC_RESPONSE_HEADER = + stringArrayKeyTemplate("rpc.response.header"); + + /** + * Deprecated, use {@code rpc.response.header} and {@code rpc.response.trailer}. + * + * @deprecated Split to {@code rpc.response.header} for metadata sent before the response payload + * and {@code rpc.response.trailer} for metadata sent after it. */ + @Deprecated public static final AttributeKeyTemplate> RPC_RESPONSE_METADATA = stringArrayKeyTemplate("rpc.response.metadata"); /** - * Status code of the RPC returned by the RPC server or generated by the client - * - *

Notes: + * Deprecated, use {@code rpc.status_code} instead. * - *

Usually it represents an error code, but may also represent partial success, warning, or - * differentiate between various types of successful outcomes. Semantic conventions for individual - * RPC frameworks SHOULD document what {@code rpc.response.status_code} means in the context of - * that system and which values are considered to represent errors. + * @deprecated Replaced by {@code rpc.status_code}. */ + @Deprecated public static final AttributeKey RPC_RESPONSE_STATUS_CODE = stringKey("rpc.response.status_code"); + /** + * RPC response trailers or metadata sent after the response payload, {@code } being the + * normalized trailer name (lowercase), the value being the trailer values. + * + *

Notes: + * + *

Instrumentations SHOULD require an explicit configuration of which trailers are to be + * captured. Including all response trailers can be a security risk - explicit configuration helps + * avoid leaking sensitive information. + * + *

For example, a trailer {@code my-custom-key} with value {@code ["attribute_value"]} SHOULD + * be recorded as the {@code rpc.response.trailer.my-custom-key} attribute with value {@code + * ["attribute_value"]} + * + *

The attribute value MUST consist of either multiple trailer values as an array of strings or + * a single-item array containing a possibly comma-concatenated string, depending on the way the + * RPC library provides access to trailers. + * + *

Values that the RPC system exposes as binary data, or that are otherwise not valid UTF-8 + * strings, SHOULD be base64-encoded when recorded. + */ + public static final AttributeKeyTemplate> RPC_RESPONSE_TRAILER = + stringArrayKeyTemplate("rpc.response.trailer"); + /** * Deprecated, use fully-qualified {@code rpc.method} instead. * @@ -229,6 +291,25 @@ public final class RpcIncubatingAttributes { */ @Deprecated public static final AttributeKey RPC_SERVICE = stringKey("rpc.service"); + /** + * Status code of the RPC returned by the RPC server or generated by the client + * + *

Notes: + * + *

Usually it represents an error code, but may also represent partial success, warning, or + * differentiate between various types of successful outcomes. The value MAY use a standardized + * string representation of a numeric status code, if one exists, instead of the numeric code. The + * value MAY be a synthetic status provided by the client library rather than returned by the + * remote service. Semantic conventions for individual RPC frameworks SHOULD document what {@code + * rpc.status_code} means in the context of that system and which values are considered to + * represent errors. + * + * @deprecated deprecated in favor of stable {@link + * io.opentelemetry.semconv.RpcAttributes#RPC_STATUS_CODE} attribute. + */ + @Deprecated + public static final AttributeKey RPC_STATUS_CODE = stringKey("rpc.status_code"); + /** * Deprecated, use {@code rpc.system.name} attribute instead. * @@ -244,7 +325,11 @@ public final class RpcIncubatingAttributes { *

The client and server RPC systems may differ for the same RPC interaction. For example, a * client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since * both protocols provide compatibility with gRPC. + * + * @deprecated deprecated in favor of stable {@link + * io.opentelemetry.semconv.RpcAttributes#RPC_SYSTEM_NAME} attribute. */ + @Deprecated public static final AttributeKey RPC_SYSTEM_NAME = stringKey("rpc.system.name"); // Enum definitions @@ -252,7 +337,7 @@ public final class RpcIncubatingAttributes { /** * Values for {@link #RPC_CONNECT_RPC_ERROR_CODE} * - * @deprecated Replaced by {@code rpc.response.status_code}. + * @deprecated Replaced by {@code rpc.status_code}. */ @Deprecated public static final class RpcConnectRpcErrorCodeIncubatingValues { @@ -310,8 +395,8 @@ private RpcConnectRpcErrorCodeIncubatingValues() {} /** * Values for {@link #RPC_GRPC_STATUS_CODE} * - * @deprecated Use string representation of the gRPC status code on the {@code - * rpc.response.status_code} attribute. + * @deprecated Use string representation of the gRPC status code on the {@code rpc.status_code} + * attribute. */ @Deprecated public static final class RpcGrpcStatusCodeIncubatingValues { @@ -418,11 +503,21 @@ private RpcSystemIncubatingValues() {} /** Values for {@link #RPC_SYSTEM_NAME}. */ public static final class RpcSystemNameIncubatingValues { - /** gRPC */ - public static final String GRPC = "grpc"; - - /** Apache Dubbo */ - public static final String DUBBO = "dubbo"; + /** + * gRPC + * + * @deprecated deprecated in favor of stable {@link + * io.opentelemetry.semconv.RpcAttributes.RpcSystemNameValues#GRPC} value. + */ + @Deprecated public static final String GRPC = "grpc"; + + /** + * Apache Dubbo + * + * @deprecated deprecated in favor of stable {@link + * io.opentelemetry.semconv.RpcAttributes.RpcSystemNameValues#DUBBO} value. + */ + @Deprecated public static final String DUBBO = "dubbo"; /** Connect RPC */ public static final String CONNECTRPC = "connectrpc"; diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServerIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServerIncubatingAttributes.java index 17fb6e4a..e8c22cdd 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServerIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServerIncubatingAttributes.java @@ -29,6 +29,53 @@ public final class ServerIncubatingAttributes { */ @Deprecated public static final AttributeKey SERVER_ADDRESS = stringKey("server.address"); + /** + * The Autonomous System + * Number (ASN) associated with the server IP address. + * + *

Notes: + * + *

This attribute SHOULD only be set when the server address is an IP address and the ASN is + * available from routing, enrichment, or lookup data. The value SHOULD be represented as an + * integer without the {@code AS} prefix. + */ + public static final AttributeKey SERVER_AS_NUMBER = longKey("server.as.number"); + + /** + * The name of the organization associated with the autonomous system of the server IP address. + * + *

Notes: + * + *

This attribute SHOULD only be set when {@code server.as.number} is set and the organization + * name is available. The value SHOULD be the organization name as provided by the lookup or + * enrichment source, not the AS name or short code. + */ + public static final AttributeKey SERVER_AS_ORGANIZATION = + stringKey("server.as.organization"); + + /** + * Server Media Access Control (MAC) address. + * + *

Notes: + * + *

This attribute MUST identify a MAC address associated with the logical server endpoint, + * including when that endpoint is behind intermediaries. If the server's MAC address is unknown, + * this attribute MUST NOT be set. The MAC address of a proxy, gateway, or next-hop router MUST + * NOT be used as a substitute. + * + *

MAC addresses MUST be represented in IEEE RA + * hexadecimal form: as hyphen-separated octets in uppercase hexadecimal form from most to + * least significant. + * + *

+ * [!WARNING] + * + *

This attribute may contain sensitive (PII) information. + *

+ */ + public static final AttributeKey SERVER_MAC_ADDRESS = stringKey("server.mac.address"); + /** * Server port number. * @@ -43,6 +90,63 @@ public final class ServerIncubatingAttributes { */ @Deprecated public static final AttributeKey SERVER_PORT = longKey("server.port"); + /** + * The IP prefix associated with the server IP address, in CIDR notation. + * + *

Notes: + * + *

+ * [!WARNING] + * + *

This attribute may contain sensitive (PII) information. A {@code /32} IPv4 prefix or {@code + * /128} IPv6 prefix preserves the complete endpoint IP address. Using CIDR notation does not + * guarantee that the data is anonymous. + *

+ * + *

The value MUST be an IPv4 or IPv6 network prefix in CIDR notation, as defined in RFC 4632 for IPv4 and RFC 4291 for IPv6. IPv4 + * prefixes MUST use a dotted-decimal address followed by {@code /} and a decimal prefix length + * from 0 to 32. IPv6 prefixes MUST use the canonical address text representation defined in RFC 5952, followed by {@code /} and a + * decimal prefix length from 0 to 128. All host bits in the address MUST be set to zero. The + * value MUST NOT contain a domain name, UNIX domain socket name, or IPv6 zone identifier. + * + *

Instrumentation or Collector receivers that populate this attribute MUST convert native + * representations, such as an address and subnet mask or an address and prefix length, to + * equivalent CIDR notation before emitting it. + * + *

This attribute MUST NOT be set unless {@code server.address} is set to an IPv4 or IPv6 + * address. The address MUST use the same IP version as this prefix and be contained in it. + */ + public static final AttributeKey SERVER_PREFIX = stringKey("server.prefix"); + + /** + * Logical name of the service acting as the server in a connection-based network interaction. + * + *

Notes: + * + *

SHOULD be equal to the actual {@code + * service.name} resource attribute of the logical server, if any. This identifies the server + * service whether the telemetry is recorded by the client, the server, or another observer. + */ + public static final AttributeKey SERVER_SERVICE_NAME = stringKey("server.service.name"); + + /** + * Logical namespace of the service acting as the server in a connection-based network + * interaction. + * + *

Notes: + * + *

SHOULD be equal to the actual {@code + * service.namespace} resource attribute of the logical server, if any. This identifies the + * server service's namespace whether the telemetry is recorded by the client, the server, or + * another observer. Together with {@code server.service.name}, this identifies the server + * service. An empty namespace is equivalent to an unspecified namespace. + */ + public static final AttributeKey SERVER_SERVICE_NAMESPACE = + stringKey("server.service.namespace"); + // Enum definitions private ServerIncubatingAttributes() {} diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java index bf1f1319..54687e4a 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java @@ -24,6 +24,29 @@ public final class ServiceIncubatingAttributes { */ public static final AttributeKey SERVICE_CRITICALITY = stringKey("service.criticality"); + /** + * Identifier of the cost center associated with the service instance. + * + *

Notes: + * + *

The cost center identifier enables tracking and attribution of service resource costs to + * organizational units, billing accounts, or teams. It is typically a string identifier such as a + * billing account ID, cost allocation code, or internal accounting ID. + */ + public static final AttributeKey SERVICE_INSTANCE_COST_CENTER_ID = + stringKey("service.instance.cost_center.id"); + + /** + * Name of the cost center associated with the service instance. + * + *

Notes: + * + *

A human-readable name of the cost center, department, or organizational unit responsible for + * the service instance costs. + */ + public static final AttributeKey SERVICE_INSTANCE_COST_CENTER_NAME = + stringKey("service.instance.cost_center.name"); + /** * The string ID of the service instance. * @@ -104,14 +127,22 @@ public final class ServiceIncubatingAttributes { * Logical name of the service on the other side of the connection. SHOULD be equal to the actual * {@code service.name} resource attribute of the * remote service if any. + * + * @deprecated Use {@code server.service.name} on the client side or {@code client.service.name} + * on the server side. */ + @Deprecated public static final AttributeKey SERVICE_PEER_NAME = stringKey("service.peer.name"); /** * Logical namespace of the service on the other side of the connection. SHOULD be equal to the * actual {@code service.namespace} resource * attribute of the remote service if any. + * + * @deprecated Use {@code server.service.namespace} on the client side or {@code + * client.service.namespace} on the server side. */ + @Deprecated public static final AttributeKey SERVICE_PEER_NAMESPACE = stringKey("service.peer.namespace"); diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SessionIncubatingEvents.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SessionIncubatingEvents.java index 6dd4c294..3a653377 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SessionIncubatingEvents.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SessionIncubatingEvents.java @@ -27,13 +27,13 @@ public final class SessionIncubatingEvents { * *

For instrumentation that tracks user behavior during user sessions, a {@code session.start} * event MUST be emitted every time a session is created. When a new session is created as a - * continuation of a prior session, the {@code session.previous_id} SHOULD be included in the - * event. The values of {@code session.id} and {@code session.previous_id} MUST be different. When - * the {@code session.start} event contains both {@code session.id} and {@code - * session.previous_id} fields, the event indicates that the previous session has ended. If the - * session ID in {@code session.previous_id} has not yet ended via explicit {@code session.end} - * event, then the consumer SHOULD treat this continuation event as semantically equivalent to - * {@code session.end(session.previous_id)} and {@code session.start(session.id)}. + * continuation of a prior session, the {@code session.previous_id} MUST be included in the event. + * The values of {@code session.id} and {@code session.previous_id} MUST be different. When the + * {@code session.start} event contains both {@code session.id} and {@code session.previous_id} + * fields, the event indicates that the previous session has ended. If the session ID in {@code + * session.previous_id} has not yet ended via explicit {@code session.end} event, then the + * consumer SHOULD treat this continuation event as semantically equivalent to {@code + * session.end(session.previous_id)} and {@code session.start(session.id)}. */ public static final String SESSION_START = "session.start"; diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SourceIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SourceIncubatingAttributes.java index 2001586a..a1b47b6c 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SourceIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SourceIncubatingAttributes.java @@ -15,20 +15,97 @@ @SuppressWarnings("unused") public final class SourceIncubatingAttributes { /** - * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or - * UNIX domain socket name. + * Source address as observed at the point of instrumentation - typically an IP address, or a UNIX + * domain socket name; a domain name only when the sender was addressed by name (for example a + * peer-to-peer node dialed by hostname), never obtained via reverse DNS lookup. * *

Notes: * - *

When observed from the destination side, and when communicating through an intermediary, - * {@code source.address} SHOULD represent the source address behind any intermediaries, for - * example proxies, if it's available. + *

{@code source.address} SHOULD be the sender address as observed at the point of + * instrumentation, for example the source of the packet, flow, or exchange seen on the wire or + * socket. Instrumentation SHOULD capture the available address and SHOULD NOT try to resolve the + * address behind intermediaries such as proxies or load balancers, or perform a reverse DNS + * lookup to obtain a domain name. */ public static final AttributeKey SOURCE_ADDRESS = stringKey("source.address"); + /** + * The Autonomous System + * Number (ASN) associated with the source IP address. + * + *

Notes: + * + *

This attribute SHOULD only be set when the source address is an IP address and the ASN is + * available from routing, enrichment, or lookup data. The value SHOULD be represented as an + * integer without the {@code AS} prefix. + */ + public static final AttributeKey SOURCE_AS_NUMBER = longKey("source.as.number"); + + /** + * The name of the organization associated with the autonomous system of the source IP address. + * + *

Notes: + * + *

This attribute SHOULD only be set when {@code source.as.number} is set and the organization + * name is available. The value SHOULD be the organization name as provided by the lookup or + * enrichment source, not the AS name or short code. + */ + public static final AttributeKey SOURCE_AS_ORGANIZATION = + stringKey("source.as.organization"); + + /** + * Source Media Access Control (MAC) address. + * + *

Notes: + * + *

MAC addresses MUST be represented in IEEE RA + * hexadecimal form: as hyphen-separated octets in uppercase hexadecimal form from most to + * least significant. + * + *

+ * [!WARNING] + * + *

This attribute may contain sensitive (PII) information. + *

+ */ + public static final AttributeKey SOURCE_MAC_ADDRESS = stringKey("source.mac.address"); + /** Source port number */ public static final AttributeKey SOURCE_PORT = longKey("source.port"); + /** + * The IP prefix associated with the source IP address, in CIDR notation. + * + *

Notes: + * + *

+ * [!WARNING] + * + *

This attribute may contain sensitive (PII) information. A {@code /32} IPv4 prefix or {@code + * /128} IPv6 prefix preserves the complete endpoint IP address. Using CIDR notation does not + * guarantee that the data is anonymous. + *

+ * + *

The value MUST be an IPv4 or IPv6 network prefix in CIDR notation, as defined in RFC 4632 for IPv4 and RFC 4291 for IPv6. IPv4 + * prefixes MUST use a dotted-decimal address followed by {@code /} and a decimal prefix length + * from 0 to 32. IPv6 prefixes MUST use the canonical address text representation defined in RFC 5952, followed by {@code /} and a + * decimal prefix length from 0 to 128. All host bits in the address MUST be set to zero. The + * value MUST NOT contain a domain name, UNIX domain socket name, or IPv6 zone identifier. + * + *

Instrumentation or Collector receivers that populate this attribute MUST convert native + * representations, such as an address and subnet mask or an address and prefix length, to + * equivalent CIDR notation before emitting it. + * + *

This attribute MAY be set whether or not {@code source.address} is set. If {@code + * source.address} is also set to an IP address, it MUST use the same IP version and be contained + * in this prefix. + */ + public static final AttributeKey SOURCE_PREFIX = stringKey("source.prefix"); + // Enum definitions private SourceIncubatingAttributes() {} diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SystemIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SystemIncubatingAttributes.java index 6c324b6b..7c3ae422 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SystemIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SystemIncubatingAttributes.java @@ -31,8 +31,15 @@ public final class SystemIncubatingAttributes { @Deprecated public static final AttributeKey SYSTEM_CPU_STATE = stringKey("system.cpu.state"); - /** The device identifier */ - public static final AttributeKey SYSTEM_DEVICE = stringKey("system.device"); + /** + * Deprecated, use {@code system.device.name} instead. + * + * @deprecated Replaced by {@code system.device.name}. + */ + @Deprecated public static final AttributeKey SYSTEM_DEVICE = stringKey("system.device"); + + /** The OS level identifier for a device, such as disk, partition or network interface. */ + public static final AttributeKey SYSTEM_DEVICE_NAME = stringKey("system.device.name"); /** The filesystem mode */ public static final AttributeKey SYSTEM_FILESYSTEM_MODE = @@ -203,8 +210,19 @@ public static final class SystemMemoryStateIncubatingValues { /** Actual used virtual memory in bytes. */ public static final String USED = "used"; - /** free. */ - public static final String FREE = "free"; + /** + * An estimate of how much memory is available for starting new applications, without causing + * swapping. + */ + public static final String AVAILABLE = "available"; + + /** + * free. + * + * @deprecated Removed, report memory usage with the {@code used} and {@code available} states + * instead. + */ + @Deprecated public static final String FREE = "free"; /** * shared. @@ -214,11 +232,21 @@ public static final class SystemMemoryStateIncubatingValues { */ @Deprecated public static final String SHARED = "shared"; - /** buffers. */ - public static final String BUFFERS = "buffers"; + /** + * buffers. + * + * @deprecated Removed, report memory usage with the {@code used} and {@code available} states + * instead. + */ + @Deprecated public static final String BUFFERS = "buffers"; - /** cached. */ - public static final String CACHED = "cached"; + /** + * cached. + * + * @deprecated Removed, report memory usage with the {@code used} and {@code available} states + * instead. + */ + @Deprecated public static final String CACHED = "cached"; private SystemMemoryStateIncubatingValues() {} } diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SystemIncubatingMetrics.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SystemIncubatingMetrics.java index 67beb8ab..b90ec3f4 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SystemIncubatingMetrics.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SystemIncubatingMetrics.java @@ -339,7 +339,7 @@ public final class SystemIncubatingMetrics { public static final String SYSTEM_MEMORY_USAGE_UNIT = "By"; /** Description of the {@code system.memory.usage} metric. */ - public static final String SYSTEM_MEMORY_USAGE_DESCRIPTION = "Reports memory in use by state."; + public static final String SYSTEM_MEMORY_USAGE_DESCRIPTION = "Reports memory by state."; /** Name of the {@code system.memory.utilization} metric. */ public static final String SYSTEM_MEMORY_UTILIZATION_NAME = "system.memory.utilization"; @@ -349,7 +349,7 @@ public final class SystemIncubatingMetrics { /** Description of the {@code system.memory.utilization} metric. */ public static final String SYSTEM_MEMORY_UTILIZATION_DESCRIPTION = - "Percentage of memory bytes in use."; + "Fraction of memory bytes by state."; /** Name of the {@code system.network.connection.count} metric. */ public static final String SYSTEM_NETWORK_CONNECTION_COUNT_NAME = diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/UrlIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/UrlIncubatingAttributes.java index c6292004..6f005f53 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/UrlIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/UrlIncubatingAttributes.java @@ -80,12 +80,22 @@ public final class UrlIncubatingAttributes { * href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv-authentication-methods.html">{@code * X-Amz-Security-Token} *

  • {@code + * AWSAccessKeyId} + *
  • {@code + * Signature} + *
  • {@code * sig} *
  • {@code * X-Goog-Signature} * * + *

    Several of these keys are used by more than one service or signing scheme. Each link points + * to one representative usage rather than an exhaustive list, and does not narrow the scope of + * the key to the linked service or signing scheme. + * *

    This list is subject to change over time. * *

    Matching of query parameter keys against the sensitive list SHOULD be case-sensitive. @@ -155,12 +165,22 @@ public final class UrlIncubatingAttributes { * href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv-authentication-methods.html">{@code * X-Amz-Security-Token} *

  • {@code + * AWSAccessKeyId} + *
  • {@code + * Signature} + *
  • {@code * sig} *
  • {@code * X-Goog-Signature} * * + *

    Several of these keys are used by more than one service or signing scheme. Each link points + * to one representative usage rather than an exhaustive list, and does not narrow the scope of + * the key to the linked service or signing scheme. + * *

    This list is subject to change over time. * *

    Matching of query parameter keys against the sensitive list SHOULD be case-sensitive. diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/V8jsIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/V8jsIncubatingAttributes.java index d02ec69d..a31f9cff 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/V8jsIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/V8jsIncubatingAttributes.java @@ -23,7 +23,8 @@ public final class V8jsIncubatingAttributes { * *

    Value can be retrieved from value {@code space_name} of {@code - * v8.getHeapSpaceStatistics()} + * v8.getHeapSpaceStatistics()}. The set of reported spaces depends on the V8 version the + * runtime embeds. */ public static final AttributeKey V8JS_HEAP_SPACE_NAME = stringKey("v8js.heap.space.name"); @@ -66,6 +67,34 @@ public static final class V8jsHeapSpaceNameIncubatingValues { /** Large object memory space. */ public static final String LARGE_OBJECT_SPACE = "large_object_space"; + /** Read-only memory space, holding immutable objects created at startup. */ + public static final String READ_ONLY_SPACE = "read_only_space"; + + /** Memory space for objects shared across isolates (e.g. shared strings and structs). */ + public static final String SHARED_SPACE = "shared_space"; + + /** Memory space for trusted objects kept outside the V8 sandbox (e.g. bytecode). */ + public static final String TRUSTED_SPACE = "trusted_space"; + + /** Shared variant of the trusted memory space. */ + public static final String SHARED_TRUSTED_SPACE = "shared_trusted_space"; + + /** Large object space for young-generation objects. */ + public static final String NEW_LARGE_OBJECT_SPACE = "new_large_object_space"; + + /** Large object space for code objects. */ + public static final String CODE_LARGE_OBJECT_SPACE = "code_large_object_space"; + + /** Large object space for shared objects. */ + public static final String SHARED_LARGE_OBJECT_SPACE = "shared_large_object_space"; + + /** Large object space for shared trusted objects. */ + public static final String SHARED_TRUSTED_LARGE_OBJECT_SPACE = + "shared_trusted_large_object_space"; + + /** Large object space for trusted objects. */ + public static final String TRUSTED_LARGE_OBJECT_SPACE = "trusted_large_object_space"; + private V8jsHeapSpaceNameIncubatingValues() {} } diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ZosIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ZosIncubatingAttributes.java index ebe0c520..d5d7fb5f 100644 --- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ZosIncubatingAttributes.java +++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ZosIncubatingAttributes.java @@ -14,12 +14,23 @@ @SuppressWarnings("unused") public final class ZosIncubatingAttributes { /** - * The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a - * SYSPLEX or mainframe environment and is used for system and performance analysis. + * The System Management Facility (SMF) identifier that uniquely identifies a z/OS system within a + * sysplex or mainframe environment and is used for system and performance analysis. + * + * @deprecated Moved to the OpenTelemetry + * Mainframe semantic conventions repository. */ - public static final AttributeKey ZOS_SMF_ID = stringKey("zos.smf.id"); + @Deprecated public static final AttributeKey ZOS_SMF_ID = stringKey("zos.smf.id"); - /** The name of the SYSPLEX to which the z/OS system belongs too. */ + /** + * The name of the sysplex to which the z/OS system belongs. + * + * @deprecated Moved to the OpenTelemetry + * Mainframe semantic conventions repository. + */ + @Deprecated public static final AttributeKey ZOS_SYSPLEX_NAME = stringKey("zos.sysplex.name"); // Enum definitions diff --git a/semconv/src/main/java/io/opentelemetry/semconv/DbAttributes.java b/semconv/src/main/java/io/opentelemetry/semconv/DbAttributes.java index 6c124bb8..a9860584 100644 --- a/semconv/src/main/java/io/opentelemetry/semconv/DbAttributes.java +++ b/semconv/src/main/java/io/opentelemetry/semconv/DbAttributes.java @@ -25,8 +25,9 @@ public final class DbAttributes { *

    The collection name SHOULD NOT be extracted from {@code db.query.text}, when the database * system supports query text with multiple collections in non-batch operations. * - *

    For batch operations, if the individual operations are known to have the same collection - * name then that collection name SHOULD be used. + *

    For batch operations, if the individual operations would all have the same {@code + * db.collection.name} when executed as non-batch operations, then that collection name SHOULD be + * used. */ public static final AttributeKey DB_COLLECTION_NAME = stringKey("db.collection.name"); @@ -88,10 +89,10 @@ public final class DbAttributes { *

    If spaces can occur in the operation name, multiple consecutive spaces SHOULD be normalized * to a single space. * - *

    For batch operations, if the individual operations are known to have the same operation name - * then that operation name SHOULD be used prepended by {@code BATCH }, otherwise {@code - * db.operation.name} SHOULD be {@code BATCH} or some other database system specific term if more - * applicable. + *

    For batch operations, if the individual operations would all have the same {@code + * db.operation.name} when executed as non-batch operations, then that operation name SHOULD be + * used prepended by {@code BATCH }. Otherwise, {@code db.operation.name} SHOULD be {@code BATCH} + * or some other database system specific term if more applicable. */ public static final AttributeKey DB_OPERATION_NAME = stringKey("db.operation.name"); @@ -109,10 +110,10 @@ public final class DbAttributes { * href="/docs/db/database-spans.md#generating-a-summary-of-the-query">Generating query * summary section. * - *

    For batch operations, if the individual operations are known to have the same query summary - * then that query summary SHOULD be used prepended by {@code BATCH }, otherwise {@code - * db.query.summary} SHOULD be {@code BATCH} or some other database system specific term if more - * applicable. + *

    For batch operations, if the individual operations would all have the same {@code + * db.query.summary} when executed as non-batch operations, then that query summary SHOULD be used + * prepended by {@code BATCH }. Otherwise, {@code db.query.summary} SHOULD be {@code BATCH} or + * some other database system specific term if more applicable. */ public static final AttributeKey DB_QUERY_SUMMARY = stringKey("db.query.summary"); @@ -123,14 +124,14 @@ public final class DbAttributes { * *

    For sanitization see Sanitization of {@code - * db.query.text}. For batch operations, if the individual operations are known to have the - * same query text then that query text SHOULD be used, otherwise all of the individual query - * texts SHOULD be concatenated with separator {@code ; } or some other database system specific - * separator if more applicable. Parameterized query text SHOULD NOT be sanitized. Even though - * parameterized query text can potentially have sensitive data, by using a parameterized query - * the user is giving a strong signal that any sensitive data will be passed as parameter values, - * and the benefit to observability of capturing the static part of the query text by default - * outweighs the risk. + * db.query.text}. For batch operations, if the individual operations would all have the same + * {@code db.query.text} when executed as non-batch operations, then that query text SHOULD be + * used. Otherwise, all of the individual query texts SHOULD be concatenated with separator {@code + * ; } or some other database system specific separator if more applicable. Parameterized query + * text SHOULD NOT be sanitized. Even though parameterized query text can potentially have + * sensitive data, by using a parameterized query the user is giving a strong signal that any + * sensitive data will be passed as parameter values, and the benefit to observability of + * capturing the static part of the query text by default outweighs the risk. */ public static final AttributeKey DB_QUERY_TEXT = stringKey("db.query.text"); @@ -141,8 +142,11 @@ public final class DbAttributes { * *

    The status code returned by the database. Usually it represents an error code, but may also * represent partial success, warning, or differentiate between various types of successful - * outcomes. Semantic conventions for individual database systems SHOULD document what {@code - * db.response.status_code} means in the context of that system. + * outcomes. The value MAY use a standardized string representation of a numeric status code, if + * one exists, instead of the numeric code. The value MAY be a synthetic status provided by the + * client library rather than returned by the remote service. Semantic conventions for individual + * database systems SHOULD document what {@code db.response.status_code} means in the context of + * that system. */ public static final AttributeKey DB_RESPONSE_STATUS_CODE = stringKey("db.response.status_code"); @@ -155,8 +159,9 @@ public final class DbAttributes { *

    It is RECOMMENDED to capture the value as provided by the application without attempting to * do any case normalization. * - *

    For batch operations, if the individual operations are known to have the same stored - * procedure name then that stored procedure name SHOULD be used. + *

    For batch operations, if the individual operations would all have the same {@code + * db.stored_procedure.name} when executed as non-batch operations, then that stored procedure + * name SHOULD be used. */ public static final AttributeKey DB_STORED_PROCEDURE_NAME = stringKey("db.stored_procedure.name"); diff --git a/semconv/src/main/java/io/opentelemetry/semconv/RpcAttributes.java b/semconv/src/main/java/io/opentelemetry/semconv/RpcAttributes.java new file mode 100644 index 00000000..19563a95 --- /dev/null +++ b/semconv/src/main/java/io/opentelemetry/semconv/RpcAttributes.java @@ -0,0 +1,83 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.semconv; + +import static io.opentelemetry.api.common.AttributeKey.stringKey; + +import io.opentelemetry.api.common.AttributeKey; + +// DO NOT EDIT, this is an Auto-generated file from +// buildscripts/templates/registry/java/SemanticAttributes.java.j2 +@SuppressWarnings("unused") +public final class RpcAttributes { + /** + * The fully-qualified logical name of the method from the RPC interface perspective. + * + *

    Notes: + * + *

    The method name MAY have unbounded cardinality in edge or error cases. + * + *

    Some RPC frameworks or libraries provide a fixed set of recognized methods for client stubs + * and server implementations. Instrumentations for such frameworks MUST set this attribute to the + * original method name only when the method is recognized by the framework or library. + * + *

    When the method is not recognized, for example, when the server receives a request for a + * method that is not predefined on the server, or when instrumentation is not able to reliably + * detect if the method is predefined, the attribute MUST be set to {@code _OTHER}. + * + *

    If the RPC instrumentation could end up converting valid RPC methods to {@code _OTHER}, then + * it SHOULD provide a way to configure the list of recognized RPC methods. + * + *

    The {@code rpc.method} can be different from the name of any implementing method/function. + * The {@code code.function.name} attribute may be used to record the fully-qualified method + * actually executing the call on the server side, or the RPC client stub method on the client + * side. + */ + public static final AttributeKey RPC_METHOD = stringKey("rpc.method"); + + /** The original name of the method used by the client. */ + public static final AttributeKey RPC_METHOD_ORIGINAL = stringKey("rpc.method_original"); + + /** + * Status code of the RPC returned by the RPC server or generated by the client + * + *

    Notes: + * + *

    Usually it represents an error code, but may also represent partial success, warning, or + * differentiate between various types of successful outcomes. The value MAY use a standardized + * string representation of a numeric status code, if one exists, instead of the numeric code. The + * value MAY be a synthetic status provided by the client library rather than returned by the + * remote service. Semantic conventions for individual RPC frameworks SHOULD document what {@code + * rpc.status_code} means in the context of that system and which values are considered to + * represent errors. + */ + public static final AttributeKey RPC_STATUS_CODE = stringKey("rpc.status_code"); + + /** + * The Remote Procedure Call (RPC) system. + * + *

    Notes: + * + *

    The client and server RPC systems may differ for the same RPC interaction. For example, a + * client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since + * both protocols provide compatibility with gRPC. + */ + public static final AttributeKey RPC_SYSTEM_NAME = stringKey("rpc.system.name"); + + // Enum definition + /** Values for {@link #RPC_SYSTEM_NAME}. */ + public static final class RpcSystemNameValues { + /** gRPC */ + public static final String GRPC = "grpc"; + + /** Apache Dubbo */ + public static final String DUBBO = "dubbo"; + + private RpcSystemNameValues() {} + } + + private RpcAttributes() {} +} diff --git a/semconv/src/main/java/io/opentelemetry/semconv/SchemaUrls.java b/semconv/src/main/java/io/opentelemetry/semconv/SchemaUrls.java index fcf8458a..a1868abe 100644 --- a/semconv/src/main/java/io/opentelemetry/semconv/SchemaUrls.java +++ b/semconv/src/main/java/io/opentelemetry/semconv/SchemaUrls.java @@ -6,6 +6,7 @@ package io.opentelemetry.semconv; public final class SchemaUrls { + public static final String V1_45_0 = "https://opentelemetry.io/schemas/1.45.0"; public static final String V1_44_0 = "https://opentelemetry.io/schemas/1.44.0"; public static final String V1_43_0 = "https://opentelemetry.io/schemas/1.43.0"; public static final String V1_42_0 = "https://opentelemetry.io/schemas/1.42.0"; diff --git a/semconv/src/main/java/io/opentelemetry/semconv/UrlAttributes.java b/semconv/src/main/java/io/opentelemetry/semconv/UrlAttributes.java index dbf48947..80adfa4c 100644 --- a/semconv/src/main/java/io/opentelemetry/semconv/UrlAttributes.java +++ b/semconv/src/main/java/io/opentelemetry/semconv/UrlAttributes.java @@ -50,12 +50,22 @@ public final class UrlAttributes { * href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv-authentication-methods.html">{@code * X-Amz-Security-Token} *

  • {@code + * AWSAccessKeyId} + *
  • {@code + * Signature} + *
  • {@code * sig} *
  • {@code * X-Goog-Signature} * * + *

    Several of these keys are used by more than one service or signing scheme. Each link points + * to one representative usage rather than an exhaustive list, and does not narrow the scope of + * the key to the linked service or signing scheme. + * *

    This list is subject to change over time. * *

    Matching of query parameter keys against the sensitive list SHOULD be case-sensitive. @@ -103,12 +113,22 @@ public final class UrlAttributes { * href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv-authentication-methods.html">{@code * X-Amz-Security-Token} *

  • {@code + * AWSAccessKeyId} + *
  • {@code + * Signature} + *
  • {@code * sig} *
  • {@code * X-Goog-Signature} * * + *

    Several of these keys are used by more than one service or signing scheme. Each link points + * to one representative usage rather than an exhaustive list, and does not narrow the scope of + * the key to the linked service or signing scheme. + * *

    This list is subject to change over time. * *

    Matching of query parameter keys against the sensitive list SHOULD be case-sensitive. From 56d4ac0484e529abe99c287e24fb54cbf1d47a30 Mon Sep 17 00:00:00 2001 From: otelbot <197425009+otelbot@users.noreply.github.com> Date: Mon, 2 Nov 2026 16:50:42 +0000 Subject: [PATCH 2/2] Update changelog PR link --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9148a7b8..80d0db40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ## Unreleased * Bump to semconv v1.45.0 - ([#PRNUM](https://github.com/open-telemetry/semantic-conventions-java/pull/PRNUM)) + ([#600](https://github.com/open-telemetry/semantic-conventions-java/pull/600)) ## Version 1.44.0 (2026-09-09)