From 39ad238f55adbdd53149f8f10d3c060ce85cb751 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 5 Dec 2023 21:22:33 +0100 Subject: [PATCH] [SEMANTIC CONVENTIONS] Upgrade to semconv version 1.23.1 (#2428) --- CHANGELOG.md | 2 + .../trace/semantic_conventions.h | 2017 +++++++++-------- buildscripts/semantic-convention/generate.sh | 4 +- .../sdk/resource/semantic_conventions.h | 311 +-- 4 files changed, 1199 insertions(+), 1135 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f89ef1505..85bdbadc28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,8 @@ Increment the: [#2398](https://github.com/open-telemetry/opentelemetry-cpp/pull/2398) * [EXPORTER] Rework OTLP/HTTP and OTLP/GRPC exporter options [#2388](https://github.com/open-telemetry/opentelemetry-cpp/pull/2388) +* [SEMANTIC CONVENTION] Upgrade to semconv 1.23.1 + [#2428](https://github.com/open-telemetry/opentelemetry-cpp/pull/2428) Important changes: diff --git a/api/include/opentelemetry/trace/semantic_conventions.h b/api/include/opentelemetry/trace/semantic_conventions.h index 16d6562ee9..49f507c90b 100644 --- a/api/include/opentelemetry/trace/semantic_conventions.h +++ b/api/include/opentelemetry/trace/semantic_conventions.h @@ -22,16 +22,16 @@ namespace SemanticConventions /** * The URL of the OpenTelemetry schema for these keys and values. */ -static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.22.0"; +static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.23.1"; /** - * Client address - domain name if available without reverse DNS lookup, otherwise IP address or + * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. * *

Notes:

+ {@code client.address} SHOULD represent the client address behind any intermediaries, for example + proxies, if it's available. */ static constexpr const char *kClientAddress = "client.address"; @@ -40,125 +40,19 @@ static constexpr const char *kClientAddress = "client.address"; * *

Notes:

+ {@code client.port} SHOULD represent the client port behind any intermediaries, for example + proxies, if it's available. */ static constexpr const char *kClientPort = "client.port"; /** - * Deprecated, use {@code server.address}. - * - * @deprecated Deprecated, use `server.address`. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetHostName = "net.host.name"; - -/** - * Deprecated, use {@code server.port}. - * - * @deprecated Deprecated, use `server.port`. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetHostPort = "net.host.port"; - -/** - * Deprecated, use {@code server.address} on client spans and {@code client.address} on server - * spans. - * - * @deprecated Deprecated, use `server.address` on client spans and `client.address` on server - * spans. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetPeerName = "net.peer.name"; - -/** - * Deprecated, use {@code server.port} on client spans and {@code client.port} on server spans. - * - * @deprecated Deprecated, use `server.port` on client spans and `client.port` on server spans. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetPeerPort = "net.peer.port"; - -/** - * Deprecated, use {@code network.protocol.name}. - * - * @deprecated Deprecated, use `network.protocol.name`. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetProtocolName = "net.protocol.name"; - -/** - * Deprecated, use {@code network.protocol.version}. - * - * @deprecated Deprecated, use `network.protocol.version`. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetProtocolVersion = "net.protocol.version"; - -/** - * Deprecated, use {@code network.transport} and {@code network.type}. - * - * @deprecated Deprecated, use `network.transport` and `network.type`. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockFamily = "net.sock.family"; - -/** - * Deprecated, use {@code network.local.address}. - * - * @deprecated Deprecated, use `network.local.address`. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockHostAddr = "net.sock.host.addr"; - -/** - * Deprecated, use {@code network.local.port}. - * - * @deprecated Deprecated, use `network.local.port`. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockHostPort = "net.sock.host.port"; - -/** - * Deprecated, use {@code network.peer.address}. - * - * @deprecated Deprecated, use `network.peer.address`. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockPeerAddr = "net.sock.peer.addr"; - -/** - * Deprecated, no replacement at this time. - * - * @deprecated Deprecated, no replacement at this time. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockPeerName = "net.sock.peer.name"; - -/** - * Deprecated, use {@code network.peer.port}. - * - * @deprecated Deprecated, use `network.peer.port`. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockPeerPort = "net.sock.peer.port"; - -/** - * Deprecated, use {@code network.transport}. - * - * @deprecated Deprecated, use `network.transport`. - */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetTransport = "net.transport"; - -/** - * Destination address - domain name if available without reverse DNS lookup, otherwise IP address + * Destination address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. * *

Notes:

+ {@code destination.address} SHOULD represent the destination address behind any intermediaries, for + example proxies, if it's available. */ static constexpr const char *kDestinationAddress = "destination.address"; @@ -173,14 +67,15 @@ static constexpr const char *kDestinationPort = "destination.port"; *

Notes:

+error.type}.
  • If a specific domain defines its own set of error identifiers (such as HTTP or +gRPC status codes), it's RECOMMENDED to:
  • Use a domain-specific attribute
  • Set {@code +error.type} to capture all errors, regardless of whether they are defined within the domain-specific +set or not.
  • + */ static constexpr const char *kErrorType = "error.type"; @@ -263,57 +158,12 @@ static constexpr const char *kEnduserRole = "enduser.role"; */ static constexpr const char *kEnduserScope = "enduser.scope"; -/** - * Whether the thread is daemon or not. - */ -static constexpr const char *kThreadDaemon = "thread.daemon"; - -/** - * Current "managed" thread ID (as opposed to OS thread ID). - */ -static constexpr const char *kThreadId = "thread.id"; - -/** - * Current thread name. - */ -static constexpr const char *kThreadName = "thread.name"; - -/** - * The column number in {@code code.filepath} best representing the operation. It SHOULD point - * within the code unit named in {@code code.function}. - */ -static constexpr const char *kCodeColumn = "code.column"; - -/** - * The source code file name that identifies the code unit as uniquely as possible (preferably an - * absolute file path). - */ -static constexpr const char *kCodeFilepath = "code.filepath"; - -/** - * The method or function name, or equivalent (usually rightmost part of the code unit's name). - */ -static constexpr const char *kCodeFunction = "code.function"; - -/** - * The line number in {@code code.filepath} best representing the operation. It SHOULD point within - * the code unit named in {@code code.function}. - */ -static constexpr const char *kCodeLineno = "code.lineno"; - -/** - * The "namespace" within which {@code code.function} is defined. Usually the qualified - * class or module name, such that {@code code.namespace} + some separator + {@code code.function} - * form a unique identifier for the code unit. - */ -static constexpr const char *kCodeNamespace = "code.namespace"; - /** * The domain identifies the business context for the events. * *

    Notes: -

    + */ static constexpr const char *kEventDomain = "event.domain"; @@ -358,9 +208,31 @@ static constexpr const char *kLogFilePath = "log.file.path"; */ static constexpr const char *kLogFilePathResolved = "log.file.path_resolved"; +/** + * This attribute represents the state the application has transitioned into at the occurrence of + the event. + * + *

    Notes: +

    + */ +static constexpr const char *kIosState = "ios.state"; + +/** + * This attribute represents the state the application has transitioned into at the occurrence of + the event. + * + *

    Notes: +

    + */ +static constexpr const char *kAndroidState = "android.state"; + /** * The name of the connection pool; unique within the instrumented application. In case the - * connection pool implementation does not provide a name, then the db.connection_string * should be used */ @@ -474,96 +346,34 @@ static constexpr const char *kSystemNetworkState = "system.network.state"; static constexpr const char *kSystemProcessesStatus = "system.processes.status"; /** - * Local address of the network connection - IP address or Unix domain socket name. - */ -static constexpr const char *kNetworkLocalAddress = "network.local.address"; - -/** - * Local port number of the network connection. - */ -static constexpr const char *kNetworkLocalPort = "network.local.port"; - -/** - * Peer address of the network connection - IP address or Unix domain socket name. - */ -static constexpr const char *kNetworkPeerAddress = "network.peer.address"; - -/** - * Peer port number of the network connection. - */ -static constexpr const char *kNetworkPeerPort = "network.peer.port"; - -/** - * OSI application layer or non-OSI - equivalent. - * - *

    Notes: -

    - */ -static constexpr const char *kNetworkProtocolName = "network.protocol.name"; - -/** - * Version of the protocol specified in {@code network.protocol.name}. - * - *

    Notes: -

    - */ -static constexpr const char *kNetworkProtocolVersion = "network.protocol.version"; - -/** - * OSI transport layer or inter-process communication -method. - * - *

    Notes: -

    - */ -static constexpr const char *kNetworkTransport = "network.transport"; - -/** - * OSI network layer or non-OSI equivalent. - * - *

    Notes: -

    - */ -static constexpr const char *kNetworkType = "network.type"; - -/** - * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. - */ -static constexpr const char *kNetworkCarrierIcc = "network.carrier.icc"; - -/** - * The mobile carrier country code. + * The column number in {@code code.filepath} best representing the operation. It SHOULD point + * within the code unit named in {@code code.function}. */ -static constexpr const char *kNetworkCarrierMcc = "network.carrier.mcc"; +static constexpr const char *kCodeColumn = "code.column"; /** - * The mobile carrier network code. + * The source code file name that identifies the code unit as uniquely as possible (preferably an + * absolute file path). */ -static constexpr const char *kNetworkCarrierMnc = "network.carrier.mnc"; +static constexpr const char *kCodeFilepath = "code.filepath"; /** - * The name of the mobile carrier. + * The method or function name, or equivalent (usually rightmost part of the code unit's name). */ -static constexpr const char *kNetworkCarrierName = "network.carrier.name"; +static constexpr const char *kCodeFunction = "code.function"; /** - * This describes more details regarding the connection.type. It may be the type of cell technology - * connection, but it could be used for describing details about a wifi connection. + * The line number in {@code code.filepath} best representing the operation. It SHOULD point within + * the code unit named in {@code code.function}. */ -static constexpr const char *kNetworkConnectionSubtype = "network.connection.subtype"; +static constexpr const char *kCodeLineno = "code.lineno"; /** - * The internet connection type. + * The "namespace" within which {@code code.function} is defined. Usually the qualified + * class or module name, such that {@code code.namespace} + some separator + {@code code.function} + * form a unique identifier for the code unit. */ -static constexpr const char *kNetworkConnectionType = "network.connection.type"; +static constexpr const char *kCodeNamespace = "code.namespace"; /** * Deprecated, use {@code http.request.method} instead. @@ -574,17 +384,17 @@ OPENTELEMETRY_DEPRECATED static constexpr const char *kHttpMethod = "http.method"; /** - * Deprecated, use {@code http.request.body.size} instead. + * Deprecated, use {@code http.request.header.content-length} instead. * - * @deprecated Deprecated, use `http.request.body.size` instead. + * @deprecated Deprecated, use `http.request.header.content-length` instead. */ OPENTELEMETRY_DEPRECATED static constexpr const char *kHttpRequestContentLength = "http.request_content_length"; /** - * Deprecated, use {@code http.response.body.size} instead. + * Deprecated, use {@code http.response.header.content-length} instead. * - * @deprecated Deprecated, use `http.response.body.size` instead. + * @deprecated Deprecated, use `http.response.header.content-length` instead. */ OPENTELEMETRY_DEPRECATED static constexpr const char *kHttpResponseContentLength = "http.response_content_length"; @@ -622,12 +432,118 @@ OPENTELEMETRY_DEPRECATED static constexpr const char *kHttpUrl = "http.url"; /** - * The size of the request payload body in bytes. This is the number of bytes transferred excluding - * headers and is often, but not always, present as the Content-Length - * header. For requests using transport encoding, this should be the compressed size. + * Deprecated, use {@code server.address}. + * + * @deprecated Deprecated, use `server.address`. */ -static constexpr const char *kHttpRequestBodySize = "http.request.body.size"; +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetHostName = "net.host.name"; + +/** + * Deprecated, use {@code server.port}. + * + * @deprecated Deprecated, use `server.port`. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetHostPort = "net.host.port"; + +/** + * Deprecated, use {@code server.address} on client spans and {@code client.address} on server + * spans. + * + * @deprecated Deprecated, use `server.address` on client spans and `client.address` on server + * spans. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetPeerName = "net.peer.name"; + +/** + * Deprecated, use {@code server.port} on client spans and {@code client.port} on server spans. + * + * @deprecated Deprecated, use `server.port` on client spans and `client.port` on server spans. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetPeerPort = "net.peer.port"; + +/** + * Deprecated, use {@code network.protocol.name}. + * + * @deprecated Deprecated, use `network.protocol.name`. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetProtocolName = "net.protocol.name"; + +/** + * Deprecated, use {@code network.protocol.version}. + * + * @deprecated Deprecated, use `network.protocol.version`. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetProtocolVersion = "net.protocol.version"; + +/** + * Deprecated, use {@code network.transport} and {@code network.type}. + * + * @deprecated Deprecated, use `network.transport` and `network.type`. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetSockFamily = "net.sock.family"; + +/** + * Deprecated, use {@code network.local.address}. + * + * @deprecated Deprecated, use `network.local.address`. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetSockHostAddr = "net.sock.host.addr"; + +/** + * Deprecated, use {@code network.local.port}. + * + * @deprecated Deprecated, use `network.local.port`. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetSockHostPort = "net.sock.host.port"; + +/** + * Deprecated, use {@code network.peer.address}. + * + * @deprecated Deprecated, use `network.peer.address`. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetSockPeerAddr = "net.sock.peer.addr"; + +/** + * Deprecated, no replacement at this time. + * + * @deprecated Deprecated, no replacement at this time. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetSockPeerName = "net.sock.peer.name"; + +/** + * Deprecated, use {@code network.peer.port}. + * + * @deprecated Deprecated, use `network.peer.port`. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetSockPeerPort = "net.sock.peer.port"; + +/** + * Deprecated, use {@code network.transport}. + * + * @deprecated Deprecated, use `network.transport`. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetTransport = "net.transport"; + +/** + * The size of the request payload body in bytes. This is the number of bytes transferred excluding + * headers and is often, but not always, present as the Content-Length + * header. For requests using transport encoding, this should be the compressed size. + */ +static constexpr const char *kHttpRequestBodySize = "http.request.body.size"; /** * HTTP request method. @@ -664,7 +580,7 @@ static constexpr const char *kHttpRequestMethodOriginal = "http.request.method_o regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other). */ -static constexpr const char *kHttpResendCount = "http.resend_count"; +static constexpr const char *kHttpRequestResendCount = "http.request.resend_count"; /** * The size of the response payload body in bytes. This is the number of bytes transferred excluding @@ -680,8 +596,8 @@ static constexpr const char *kHttpResponseBodySize = "http.response.body.size"; static constexpr const char *kHttpResponseStatusCode = "http.response.status_code"; /** - * The matched route (path template in the format used by the respective server framework). See note -below + * The matched route, that is, the path template in the format used by the respective server +framework. * *

    Notes:

    static constexpr const char *kHttpRoute = "http.route"; /** - * Server address - domain name if available without reverse DNS lookup, otherwise IP address or -Unix domain socket name. + * The number of messages sent, received, or processed in the scope of the batching operation. * *

    Notes: -

    + */ -static constexpr const char *kServerAddress = "server.address"; +static constexpr const char *kMessagingBatchMessageCount = "messaging.batch.message_count"; /** - * Server port number. - * - *

    Notes: -

    + * A unique identifier for the client that consumes or produces a message. */ -static constexpr const char *kServerPort = "server.port"; +static constexpr const char *kMessagingClientId = "messaging.client_id"; /** - * A unique id to identify a session. + * A boolean that is true if the message destination is anonymous (could be unnamed or have + * auto-generated name). */ -static constexpr const char *kSessionId = "session.id"; +static constexpr const char *kMessagingDestinationAnonymous = "messaging.destination.anonymous"; /** - * Source address - domain name if available without reverse DNS lookup, otherwise IP address or - Unix domain socket name. + * The message destination name * *

    Notes: -

    - */ -static constexpr const char *kSourceAddress = "source.address"; - -/** - * Source port number + */ -static constexpr const char *kSourcePort = "source.port"; +static constexpr const char *kMessagingDestinationName = "messaging.destination.name"; /** - * The full invoked ARN as provided on the {@code Context} passed to the function ({@code - Lambda-Runtime-Invoked-Function-Arn} header on the {@code /runtime/invocation/next} applicable). + * Low cardinality representation of the messaging destination name * *

    Notes: -

    + */ -static constexpr const char *kAwsLambdaInvokedArn = "aws.lambda.invoked_arn"; +static constexpr const char *kMessagingDestinationTemplate = "messaging.destination.template"; /** - * The event_id - * uniquely identifies the event. + * A boolean that is true if the message destination is temporary and might not exist anymore after + * messages are processed. */ -static constexpr const char *kCloudeventsEventId = "cloudevents.event_id"; +static constexpr const char *kMessagingDestinationTemporary = "messaging.destination.temporary"; /** - * The source - * identifies the context in which an event happened. + * A boolean that is true if the publish message destination is anonymous (could be unnamed or have + * auto-generated name). */ -static constexpr const char *kCloudeventsEventSource = "cloudevents.event_source"; +static constexpr const char *kMessagingDestinationPublishAnonymous = + "messaging.destination_publish.anonymous"; /** - * The version of - * the CloudEvents specification which the event uses. + * The name of the original destination the message was published to + * + *

    Notes: +

    */ -static constexpr const char *kCloudeventsEventSpecVersion = "cloudevents.event_spec_version"; +static constexpr const char *kMessagingDestinationPublishName = + "messaging.destination_publish.name"; /** - * The subject of - * the event in the context of the event producer (identified by source). + * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not + * producers. */ -static constexpr const char *kCloudeventsEventSubject = "cloudevents.event_subject"; +static constexpr const char *kMessagingKafkaConsumerGroup = "messaging.kafka.consumer.group"; /** - * The event_type - * contains a value describing the type of event related to the originating occurrence. + * Partition the message is sent to. */ -static constexpr const char *kCloudeventsEventType = "cloudevents.event_type"; +static constexpr const char *kMessagingKafkaDestinationPartition = + "messaging.kafka.destination.partition"; /** - * Parent-child Reference type + * 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: -

    + */ -static constexpr const char *kOpentracingRefType = "opentracing.ref_type"; +static constexpr const char *kMessagingKafkaMessageKey = "messaging.kafka.message.key"; /** - * The connection string used to connect to the database. It is recommended to remove embedded - * credentials. + * The offset of a record in the corresponding Kafka partition. */ -static constexpr const char *kDbConnectionString = "db.connection_string"; +static constexpr const char *kMessagingKafkaMessageOffset = "messaging.kafka.message.offset"; /** - * The fully-qualified class name of the Java Database Connectivity - * (JDBC) driver used to connect. + * A boolean that is true if the message is a tombstone. */ -static constexpr const char *kDbJdbcDriverClassname = "db.jdbc.driver_classname"; +static constexpr const char *kMessagingKafkaMessageTombstone = "messaging.kafka.message.tombstone"; /** - * This attribute is used to report the name of the database being accessed. For commands that - switch the database, this should be set to the target database (even if the command fails). + * The size of the message body in bytes. * *

    Notes: -

    + */ -static constexpr const char *kDbName = "db.name"; +static constexpr const char *kMessagingMessageBodySize = "messaging.message.body.size"; /** - * The name of the operation being executed, e.g. the MongoDB command - name such as {@code findAndModify}, or the SQL keyword. + * The conversation ID identifying the conversation to which the message belongs, represented as a + * string. Sometimes called "Correlation ID". + */ +static constexpr const char *kMessagingMessageConversationId = "messaging.message.conversation_id"; + +/** + * The size of the message body and metadata in bytes. * *

    Notes: -

    + */ -static constexpr const char *kDbOperation = "db.operation"; +static constexpr const char *kMessagingMessageEnvelopeSize = "messaging.message.envelope.size"; /** - * The database statement being executed. + * A value used by the messaging system as an identifier for the message, represented as a string. */ -static constexpr const char *kDbStatement = "db.statement"; +static constexpr const char *kMessagingMessageId = "messaging.message.id"; /** - * An identifier for the database management system (DBMS) product being used. See below for a list - * of well-known identifiers. + * A string identifying the kind of messaging operation. + * + *

    Notes: +

    */ -static constexpr const char *kDbSystem = "db.system"; +static constexpr const char *kMessagingOperation = "messaging.operation"; /** - * Username for accessing the database. + * RabbitMQ message routing key. */ -static constexpr const char *kDbUser = "db.user"; +static constexpr const char *kMessagingRabbitmqDestinationRoutingKey = + "messaging.rabbitmq.destination.routing_key"; /** - * The Microsoft SQL Server instance - name connecting to. This name is used to determine the port of a named instance. - * - *

    Notes: -

    + * Name of the RocketMQ producer/consumer group that is handling the message. The client type is + * identified by the SpanKind. */ -static constexpr const char *kDbMssqlInstanceName = "db.mssql.instance_name"; +static constexpr const char *kMessagingRocketmqClientGroup = "messaging.rocketmq.client_group"; /** - * The consistency level of the query. Based on consistency values from CQL. + * Model of message consumption. This only applies to consumer spans. */ -static constexpr const char *kDbCassandraConsistencyLevel = "db.cassandra.consistency_level"; +static constexpr const char *kMessagingRocketmqConsumptionModel = + "messaging.rocketmq.consumption_model"; /** - * The data center of the coordinating node for a query. + * The delay time level for delay message, which determines the message delay time. */ -static constexpr const char *kDbCassandraCoordinatorDc = "db.cassandra.coordinator.dc"; +static constexpr const char *kMessagingRocketmqMessageDelayTimeLevel = + "messaging.rocketmq.message.delay_time_level"; /** - * The ID of the coordinating node for a query. + * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. */ -static constexpr const char *kDbCassandraCoordinatorId = "db.cassandra.coordinator.id"; +static constexpr const char *kMessagingRocketmqMessageDeliveryTimestamp = + "messaging.rocketmq.message.delivery_timestamp"; /** - * Whether or not the query is idempotent. + * 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. */ -static constexpr const char *kDbCassandraIdempotence = "db.cassandra.idempotence"; +static constexpr const char *kMessagingRocketmqMessageGroup = "messaging.rocketmq.message.group"; /** - * The fetch size used for paging, i.e. how many rows will be returned at once. + * Key(s) of message, another way to mark message besides message id. */ -static constexpr const char *kDbCassandraPageSize = "db.cassandra.page_size"; +static constexpr const char *kMessagingRocketmqMessageKeys = "messaging.rocketmq.message.keys"; /** - * The number of times a query was speculatively executed. Not set or {@code 0} if the query was not - * executed speculatively. + * The secondary classifier of message besides topic. */ -static constexpr const char *kDbCassandraSpeculativeExecutionCount = - "db.cassandra.speculative_execution_count"; +static constexpr const char *kMessagingRocketmqMessageTag = "messaging.rocketmq.message.tag"; /** - * The name of the primary table that the operation is acting upon, including the keyspace name (if - applicable). - * - *

    Notes: -

    + * Type of message. */ -static constexpr const char *kDbCassandraTable = "db.cassandra.table"; +static constexpr const char *kMessagingRocketmqMessageType = "messaging.rocketmq.message.type"; /** - * The index of the database being accessed as used in the {@code SELECT} command, provided as an integer. To be - * used instead of the generic {@code db.name} attribute. + * Namespace of RocketMQ resources, resources in different namespaces are individual. */ -static constexpr const char *kDbRedisDatabaseIndex = "db.redis.database_index"; +static constexpr const char *kMessagingRocketmqNamespace = "messaging.rocketmq.namespace"; /** - * The collection being accessed within the database stated in {@code db.name}. + * A string identifying the messaging system. */ -static constexpr const char *kDbMongodbCollection = "db.mongodb.collection"; +static constexpr const char *kMessagingSystem = "messaging.system"; /** - * Represents the identifier of an Elasticsearch cluster. + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. */ -static constexpr const char *kDbElasticsearchClusterName = "db.elasticsearch.cluster.name"; +static constexpr const char *kNetworkCarrierIcc = "network.carrier.icc"; /** - * Represents the human-readable identifier of the node/instance to which a request was routed. + * The mobile carrier country code. */ -static constexpr const char *kDbElasticsearchNodeName = "db.elasticsearch.node.name"; +static constexpr const char *kNetworkCarrierMcc = "network.carrier.mcc"; /** - * The name of the primary table that the operation is acting upon, including the database name (if - applicable). - * - *

    Notes: -

    + * The mobile carrier network code. */ -static constexpr const char *kDbSqlTable = "db.sql.table"; +static constexpr const char *kNetworkCarrierMnc = "network.carrier.mnc"; /** - * Unique Cosmos client instance id. + * The name of the mobile carrier. */ -static constexpr const char *kDbCosmosdbClientId = "db.cosmosdb.client_id"; +static constexpr const char *kNetworkCarrierName = "network.carrier.name"; /** - * Cosmos client connection mode. + * This describes more details regarding the connection.type. It may be the type of cell technology + * connection, but it could be used for describing details about a wifi connection. */ -static constexpr const char *kDbCosmosdbConnectionMode = "db.cosmosdb.connection_mode"; +static constexpr const char *kNetworkConnectionSubtype = "network.connection.subtype"; /** - * Cosmos DB container name. + * The internet connection type. */ -static constexpr const char *kDbCosmosdbContainer = "db.cosmosdb.container"; +static constexpr const char *kNetworkConnectionType = "network.connection.type"; /** - * CosmosDB Operation Type. + * Local address of the network connection - IP address or Unix domain socket name. */ -static constexpr const char *kDbCosmosdbOperationType = "db.cosmosdb.operation_type"; +static constexpr const char *kNetworkLocalAddress = "network.local.address"; /** - * RU consumed for that operation + * Local port number of the network connection. */ -static constexpr const char *kDbCosmosdbRequestCharge = "db.cosmosdb.request_charge"; +static constexpr const char *kNetworkLocalPort = "network.local.port"; /** - * Request payload size in bytes + * Peer address of the network connection - IP address or Unix domain socket name. */ -static constexpr const char *kDbCosmosdbRequestContentLength = "db.cosmosdb.request_content_length"; +static constexpr const char *kNetworkPeerAddress = "network.peer.address"; /** - * Cosmos DB status code. + * Peer port number of the network connection. */ -static constexpr const char *kDbCosmosdbStatusCode = "db.cosmosdb.status_code"; +static constexpr const char *kNetworkPeerPort = "network.peer.port"; /** - * Cosmos DB sub status code. + * OSI application layer or non-OSI + equivalent. + * + *

    Notes: +

    */ -static constexpr const char *kDbCosmosdbSubStatusCode = "db.cosmosdb.sub_status_code"; +static constexpr const char *kNetworkProtocolName = "network.protocol.name"; /** - * Name of the code, either "OK" or "ERROR". MUST NOT be set if the status code - * is UNSET. + * Version of the protocol specified in {@code network.protocol.name}. + * + *

    Notes: +

    */ -static constexpr const char *kOtelStatusCode = "otel.status_code"; +static constexpr const char *kNetworkProtocolVersion = "network.protocol.version"; /** - * Description of the Status if it has a value, otherwise not set. + * OSI transport layer or inter-process communication +method. + * + *

    Notes: +

    */ -static constexpr const char *kOtelStatusDescription = "otel.status_description"; +static constexpr const char *kNetworkTransport = "network.transport"; /** - * The invocation ID of the current function invocation. + * OSI network layer or non-OSI equivalent. + * + *

    Notes: +

    */ -static constexpr const char *kFaasInvocationId = "faas.invocation_id"; +static constexpr const char *kNetworkType = "network.type"; /** - * The name of the source on which the triggering operation was performed. For example, in Cloud - * Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name. + * The error codes of the Connect + * request. Error codes are always string values. */ -static constexpr const char *kFaasDocumentCollection = "faas.document.collection"; +static constexpr const char *kRpcConnectRpcErrorCode = "rpc.connect_rpc.error_code"; /** - * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the - * name of the file, and in Cosmos DB the table name. + * The numeric status + * code of the gRPC request. */ -static constexpr const char *kFaasDocumentName = "faas.document.name"; +static constexpr const char *kRpcGrpcStatusCode = "rpc.grpc.status_code"; /** - * Describes the type of the operation that was performed on the data. + * {@code error.code} property of response if it is an error response. */ -static constexpr const char *kFaasDocumentOperation = "faas.document.operation"; +static constexpr const char *kRpcJsonrpcErrorCode = "rpc.jsonrpc.error_code"; /** - * A string containing the time when the data was accessed in the ISO 8601 format expressed in UTC. + * {@code error.message} property of response if it is an error response. */ -static constexpr const char *kFaasDocumentTime = "faas.document.time"; +static constexpr const char *kRpcJsonrpcErrorMessage = "rpc.jsonrpc.error_message"; /** - * A string containing the schedule period as Cron - * Expression. + * {@code id} property of request or response. Since protocol allows id to be int, string, {@code + * null} or missing (for notifications), value is expected to be cast to string for simplicity. Use + * empty string in case of {@code null} value. Omit entirely if this is a notification. */ -static constexpr const char *kFaasCron = "faas.cron"; +static constexpr const char *kRpcJsonrpcRequestId = "rpc.jsonrpc.request_id"; /** - * A string containing the function invocation time in the ISO 8601 format expressed in UTC. + * Protocol version as in {@code jsonrpc} property of request/response. Since JSON-RPC 1.0 doesn't + * specify this, the value can be omitted. */ -static constexpr const char *kFaasTime = "faas.time"; +static constexpr const char *kRpcJsonrpcVersion = "rpc.jsonrpc.version"; /** - * A boolean that is true if the serverless function is executed for the first time (aka - * cold-start). + * The name of the (logical) method being called, must be equal to the $method part in the span + name. + * + *

    Notes: +

    */ -static constexpr const char *kFaasColdstart = "faas.coldstart"; +static constexpr const char *kRpcMethod = "rpc.method"; /** - * The unique identifier of the feature flag. + * The full (logical) name of the service being called, including its package name, if applicable. + * + *

    Notes: +

    */ -static constexpr const char *kFeatureFlagKey = "feature_flag.key"; +static constexpr const char *kRpcService = "rpc.service"; /** - * The name of the service provider that performs the flag evaluation. + * A string identifying the remoting system. See below for a list of well-known identifiers. */ -static constexpr const char *kFeatureFlagProviderName = "feature_flag.provider_name"; +static constexpr const char *kRpcSystem = "rpc.system"; /** - * SHOULD be a semantic identifier for a value. If one is unavailable, a stringified version of the -value can be used. - * - *

    Notes: -

    + * Current "managed" thread ID (as opposed to OS thread ID). */ -static constexpr const char *kFeatureFlagVariant = "feature_flag.variant"; +static constexpr const char *kThreadId = "thread.id"; /** - * The AWS request ID as returned in the response headers {@code x-amz-request-id} or {@code - * x-amz-requestid}. + * Current thread name. */ -static constexpr const char *kAwsRequestId = "aws.request_id"; +static constexpr const char *kThreadName = "thread.name"; /** - * The value of the {@code AttributesToGet} request parameter. + * The URI fragment component */ -static constexpr const char *kAwsDynamodbAttributesToGet = "aws.dynamodb.attributes_to_get"; +static constexpr const char *kUrlFragment = "url.fragment"; /** - * The value of the {@code ConsistentRead} request parameter. + * Absolute URL describing a network resource according to RFC3986 + * + *

    Notes: +

    */ -static constexpr const char *kAwsDynamodbConsistentRead = "aws.dynamodb.consistent_read"; +static constexpr const char *kUrlFull = "url.full"; /** - * The JSON-serialized value of each item in the {@code ConsumedCapacity} response field. + * The URI path component */ -static constexpr const char *kAwsDynamodbConsumedCapacity = "aws.dynamodb.consumed_capacity"; +static constexpr const char *kUrlPath = "url.path"; /** - * The value of the {@code IndexName} request parameter. + * The URI query component + * + *

    Notes: +

    */ -static constexpr const char *kAwsDynamodbIndexName = "aws.dynamodb.index_name"; +static constexpr const char *kUrlQuery = "url.query"; /** - * The JSON-serialized value of the {@code ItemCollectionMetrics} response field. + * The URI scheme component + * identifying the used protocol. */ -static constexpr const char *kAwsDynamodbItemCollectionMetrics = - "aws.dynamodb.item_collection_metrics"; +static constexpr const char *kUrlScheme = "url.scheme"; /** - * The value of the {@code Limit} request parameter. + * Value of the HTTP + * User-Agent header sent by the client. */ -static constexpr const char *kAwsDynamodbLimit = "aws.dynamodb.limit"; +static constexpr const char *kUserAgentOriginal = "user_agent.original"; /** - * The value of the {@code ProjectionExpression} request parameter. + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain + socket name. + * + *

    Notes: +

    */ -static constexpr const char *kAwsDynamodbProjection = "aws.dynamodb.projection"; +static constexpr const char *kServerAddress = "server.address"; /** - * The value of the {@code ProvisionedThroughput.ReadCapacityUnits} request parameter. + * Server port number. + * + *

    Notes: +

    */ -static constexpr const char *kAwsDynamodbProvisionedReadCapacity = - "aws.dynamodb.provisioned_read_capacity"; +static constexpr const char *kServerPort = "server.port"; /** - * The value of the {@code ProvisionedThroughput.WriteCapacityUnits} request parameter. + * A unique id to identify a session. */ -static constexpr const char *kAwsDynamodbProvisionedWriteCapacity = - "aws.dynamodb.provisioned_write_capacity"; +static constexpr const char *kSessionId = "session.id"; /** - * The value of the {@code Select} request parameter. + * The previous {@code session.id} for this user, when known. */ -static constexpr const char *kAwsDynamodbSelect = "aws.dynamodb.select"; +static constexpr const char *kSessionPreviousId = "session.previous_id"; /** - * The keys in the {@code RequestItems} object field. + * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or + Unix domain socket name. + * + *

    Notes: +

    */ -static constexpr const char *kAwsDynamodbTableNames = "aws.dynamodb.table_names"; +static constexpr const char *kSourceAddress = "source.address"; /** - * The JSON-serialized value of each item of the {@code GlobalSecondaryIndexes} request field + * Source port number */ -static constexpr const char *kAwsDynamodbGlobalSecondaryIndexes = - "aws.dynamodb.global_secondary_indexes"; +static constexpr const char *kSourcePort = "source.port"; /** - * The JSON-serialized value of each item of the {@code LocalSecondaryIndexes} request field. + * The full invoked ARN as provided on the {@code Context} passed to the function ({@code + Lambda-Runtime-Invoked-Function-Arn} header on the {@code /runtime/invocation/next} applicable). + * + *

    Notes: +

    */ -static constexpr const char *kAwsDynamodbLocalSecondaryIndexes = - "aws.dynamodb.local_secondary_indexes"; +static constexpr const char *kAwsLambdaInvokedArn = "aws.lambda.invoked_arn"; /** - * The value of the {@code ExclusiveStartTableName} request parameter. + * The event_id + * uniquely identifies the event. */ -static constexpr const char *kAwsDynamodbExclusiveStartTable = "aws.dynamodb.exclusive_start_table"; +static constexpr const char *kCloudeventsEventId = "cloudevents.event_id"; /** - * The the number of items in the {@code TableNames} response parameter. + * The source + * identifies the context in which an event happened. */ -static constexpr const char *kAwsDynamodbTableCount = "aws.dynamodb.table_count"; +static constexpr const char *kCloudeventsEventSource = "cloudevents.event_source"; /** - * The value of the {@code ScanIndexForward} request parameter. + * The version of + * the CloudEvents specification which the event uses. */ -static constexpr const char *kAwsDynamodbScanForward = "aws.dynamodb.scan_forward"; +static constexpr const char *kCloudeventsEventSpecVersion = "cloudevents.event_spec_version"; /** - * The value of the {@code Count} response parameter. + * The subject of + * the event in the context of the event producer (identified by source). */ -static constexpr const char *kAwsDynamodbCount = "aws.dynamodb.count"; +static constexpr const char *kCloudeventsEventSubject = "cloudevents.event_subject"; /** - * The value of the {@code ScannedCount} response parameter. + * The event_type + * contains a value describing the type of event related to the originating occurrence. */ -static constexpr const char *kAwsDynamodbScannedCount = "aws.dynamodb.scanned_count"; +static constexpr const char *kCloudeventsEventType = "cloudevents.event_type"; /** - * The value of the {@code Segment} request parameter. + * Parent-child Reference type + * + *

    Notes: +

    */ -static constexpr const char *kAwsDynamodbSegment = "aws.dynamodb.segment"; +static constexpr const char *kOpentracingRefType = "opentracing.ref_type"; /** - * The value of the {@code TotalSegments} request parameter. + * The connection string used to connect to the database. It is recommended to remove embedded + * credentials. */ -static constexpr const char *kAwsDynamodbTotalSegments = "aws.dynamodb.total_segments"; +static constexpr const char *kDbConnectionString = "db.connection_string"; /** - * The JSON-serialized value of each item in the {@code AttributeDefinitions} request field. + * The fully-qualified class name of the Java Database Connectivity + * (JDBC) driver used to connect. */ -static constexpr const char *kAwsDynamodbAttributeDefinitions = - "aws.dynamodb.attribute_definitions"; +static constexpr const char *kDbJdbcDriverClassname = "db.jdbc.driver_classname"; /** - * The JSON-serialized value of each item in the the {@code GlobalSecondaryIndexUpdates} request - * field. + * This attribute is used to report the name of the database being accessed. For commands that + switch the database, this should be set to the target database (even if the command fails). + * + *

    Notes: +

    */ -static constexpr const char *kAwsDynamodbGlobalSecondaryIndexUpdates = - "aws.dynamodb.global_secondary_index_updates"; +static constexpr const char *kDbName = "db.name"; /** - * The S3 bucket name the request refers to. Corresponds to the {@code --bucket} parameter of the S3 API operations. + * The name of the operation being executed, e.g. the MongoDB command + name such as {@code findAndModify}, or the SQL keyword. * *

    Notes: -

    + */ -static constexpr const char *kAwsS3Bucket = "aws.s3.bucket"; +static constexpr const char *kDbOperation = "db.operation"; /** - * The source object (in the form {@code bucket}/{@code key}) for the copy operation. - * - *

    Notes: -

    + * The database statement being executed. */ -static constexpr const char *kAwsS3CopySource = "aws.s3.copy_source"; +static constexpr const char *kDbStatement = "db.statement"; /** - * The delete request container that specifies the objects to be deleted. + * An identifier for the database management system (DBMS) product being used. See below for a list + * of well-known identifiers. + */ +static constexpr const char *kDbSystem = "db.system"; + +/** + * Username for accessing the database. + */ +static constexpr const char *kDbUser = "db.user"; + +/** + * The Microsoft SQL Server instance + name connecting to. This name is used to determine the port of a named instance. * *

    Notes: -

    + */ -static constexpr const char *kAwsS3Delete = "aws.s3.delete"; +static constexpr const char *kDbMssqlInstanceName = "db.mssql.instance_name"; /** - * The S3 object key the request refers to. Corresponds to the {@code --key} parameter of the S3 API operations. + * The consistency level of the query. Based on consistency values from CQL. + */ +static constexpr const char *kDbCassandraConsistencyLevel = "db.cassandra.consistency_level"; + +/** + * The data center of the coordinating node for a query. + */ +static constexpr const char *kDbCassandraCoordinatorDc = "db.cassandra.coordinator.dc"; + +/** + * The ID of the coordinating node for a query. + */ +static constexpr const char *kDbCassandraCoordinatorId = "db.cassandra.coordinator.id"; + +/** + * Whether or not the query is idempotent. + */ +static constexpr const char *kDbCassandraIdempotence = "db.cassandra.idempotence"; + +/** + * The fetch size used for paging, i.e. how many rows will be returned at once. + */ +static constexpr const char *kDbCassandraPageSize = "db.cassandra.page_size"; + +/** + * The number of times a query was speculatively executed. Not set or {@code 0} if the query was not + * executed speculatively. + */ +static constexpr const char *kDbCassandraSpeculativeExecutionCount = + "db.cassandra.speculative_execution_count"; + +/** + * The name of the primary table that the operation is acting upon, including the keyspace name (if + applicable). * *

    Notes: -

    + */ -static constexpr const char *kAwsS3Key = "aws.s3.key"; +static constexpr const char *kDbCassandraTable = "db.cassandra.table"; /** - * The part number of the part being uploaded in a multipart-upload operation. This is a positive -integer between 1 and 10,000. + * The index of the database being accessed as used in the {@code SELECT} command, provided as an integer. To be + * used instead of the generic {@code db.name} attribute. + */ +static constexpr const char *kDbRedisDatabaseIndex = "db.redis.database_index"; + +/** + * The collection being accessed within the database stated in {@code db.name}. + */ +static constexpr const char *kDbMongodbCollection = "db.mongodb.collection"; + +/** + * Represents the identifier of an Elasticsearch cluster. + */ +static constexpr const char *kDbElasticsearchClusterName = "db.elasticsearch.cluster.name"; + +/** + * Represents the human-readable identifier of the node/instance to which a request was routed. + */ +static constexpr const char *kDbElasticsearchNodeName = "db.elasticsearch.node.name"; + +/** + * The name of the primary table that the operation is acting upon, including the database name (if + applicable). * *

    Notes: -

    + + */ +static constexpr const char *kDbSqlTable = "db.sql.table"; + +/** + * Unique Cosmos client instance id. + */ +static constexpr const char *kDbCosmosdbClientId = "db.cosmosdb.client_id"; + +/** + * Cosmos client connection mode. + */ +static constexpr const char *kDbCosmosdbConnectionMode = "db.cosmosdb.connection_mode"; + +/** + * Cosmos DB container name. + */ +static constexpr const char *kDbCosmosdbContainer = "db.cosmosdb.container"; + +/** + * CosmosDB Operation Type. + */ +static constexpr const char *kDbCosmosdbOperationType = "db.cosmosdb.operation_type"; + +/** + * RU consumed for that operation + */ +static constexpr const char *kDbCosmosdbRequestCharge = "db.cosmosdb.request_charge"; + +/** + * Request payload size in bytes + */ +static constexpr const char *kDbCosmosdbRequestContentLength = "db.cosmosdb.request_content_length"; + +/** + * Cosmos DB status code. + */ +static constexpr const char *kDbCosmosdbStatusCode = "db.cosmosdb.status_code"; + +/** + * Cosmos DB sub status code. + */ +static constexpr const char *kDbCosmosdbSubStatusCode = "db.cosmosdb.sub_status_code"; + +/** + * Name of the code, either "OK" or "ERROR". MUST NOT be set if the status code + * is UNSET. + */ +static constexpr const char *kOtelStatusCode = "otel.status_code"; + +/** + * Description of the Status if it has a value, otherwise not set. */ -static constexpr const char *kAwsS3PartNumber = "aws.s3.part_number"; +static constexpr const char *kOtelStatusDescription = "otel.status_description"; /** - * Upload ID that identifies the multipart upload. - * - *

    Notes: -

    + * The invocation ID of the current function invocation. */ -static constexpr const char *kAwsS3UploadId = "aws.s3.upload_id"; +static constexpr const char *kFaasInvocationId = "faas.invocation_id"; /** - * The GraphQL document being executed. - * - *

    Notes: -

    + * The name of the source on which the triggering operation was performed. For example, in Cloud + * Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name. */ -static constexpr const char *kGraphqlDocument = "graphql.document"; +static constexpr const char *kFaasDocumentCollection = "faas.document.collection"; /** - * The name of the operation being executed. + * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the + * name of the file, and in Cosmos DB the table name. */ -static constexpr const char *kGraphqlOperationName = "graphql.operation.name"; +static constexpr const char *kFaasDocumentName = "faas.document.name"; /** - * The type of the operation being executed. + * Describes the type of the operation that was performed on the data. */ -static constexpr const char *kGraphqlOperationType = "graphql.operation.type"; +static constexpr const char *kFaasDocumentOperation = "faas.document.operation"; /** - * The size of the message body in bytes. - * - *

    Notes: -

    + * A string containing the time when the data was accessed in the ISO 8601 format expressed in UTC. */ -static constexpr const char *kMessagingMessageBodySize = "messaging.message.body.size"; +static constexpr const char *kFaasDocumentTime = "faas.document.time"; /** - * The conversation ID identifying the conversation to which the - * message belongs, represented as a string. Sometimes called "Correlation ID". + * A string containing the schedule period as Cron + * Expression. */ -static constexpr const char *kMessagingMessageConversationId = "messaging.message.conversation_id"; +static constexpr const char *kFaasCron = "faas.cron"; /** - * The size of the message body and metadata in bytes. - * - *

    Notes: -

    + * A string containing the function invocation time in the ISO 8601 format expressed in UTC. */ -static constexpr const char *kMessagingMessageEnvelopeSize = "messaging.message.envelope.size"; +static constexpr const char *kFaasTime = "faas.time"; /** - * A value used by the messaging system as an identifier for the message, represented as a string. + * A boolean that is true if the serverless function is executed for the first time (aka + * cold-start). */ -static constexpr const char *kMessagingMessageId = "messaging.message.id"; +static constexpr const char *kFaasColdstart = "faas.coldstart"; /** - * A boolean that is true if the message destination is anonymous (could be unnamed or have - * auto-generated name). + * The unique identifier of the feature flag. */ -static constexpr const char *kMessagingDestinationAnonymous = "messaging.destination.anonymous"; +static constexpr const char *kFeatureFlagKey = "feature_flag.key"; /** - * The message destination name - * - *

    Notes: -

    + * The name of the service provider that performs the flag evaluation. */ -static constexpr const char *kMessagingDestinationName = "messaging.destination.name"; +static constexpr const char *kFeatureFlagProviderName = "feature_flag.provider_name"; /** - * Low cardinality representation of the messaging destination name + * SHOULD be a semantic identifier for a value. If one is unavailable, a stringified version of the +value can be used. * *

    Notes: -

    + */ -static constexpr const char *kMessagingDestinationTemplate = "messaging.destination.template"; +static constexpr const char *kFeatureFlagVariant = "feature_flag.variant"; /** - * A boolean that is true if the message destination is temporary and might not exist anymore after - * messages are processed. + * The AWS request ID as returned in the response headers {@code x-amz-request-id} or {@code + * x-amz-requestid}. */ -static constexpr const char *kMessagingDestinationTemporary = "messaging.destination.temporary"; +static constexpr const char *kAwsRequestId = "aws.request_id"; /** - * A boolean that is true if the publish message destination is anonymous (could be unnamed or have - * auto-generated name). + * The value of the {@code AttributesToGet} request parameter. */ -static constexpr const char *kMessagingDestinationPublishAnonymous = - "messaging.destination_publish.anonymous"; +static constexpr const char *kAwsDynamodbAttributesToGet = "aws.dynamodb.attributes_to_get"; /** - * The name of the original destination the message was published to - * - *

    Notes: -

    + * The value of the {@code ConsistentRead} request parameter. */ -static constexpr const char *kMessagingDestinationPublishName = - "messaging.destination_publish.name"; +static constexpr const char *kAwsDynamodbConsistentRead = "aws.dynamodb.consistent_read"; /** - * The number of messages sent, received, or processed in the scope of the batching operation. - * - *

    Notes: -

    + * The JSON-serialized value of each item in the {@code ConsumedCapacity} response field. */ -static constexpr const char *kMessagingBatchMessageCount = "messaging.batch.message_count"; +static constexpr const char *kAwsDynamodbConsumedCapacity = "aws.dynamodb.consumed_capacity"; /** - * A unique identifier for the client that consumes or produces a message. + * The value of the {@code IndexName} request parameter. */ -static constexpr const char *kMessagingClientId = "messaging.client_id"; +static constexpr const char *kAwsDynamodbIndexName = "aws.dynamodb.index_name"; /** - * A string identifying the kind of messaging operation as defined in the Operation names section above. - * - *

    Notes: -

    + * The JSON-serialized value of the {@code ItemCollectionMetrics} response field. */ -static constexpr const char *kMessagingOperation = "messaging.operation"; +static constexpr const char *kAwsDynamodbItemCollectionMetrics = + "aws.dynamodb.item_collection_metrics"; /** - * A string identifying the messaging system. + * The value of the {@code Limit} request parameter. */ -static constexpr const char *kMessagingSystem = "messaging.system"; +static constexpr const char *kAwsDynamodbLimit = "aws.dynamodb.limit"; /** - * RabbitMQ message routing key. + * The value of the {@code ProjectionExpression} request parameter. */ -static constexpr const char *kMessagingRabbitmqDestinationRoutingKey = - "messaging.rabbitmq.destination.routing_key"; +static constexpr const char *kAwsDynamodbProjection = "aws.dynamodb.projection"; /** - * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not - * producers. + * The value of the {@code ProvisionedThroughput.ReadCapacityUnits} request parameter. */ -static constexpr const char *kMessagingKafkaConsumerGroup = "messaging.kafka.consumer.group"; +static constexpr const char *kAwsDynamodbProvisionedReadCapacity = + "aws.dynamodb.provisioned_read_capacity"; /** - * Partition the message is sent to. + * The value of the {@code ProvisionedThroughput.WriteCapacityUnits} request parameter. */ -static constexpr const char *kMessagingKafkaDestinationPartition = - "messaging.kafka.destination.partition"; +static constexpr const char *kAwsDynamodbProvisionedWriteCapacity = + "aws.dynamodb.provisioned_write_capacity"; /** - * 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: -

    + * The value of the {@code Select} request parameter. */ -static constexpr const char *kMessagingKafkaMessageKey = "messaging.kafka.message.key"; +static constexpr const char *kAwsDynamodbSelect = "aws.dynamodb.select"; /** - * The offset of a record in the corresponding Kafka partition. + * The keys in the {@code RequestItems} object field. */ -static constexpr const char *kMessagingKafkaMessageOffset = "messaging.kafka.message.offset"; +static constexpr const char *kAwsDynamodbTableNames = "aws.dynamodb.table_names"; /** - * A boolean that is true if the message is a tombstone. + * The JSON-serialized value of each item of the {@code GlobalSecondaryIndexes} request field */ -static constexpr const char *kMessagingKafkaMessageTombstone = "messaging.kafka.message.tombstone"; +static constexpr const char *kAwsDynamodbGlobalSecondaryIndexes = + "aws.dynamodb.global_secondary_indexes"; /** - * Name of the RocketMQ producer/consumer group that is handling the message. The client type is - * identified by the SpanKind. + * The JSON-serialized value of each item of the {@code LocalSecondaryIndexes} request field. */ -static constexpr const char *kMessagingRocketmqClientGroup = "messaging.rocketmq.client_group"; +static constexpr const char *kAwsDynamodbLocalSecondaryIndexes = + "aws.dynamodb.local_secondary_indexes"; /** - * Model of message consumption. This only applies to consumer spans. + * The value of the {@code ExclusiveStartTableName} request parameter. */ -static constexpr const char *kMessagingRocketmqConsumptionModel = - "messaging.rocketmq.consumption_model"; +static constexpr const char *kAwsDynamodbExclusiveStartTable = "aws.dynamodb.exclusive_start_table"; /** - * The delay time level for delay message, which determines the message delay time. + * The the number of items in the {@code TableNames} response parameter. */ -static constexpr const char *kMessagingRocketmqMessageDelayTimeLevel = - "messaging.rocketmq.message.delay_time_level"; +static constexpr const char *kAwsDynamodbTableCount = "aws.dynamodb.table_count"; /** - * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. + * The value of the {@code ScanIndexForward} request parameter. */ -static constexpr const char *kMessagingRocketmqMessageDeliveryTimestamp = - "messaging.rocketmq.message.delivery_timestamp"; +static constexpr const char *kAwsDynamodbScanForward = "aws.dynamodb.scan_forward"; /** - * 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. + * The value of the {@code Count} response parameter. */ -static constexpr const char *kMessagingRocketmqMessageGroup = "messaging.rocketmq.message.group"; +static constexpr const char *kAwsDynamodbCount = "aws.dynamodb.count"; /** - * Key(s) of message, another way to mark message besides message id. + * The value of the {@code ScannedCount} response parameter. */ -static constexpr const char *kMessagingRocketmqMessageKeys = "messaging.rocketmq.message.keys"; +static constexpr const char *kAwsDynamodbScannedCount = "aws.dynamodb.scanned_count"; /** - * The secondary classifier of message besides topic. + * The value of the {@code Segment} request parameter. */ -static constexpr const char *kMessagingRocketmqMessageTag = "messaging.rocketmq.message.tag"; +static constexpr const char *kAwsDynamodbSegment = "aws.dynamodb.segment"; /** - * Type of message. + * The value of the {@code TotalSegments} request parameter. */ -static constexpr const char *kMessagingRocketmqMessageType = "messaging.rocketmq.message.type"; +static constexpr const char *kAwsDynamodbTotalSegments = "aws.dynamodb.total_segments"; /** - * Namespace of RocketMQ resources, resources in different namespaces are individual. + * The JSON-serialized value of each item in the {@code AttributeDefinitions} request field. */ -static constexpr const char *kMessagingRocketmqNamespace = "messaging.rocketmq.namespace"; +static constexpr const char *kAwsDynamodbAttributeDefinitions = + "aws.dynamodb.attribute_definitions"; /** - * The name of the (logical) method being called, must be equal to the $method part in the span - name. + * The JSON-serialized value of each item in the the {@code GlobalSecondaryIndexUpdates} request + * field. + */ +static constexpr const char *kAwsDynamodbGlobalSecondaryIndexUpdates = + "aws.dynamodb.global_secondary_index_updates"; + +/** + * The S3 bucket name the request refers to. Corresponds to the {@code --bucket} parameter of the S3 API operations. * *

    Notes: -

    + + */ +static constexpr const char *kAwsS3Bucket = "aws.s3.bucket"; + +/** + * The source object (in the form {@code bucket}/{@code key}) for the copy operation. + * + *

    Notes: +

    */ -static constexpr const char *kRpcMethod = "rpc.method"; +static constexpr const char *kAwsS3CopySource = "aws.s3.copy_source"; /** - * The full (logical) name of the service being called, including its package name, if applicable. + * The delete request container that specifies the objects to be deleted. * *

    Notes: -

    + */ -static constexpr const char *kRpcService = "rpc.service"; +static constexpr const char *kAwsS3Delete = "aws.s3.delete"; /** - * A string identifying the remoting system. See below for a list of well-known identifiers. + * The S3 object key the request refers to. Corresponds to the {@code --key} parameter of the S3 API operations. + * + *

    Notes: +

    */ -static constexpr const char *kRpcSystem = "rpc.system"; +static constexpr const char *kAwsS3Key = "aws.s3.key"; /** - * The numeric status - * code of the gRPC request. + * The part number of the part being uploaded in a multipart-upload operation. This is a positive +integer between 1 and 10,000. + * + *

    Notes: +

    */ -static constexpr const char *kRpcGrpcStatusCode = "rpc.grpc.status_code"; +static constexpr const char *kAwsS3PartNumber = "aws.s3.part_number"; /** - * {@code error.code} property of response if it is an error response. + * Upload ID that identifies the multipart upload. + * + *

    Notes: +

    */ -static constexpr const char *kRpcJsonrpcErrorCode = "rpc.jsonrpc.error_code"; +static constexpr const char *kAwsS3UploadId = "aws.s3.upload_id"; /** - * {@code error.message} property of response if it is an error response. + * The GraphQL document being executed. + * + *

    Notes: +

    */ -static constexpr const char *kRpcJsonrpcErrorMessage = "rpc.jsonrpc.error_message"; +static constexpr const char *kGraphqlDocument = "graphql.document"; /** - * {@code id} property of request or response. Since protocol allows id to be int, string, {@code - * null} or missing (for notifications), value is expected to be cast to string for simplicity. Use - * empty string in case of {@code null} value. Omit entirely if this is a notification. + * The name of the operation being executed. */ -static constexpr const char *kRpcJsonrpcRequestId = "rpc.jsonrpc.request_id"; +static constexpr const char *kGraphqlOperationName = "graphql.operation.name"; /** - * Protocol version as in {@code jsonrpc} property of request/response. Since JSON-RPC 1.0 does not - * specify this, the value can be omitted. + * The type of the operation being executed. */ -static constexpr const char *kRpcJsonrpcVersion = "rpc.jsonrpc.version"; +static constexpr const char *kGraphqlOperationType = "graphql.operation.type"; /** * Compressed size of the message in bytes. @@ -1590,12 +1664,6 @@ static constexpr const char *kMessageType = "message.type"; */ static constexpr const char *kMessageUncompressedSize = "message.uncompressed_size"; -/** - * The error codes of the Connect - * request. Error codes are always string values. - */ -static constexpr const char *kRpcConnectRpcErrorCode = "rpc.connect_rpc.error_code"; - /** * SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span. @@ -1615,85 +1683,10 @@ recorded at a time where it was not clear whether the exception will escape.URI fragment component - */ -static constexpr const char *kUrlFragment = "url.fragment"; - -/** - * Absolute URL describing a network resource according to RFC3986 - * - *

    Notes: -

    - */ -static constexpr const char *kUrlFull = "url.full"; - -/** - * The URI path component - * - *

    Notes: -

    - */ -static constexpr const char *kUrlPath = "url.path"; - -/** - * The URI query component - * - *

    Notes: -

    - */ -static constexpr const char *kUrlQuery = "url.query"; - -/** - * The URI scheme component - * identifying the used protocol. - */ -static constexpr const char *kUrlScheme = "url.scheme"; - -/** - * Value of the HTTP - * User-Agent header sent by the client. - */ -static constexpr const char *kUserAgentOriginal = "user_agent.original"; - // Enum definitions -namespace NetSockFamilyValues -{ -/** IPv4 address. */ -static constexpr const char *kInet = "inet"; -/** IPv6 address. */ -static constexpr const char *kInet6 = "inet6"; -/** Unix domain socket path. */ -static constexpr const char *kUnix = "unix"; -} // namespace NetSockFamilyValues - -namespace NetTransportValues -{ -/** ip_tcp. */ -static constexpr const char *kIpTcp = "ip_tcp"; -/** ip_udp. */ -static constexpr const char *kIpUdp = "ip_udp"; -/** Named or anonymous pipe. */ -static constexpr const char *kPipe = "pipe"; -/** In-process communication. */ -static constexpr const char *kInproc = "inproc"; -/** Something else (non IP-based). */ -static constexpr const char *kOther = "other"; -} // namespace NetTransportValues - namespace ErrorTypeValues { -/** A fallback error value to be used when the instrumentation does not define a custom value for - * it. */ +/** A fallback error value to be used when the instrumentation doesn't define a custom value. */ static constexpr const char *kOther = "_OTHER"; } // namespace ErrorTypeValues @@ -1743,6 +1736,35 @@ static constexpr const char *kStdout = "stdout"; static constexpr const char *kStderr = "stderr"; } // namespace LogIostreamValues +namespace IosStateValues +{ +/** The app has become `active`. Associated with UIKit notification `applicationDidBecomeActive`. */ +static constexpr const char *kActive = "active"; +/** The app is now `inactive`. Associated with UIKit notification `applicationWillResignActive`. */ +static constexpr const char *kInactive = "inactive"; +/** The app is now in the background. This value is associated with UIKit notification + * `applicationDidEnterBackground`. */ +static constexpr const char *kBackground = "background"; +/** The app is now in the foreground. This value is associated with UIKit notification + * `applicationWillEnterForeground`. */ +static constexpr const char *kForeground = "foreground"; +/** The app is about to terminate. Associated with UIKit notification `applicationWillTerminate`. */ +static constexpr const char *kTerminate = "terminate"; +} // namespace IosStateValues + +namespace AndroidStateValues +{ +/** Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has + * been called in the app for the first time. */ +static constexpr const char *kCreated = "created"; +/** Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been + * called when the app was in the foreground state. */ +static constexpr const char *kBackground = "background"; +/** Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has + * been called when the app was in either the created or background states. */ +static constexpr const char *kForeground = "foreground"; +} // namespace AndroidStateValues + namespace StateValues { /** idle. */ @@ -1779,8 +1801,6 @@ static constexpr const char *kSteal = "steal"; namespace SystemMemoryStateValues { -/** total. */ -static constexpr const char *kTotal = "total"; /** used. */ static constexpr const char *kUsed = "used"; /** free. */ @@ -1899,25 +1919,90 @@ static constexpr const char *kStopped = "stopped"; static constexpr const char *kDefunct = "defunct"; } // namespace SystemProcessesStatusValues -namespace NetworkTransportValues +namespace NetSockFamilyValues { -/** TCP. */ -static constexpr const char *kTcp = "tcp"; -/** UDP. */ -static constexpr const char *kUdp = "udp"; -/** Named or anonymous pipe. See note below. */ -static constexpr const char *kPipe = "pipe"; -/** Unix domain socket. */ +/** IPv4 address. */ +static constexpr const char *kInet = "inet"; +/** IPv6 address. */ +static constexpr const char *kInet6 = "inet6"; +/** Unix domain socket path. */ static constexpr const char *kUnix = "unix"; -} // namespace NetworkTransportValues +} // namespace NetSockFamilyValues -namespace NetworkTypeValues +namespace NetTransportValues { -/** IPv4. */ -static constexpr const char *kIpv4 = "ipv4"; -/** IPv6. */ -static constexpr const char *kIpv6 = "ipv6"; -} // namespace NetworkTypeValues +/** ip_tcp. */ +static constexpr const char *kIpTcp = "ip_tcp"; +/** ip_udp. */ +static constexpr const char *kIpUdp = "ip_udp"; +/** Named or anonymous pipe. */ +static constexpr const char *kPipe = "pipe"; +/** In-process communication. */ +static constexpr const char *kInproc = "inproc"; +/** Something else (non IP-based). */ +static constexpr const char *kOther = "other"; +} // namespace NetTransportValues + +namespace HttpRequestMethodValues +{ +/** CONNECT method. */ +static constexpr const char *kConnect = "CONNECT"; +/** DELETE method. */ +static constexpr const char *kDelete = "DELETE"; +/** GET method. */ +static constexpr const char *kGet = "GET"; +/** HEAD method. */ +static constexpr const char *kHead = "HEAD"; +/** OPTIONS method. */ +static constexpr const char *kOptions = "OPTIONS"; +/** PATCH method. */ +static constexpr const char *kPatch = "PATCH"; +/** POST method. */ +static constexpr const char *kPost = "POST"; +/** PUT method. */ +static constexpr const char *kPut = "PUT"; +/** TRACE method. */ +static constexpr const char *kTrace = "TRACE"; +/** Any HTTP method that the instrumentation has no prior knowledge of. */ +static constexpr const char *kOther = "_OTHER"; +} // namespace HttpRequestMethodValues + +namespace MessagingOperationValues +{ +/** One or more messages are provided for publishing to an intermediary. If a single message is + * published, the context of the "Publish" span can be used as the creation context and no + * "Create" span needs to be created. */ +static constexpr const char *kPublish = "publish"; +/** A message is created. "Create" spans always refer to a single message and are used to + * provide a unique creation context for messages in batch publishing scenarios. */ +static constexpr const char *kCreate = "create"; +/** One or more messages are requested by a consumer. This operation refers to pull-based scenarios, + * where consumers explicitly call methods of messaging SDKs to receive messages. */ +static constexpr const char *kReceive = "receive"; +/** One or more messages are passed to a consumer. This operation refers to push-based scenarios, + * where consumer register callbacks which get called by messaging SDKs. */ +static constexpr const char *kDeliver = "deliver"; +} // namespace MessagingOperationValues + +namespace MessagingRocketmqConsumptionModelValues +{ +/** Clustering consumption model. */ +static constexpr const char *kClustering = "clustering"; +/** Broadcasting consumption model. */ +static constexpr const char *kBroadcasting = "broadcasting"; +} // namespace MessagingRocketmqConsumptionModelValues + +namespace MessagingRocketmqMessageTypeValues +{ +/** Normal message. */ +static constexpr const char *kNormal = "normal"; +/** FIFO message. */ +static constexpr const char *kFifo = "fifo"; +/** Delay message. */ +static constexpr const char *kDelay = "delay"; +/** Transaction message. */ +static constexpr const char *kTransaction = "transaction"; +} // namespace MessagingRocketmqMessageTypeValues namespace NetworkConnectionSubtypeValues { @@ -1979,35 +2064,119 @@ static constexpr const char *kUnavailable = "unavailable"; static constexpr const char *kUnknown = "unknown"; } // namespace NetworkConnectionTypeValues -namespace HttpRequestMethodValues +namespace NetworkTransportValues { -/** CONNECT method. */ -static constexpr const char *kConnect = "CONNECT"; -/** DELETE method. */ -static constexpr const char *kDelete = "DELETE"; -/** GET method. */ -static constexpr const char *kGet = "GET"; -/** HEAD method. */ -static constexpr const char *kHead = "HEAD"; -/** OPTIONS method. */ -static constexpr const char *kOptions = "OPTIONS"; -/** PATCH method. */ -static constexpr const char *kPatch = "PATCH"; -/** POST method. */ -static constexpr const char *kPost = "POST"; -/** PUT method. */ -static constexpr const char *kPut = "PUT"; -/** TRACE method. */ -static constexpr const char *kTrace = "TRACE"; -/** Any HTTP method that the instrumentation has no prior knowledge of. */ -static constexpr const char *kOther = "_OTHER"; -} // namespace HttpRequestMethodValues +/** TCP. */ +static constexpr const char *kTcp = "tcp"; +/** UDP. */ +static constexpr const char *kUdp = "udp"; +/** Named or anonymous pipe. */ +static constexpr const char *kPipe = "pipe"; +/** Unix domain socket. */ +static constexpr const char *kUnix = "unix"; +} // namespace NetworkTransportValues + +namespace NetworkTypeValues +{ +/** IPv4. */ +static constexpr const char *kIpv4 = "ipv4"; +/** IPv6. */ +static constexpr const char *kIpv6 = "ipv6"; +} // namespace NetworkTypeValues + +namespace RpcConnectRpcErrorCodeValues +{ +/** cancelled. */ +static constexpr const char *kCancelled = "cancelled"; +/** unknown. */ +static constexpr const char *kUnknown = "unknown"; +/** invalid_argument. */ +static constexpr const char *kInvalidArgument = "invalid_argument"; +/** deadline_exceeded. */ +static constexpr const char *kDeadlineExceeded = "deadline_exceeded"; +/** not_found. */ +static constexpr const char *kNotFound = "not_found"; +/** already_exists. */ +static constexpr const char *kAlreadyExists = "already_exists"; +/** permission_denied. */ +static constexpr const char *kPermissionDenied = "permission_denied"; +/** resource_exhausted. */ +static constexpr const char *kResourceExhausted = "resource_exhausted"; +/** failed_precondition. */ +static constexpr const char *kFailedPrecondition = "failed_precondition"; +/** aborted. */ +static constexpr const char *kAborted = "aborted"; +/** out_of_range. */ +static constexpr const char *kOutOfRange = "out_of_range"; +/** unimplemented. */ +static constexpr const char *kUnimplemented = "unimplemented"; +/** internal. */ +static constexpr const char *kInternal = "internal"; +/** unavailable. */ +static constexpr const char *kUnavailable = "unavailable"; +/** data_loss. */ +static constexpr const char *kDataLoss = "data_loss"; +/** unauthenticated. */ +static constexpr const char *kUnauthenticated = "unauthenticated"; +} // namespace RpcConnectRpcErrorCodeValues + +namespace RpcGrpcStatusCodeValues +{ +/** OK. */ +static constexpr const int kOk = 0; +/** CANCELLED. */ +static constexpr const int kCancelled = 1; +/** UNKNOWN. */ +static constexpr const int kUnknown = 2; +/** INVALID_ARGUMENT. */ +static constexpr const int kInvalidArgument = 3; +/** DEADLINE_EXCEEDED. */ +static constexpr const int kDeadlineExceeded = 4; +/** NOT_FOUND. */ +static constexpr const int kNotFound = 5; +/** ALREADY_EXISTS. */ +static constexpr const int kAlreadyExists = 6; +/** PERMISSION_DENIED. */ +static constexpr const int kPermissionDenied = 7; +/** RESOURCE_EXHAUSTED. */ +static constexpr const int kResourceExhausted = 8; +/** FAILED_PRECONDITION. */ +static constexpr const int kFailedPrecondition = 9; +/** ABORTED. */ +static constexpr const int kAborted = 10; +/** OUT_OF_RANGE. */ +static constexpr const int kOutOfRange = 11; +/** UNIMPLEMENTED. */ +static constexpr const int kUnimplemented = 12; +/** INTERNAL. */ +static constexpr const int kInternal = 13; +/** UNAVAILABLE. */ +static constexpr const int kUnavailable = 14; +/** DATA_LOSS. */ +static constexpr const int kDataLoss = 15; +/** UNAUTHENTICATED. */ +static constexpr const int kUnauthenticated = 16; +} // namespace RpcGrpcStatusCodeValues + +namespace RpcSystemValues +{ +/** gRPC. */ +static constexpr const char *kGrpc = "grpc"; +/** Java RMI. */ +static constexpr const char *kJavaRmi = "java_rmi"; +/** .NET WCF. */ +static constexpr const char *kDotnetWcf = "dotnet_wcf"; +/** Apache Dubbo. */ +static constexpr const char *kApacheDubbo = "apache_dubbo"; +/** Connect RPC. */ +static constexpr const char *kConnectRpc = "connect_rpc"; +} // namespace RpcSystemValues namespace OpentracingRefTypeValues { /** The parent Span depends on the child Span in some capacity. */ static constexpr const char *kChildOf = "child_of"; -/** The parent Span does not depend in any way on the result of the child Span. */ +/** The parent Span doesn't depend in any way on the result of the child Span. */ static constexpr const char *kFollowsFrom = "follows_from"; } // namespace OpentracingRefTypeValues @@ -2216,88 +2385,6 @@ static constexpr const char *kMutation = "mutation"; static constexpr const char *kSubscription = "subscription"; } // namespace GraphqlOperationTypeValues -namespace MessagingOperationValues -{ -/** publish. */ -static constexpr const char *kPublish = "publish"; -/** receive. */ -static constexpr const char *kReceive = "receive"; -/** process. */ -static constexpr const char *kProcess = "process"; -} // namespace MessagingOperationValues - -namespace MessagingRocketmqConsumptionModelValues -{ -/** Clustering consumption model. */ -static constexpr const char *kClustering = "clustering"; -/** Broadcasting consumption model. */ -static constexpr const char *kBroadcasting = "broadcasting"; -} // namespace MessagingRocketmqConsumptionModelValues - -namespace MessagingRocketmqMessageTypeValues -{ -/** Normal message. */ -static constexpr const char *kNormal = "normal"; -/** FIFO message. */ -static constexpr const char *kFifo = "fifo"; -/** Delay message. */ -static constexpr const char *kDelay = "delay"; -/** Transaction message. */ -static constexpr const char *kTransaction = "transaction"; -} // namespace MessagingRocketmqMessageTypeValues - -namespace RpcSystemValues -{ -/** gRPC. */ -static constexpr const char *kGrpc = "grpc"; -/** Java RMI. */ -static constexpr const char *kJavaRmi = "java_rmi"; -/** .NET WCF. */ -static constexpr const char *kDotnetWcf = "dotnet_wcf"; -/** Apache Dubbo. */ -static constexpr const char *kApacheDubbo = "apache_dubbo"; -/** Connect RPC. */ -static constexpr const char *kConnectRpc = "connect_rpc"; -} // namespace RpcSystemValues - -namespace RpcGrpcStatusCodeValues -{ -/** OK. */ -static constexpr const int kOk = 0; -/** CANCELLED. */ -static constexpr const int kCancelled = 1; -/** UNKNOWN. */ -static constexpr const int kUnknown = 2; -/** INVALID_ARGUMENT. */ -static constexpr const int kInvalidArgument = 3; -/** DEADLINE_EXCEEDED. */ -static constexpr const int kDeadlineExceeded = 4; -/** NOT_FOUND. */ -static constexpr const int kNotFound = 5; -/** ALREADY_EXISTS. */ -static constexpr const int kAlreadyExists = 6; -/** PERMISSION_DENIED. */ -static constexpr const int kPermissionDenied = 7; -/** RESOURCE_EXHAUSTED. */ -static constexpr const int kResourceExhausted = 8; -/** FAILED_PRECONDITION. */ -static constexpr const int kFailedPrecondition = 9; -/** ABORTED. */ -static constexpr const int kAborted = 10; -/** OUT_OF_RANGE. */ -static constexpr const int kOutOfRange = 11; -/** UNIMPLEMENTED. */ -static constexpr const int kUnimplemented = 12; -/** INTERNAL. */ -static constexpr const int kInternal = 13; -/** UNAVAILABLE. */ -static constexpr const int kUnavailable = 14; -/** DATA_LOSS. */ -static constexpr const int kDataLoss = 15; -/** UNAUTHENTICATED. */ -static constexpr const int kUnauthenticated = 16; -} // namespace RpcGrpcStatusCodeValues - namespace MessageTypeValues { /** sent. */ @@ -2306,42 +2393,6 @@ static constexpr const char *kSent = "SENT"; static constexpr const char *kReceived = "RECEIVED"; } // namespace MessageTypeValues -namespace RpcConnectRpcErrorCodeValues -{ -/** cancelled. */ -static constexpr const char *kCancelled = "cancelled"; -/** unknown. */ -static constexpr const char *kUnknown = "unknown"; -/** invalid_argument. */ -static constexpr const char *kInvalidArgument = "invalid_argument"; -/** deadline_exceeded. */ -static constexpr const char *kDeadlineExceeded = "deadline_exceeded"; -/** not_found. */ -static constexpr const char *kNotFound = "not_found"; -/** already_exists. */ -static constexpr const char *kAlreadyExists = "already_exists"; -/** permission_denied. */ -static constexpr const char *kPermissionDenied = "permission_denied"; -/** resource_exhausted. */ -static constexpr const char *kResourceExhausted = "resource_exhausted"; -/** failed_precondition. */ -static constexpr const char *kFailedPrecondition = "failed_precondition"; -/** aborted. */ -static constexpr const char *kAborted = "aborted"; -/** out_of_range. */ -static constexpr const char *kOutOfRange = "out_of_range"; -/** unimplemented. */ -static constexpr const char *kUnimplemented = "unimplemented"; -/** internal. */ -static constexpr const char *kInternal = "internal"; -/** unavailable. */ -static constexpr const char *kUnavailable = "unavailable"; -/** data_loss. */ -static constexpr const char *kDataLoss = "data_loss"; -/** unauthenticated. */ -static constexpr const char *kUnauthenticated = "unauthenticated"; -} // namespace RpcConnectRpcErrorCodeValues - } // namespace SemanticConventions } // namespace trace OPENTELEMETRY_END_NAMESPACE diff --git a/buildscripts/semantic-convention/generate.sh b/buildscripts/semantic-convention/generate.sh index daa5131dc5..401e6daf60 100755 --- a/buildscripts/semantic-convention/generate.sh +++ b/buildscripts/semantic-convention/generate.sh @@ -18,10 +18,10 @@ ROOT_DIR="${SCRIPT_DIR}/../../" # https://github.com/open-telemetry/opentelemetry-specification # Repository from 1.21.0: # https://github.com/open-telemetry/semantic-conventions -SEMCONV_VERSION=1.22.0 +SEMCONV_VERSION=1.23.1 # repository: https://github.com/open-telemetry/build-tools -GENERATOR_VERSION=0.22.0 +GENERATOR_VERSION=0.23.0 SPEC_VERSION=v$SEMCONV_VERSION SCHEMA_URL=https://opentelemetry.io/schemas/$SEMCONV_VERSION diff --git a/sdk/include/opentelemetry/sdk/resource/semantic_conventions.h b/sdk/include/opentelemetry/sdk/resource/semantic_conventions.h index 1b45f80c36..37ad328ae5 100644 --- a/sdk/include/opentelemetry/sdk/resource/semantic_conventions.h +++ b/sdk/include/opentelemetry/sdk/resource/semantic_conventions.h @@ -24,60 +24,7 @@ namespace SemanticConventions /** * The URL of the OpenTelemetry schema for these keys and values. */ -static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.22.0"; - -/** - * Uniquely identifies the framework API revision offered by a version ({@code os.version}) of the - * android operating system. More information can be found here. - */ -static constexpr const char *kAndroidOsApiLevel = "android.os.api_level"; - -/** - * Array of brand name and version separated by a space - * - *

    Notes: -

    - */ -static constexpr const char *kBrowserBrands = "browser.brands"; - -/** - * Preferred language of the user using the browser - * - *

    Notes: -

    - */ -static constexpr const char *kBrowserLanguage = "browser.language"; - -/** - * A boolean that is true if the browser is running on a mobile device - * - *

    Notes: -

    - */ -static constexpr const char *kBrowserMobile = "browser.mobile"; - -/** - * The platform on which the browser is running - * - *

    Notes: -

    - */ -static constexpr const char *kBrowserPlatform = "browser.platform"; +static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.23.1"; /** * The cloud account ID the resource is assigned to. @@ -115,7 +62,7 @@ static constexpr const char *kCloudProvider = "cloud.provider"; */ @@ -124,7 +71,7 @@ static constexpr const char *kCloudRegion = "cloud.region"; /** * Cloud provider-specific native identifier of the monitored cloud resource (e.g. an ARN on AWS, a -fully qualified +fully qualified resource ID on Azure, a full resource name on GCP) @@ -142,8 +89,8 @@ the resolved function version, as the same runtime instance may be invokable wit aliases.
  • GCP: The URI of the resource
  • Azure: The Fully Qualified -Resource ID of the invoked function, not the function app, having the form +href="https://docs.microsoft.com/rest/api/resources/resources/get-by-id">Fully Qualified Resource +ID of the invoked function, not the function app, having the form {@code /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/}. This means that a span attribute MUST be used, as an Azure function app can host multiple functions @@ -152,6 +99,149 @@ that would usually share a TracerProvider.
  • */ static constexpr const char *kCloudResourceId = "cloud.resource_id"; +/** + * The command used to run the container (i.e. the command name). + * + *

    Notes: +

    + */ +static constexpr const char *kContainerCommand = "container.command"; + +/** + * All the command arguments (including the command/executable itself) run by the container. [2] + */ +static constexpr const char *kContainerCommandArgs = "container.command_args"; + +/** + * The full command run by the container as a single string representing the full command. [2] + */ +static constexpr const char *kContainerCommandLine = "container.command_line"; + +/** + * Container ID. Usually a UUID, as for example used to identify Docker + * containers. The UUID might be abbreviated. + */ +static constexpr const char *kContainerId = "container.id"; + +/** + * Runtime specific image identifier. Usually a hash algorithm followed by a UUID. + * + *

    Notes: +

    + */ +static constexpr const char *kContainerImageId = "container.image.id"; + +/** + * Name of the image the container was built on. + */ +static constexpr const char *kContainerImageName = "container.image.name"; + +/** + * Repo digests of the container image as provided by the container runtime. + * + *

    Notes: +

    + */ +static constexpr const char *kContainerImageRepoDigests = "container.image.repo_digests"; + +/** + * Container image tags. An example can be found in Docker Image + * Inspect. Should be only the {@code } section of the full name for example from {@code + * registry.example.com/my-org/my-image:}. + */ +static constexpr const char *kContainerImageTags = "container.image.tags"; + +/** + * Container name used by container runtime. + */ +static constexpr const char *kContainerName = "container.name"; + +/** + * The container runtime managing this container. + */ +static constexpr const char *kContainerRuntime = "container.runtime"; + +/** + * The digest of the OCI image manifest. For container images specifically is the digest by which +the container image is known. + * + *

    Notes: +

    + */ +static constexpr const char *kOciManifestDigest = "oci.manifest.digest"; + +/** + * Uniquely identifies the framework API revision offered by a version ({@code os.version}) of the + * android operating system. More information can be found here. + */ +static constexpr const char *kAndroidOsApiLevel = "android.os.api_level"; + +/** + * Array of brand name and version separated by a space + * + *

    Notes: +

    • This value is intended to be taken from the UA client hints API ({@code + navigator.userAgentData.brands}).
    + */ +static constexpr const char *kBrowserBrands = "browser.brands"; + +/** + * Preferred language of the user using the browser + * + *

    Notes: +

    • This value is intended to be taken from the Navigator API {@code + navigator.language}.
    + */ +static constexpr const char *kBrowserLanguage = "browser.language"; + +/** + * A boolean that is true if the browser is running on a mobile device + * + *

    Notes: +

    • This value is intended to be taken from the UA client hints API ({@code + navigator.userAgentData.mobile}). If unavailable, this attribute SHOULD be left unset.
    + */ +static constexpr const char *kBrowserMobile = "browser.mobile"; + +/** + * The platform on which the browser is running + * + *

    Notes: +

    • This value is intended to be taken from the UA client hints API ({@code +navigator.userAgentData.platform}). If unavailable, the legacy {@code navigator.platform} API SHOULD +NOT be used instead and this attribute SHOULD be left unset in order for the values to be +consistent. The list of possible values is defined in the W3C User-Agent Client Hints +specification. Note that some (but not all) of these values can overlap with values in the {@code os.type} and {@code os.name} attributes. However, for consistency, the +values in the {@code browser.platform} attribute should capture the exact value that the user agent +provides.
    + */ +static constexpr const char *kBrowserPlatform = "browser.platform"; + /** * The ARN of an ECS cluster. @@ -276,83 +366,7 @@ static constexpr const char *kHerokuReleaseCommit = "heroku.release.commit"; static constexpr const char *kHerokuReleaseCreationTimestamp = "heroku.release.creation_timestamp"; /** - * The command used to run the container (i.e. the command name). - * - *

    Notes: -

    • If using embedded credentials or sensitive data, it is recommended to remove them to - prevent potential leakage.
    - */ -static constexpr const char *kContainerCommand = "container.command"; - -/** - * All the command arguments (including the command/executable itself) run by the container. [2] - */ -static constexpr const char *kContainerCommandArgs = "container.command_args"; - -/** - * The full command run by the container as a single string representing the full command. [2] - */ -static constexpr const char *kContainerCommandLine = "container.command_line"; - -/** - * Container ID. Usually a UUID, as for example used to identify Docker - * containers. The UUID might be abbreviated. - */ -static constexpr const char *kContainerId = "container.id"; - -/** - * Runtime specific image identifier. Usually a hash algorithm followed by a UUID. - * - *

    Notes: -

    • Docker defines a sha256 of the image id; {@code container.image.id} corresponds to the -{@code Image} field from the Docker container inspect API -endpoint. K8s defines a link to the container registry repository with digest {@code "imageID": -"registry.azurecr.io -/namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"}. -The ID is assinged by the container runtime and can vary in different environments. Consider using -{@code oci.manifest.digest} if it is important to identify the same image in different -environments/runtimes.
    - */ -static constexpr const char *kContainerImageId = "container.image.id"; - -/** - * Name of the image the container was built on. - */ -static constexpr const char *kContainerImageName = "container.image.name"; - -/** - * Repo digests of the container image as provided by the container runtime. - * - *

    Notes: -

    • Docker and CRI - report those under the {@code RepoDigests} field.
    - */ -static constexpr const char *kContainerImageRepoDigests = "container.image.repo_digests"; - -/** - * Container image tags. An example can be found in Docker Image - * Inspect. Should be only the {@code } section of the full name for example from {@code - * registry.example.com/my-org/my-image:}. - */ -static constexpr const char *kContainerImageTags = "container.image.tags"; - -/** - * Container name used by container runtime. - */ -static constexpr const char *kContainerName = "container.name"; - -/** - * The container runtime managing this container. - */ -static constexpr const char *kContainerRuntime = "container.runtime"; - -/** - * Name of the deployment + * Name of the deployment * environment (aka deployment tier). */ static constexpr const char *kDeploymentEnvironment = "deployment.environment"; @@ -499,6 +513,17 @@ static constexpr const char *kHostImageVersion = "host.image.version"; */ static constexpr const char *kHostIp = "host.ip"; +/** + * Available MAC addresses of the host, excluding loopback interfaces. + * + *

    Notes: +

    • MAC Addresses MUST be represented in IEEE RA + hexadecimal form: as hyphen-separated octets in uppercase hexadecimal form from most to least + significant.
    + */ +static constexpr const char *kHostMac = "host.mac"; + /** * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully * qualified hostname, or another name specified by the user. @@ -555,7 +580,7 @@ static constexpr const char *kK8sClusterName = "k8s.cluster.name"; * A pseudo-ID for the cluster, set to the UID of the {@code kube-system} namespace. * *

    Notes: -

    • K8s does not have support for obtaining a cluster ID. If this is ever +
      • K8s doesn't have support for obtaining a cluster ID. If this is ever added, we will recommend collecting the {@code k8s.cluster.uid} through the official APIs. In the meantime, we are able to use the {@code uid} of the {@code kube-system} namespace as a proxy for cluster ID. Read on for the @@ -672,20 +697,6 @@ static constexpr const char *kK8sCronjobName = "k8s.cronjob.name"; */ static constexpr const char *kK8sCronjobUid = "k8s.cronjob.uid"; -/** - * The digest of the OCI image manifest. For container images specifically is the digest by which -the container image is known. - * - *

        Notes: -

        - */ -static constexpr const char *kOciManifestDigest = "oci.manifest.digest"; - /** * Unique identifier for a particular build or compilation of the operating system. */