From bbd6325f780078f2d04129e74c9b0d7ab62c310b Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Thu, 25 Jan 2024 11:04:55 +0100 Subject: [PATCH] [SEMANTIC CONVENTIONS] Upgrade to version 1.24.0 (#2461) --- .../trace/semantic_conventions.h | 1566 ++++++++++------- buildscripts/semantic-convention/generate.sh | 2 +- .../templates/SemanticAttributes.h.j2 | 12 +- .../sdk/resource/semantic_conventions.h | 737 ++++---- 4 files changed, 1328 insertions(+), 989 deletions(-) diff --git a/api/include/opentelemetry/trace/semantic_conventions.h b/api/include/opentelemetry/trace/semantic_conventions.h index 49f507c90b..baad4e674f 100644 --- a/api/include/opentelemetry/trace/semantic_conventions.h +++ b/api/include/opentelemetry/trace/semantic_conventions.h @@ -22,79 +22,7 @@ namespace SemanticConventions /** * The URL of the OpenTelemetry schema for these keys and values. */ -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 - Unix domain socket name. - * - *

Notes: -

- */ -static constexpr const char *kClientAddress = "client.address"; - -/** - * Client port number. - * - *

Notes: -

- */ -static constexpr const char *kClientPort = "client.port"; - -/** - * Destination address - domain name if available without reverse DNS lookup; otherwise, IP address - or Unix domain socket name. - * - *

Notes: -

- */ -static constexpr const char *kDestinationAddress = "destination.address"; - -/** - * Destination port number - */ -static constexpr const char *kDestinationPort = "destination.port"; - -/** - * Describes a class of error the operation ended with. - * - *

Notes: -

- */ -static constexpr const char *kErrorType = "error.type"; - -/** - * The exception message. - */ -static constexpr const char *kExceptionMessage = "exception.message"; - -/** - * A stacktrace as a string in the natural representation for the language runtime. The - * representation is to be determined and documented by each language SIG. - */ -static constexpr const char *kExceptionStacktrace = "exception.stacktrace"; - -/** - * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of - * the exception should be preferred over the static type in languages that support it. - */ -static constexpr const char *kExceptionType = "exception.type"; +static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.24.0"; /** * The name of the invoked function. @@ -159,16 +87,13 @@ static constexpr const char *kEnduserRole = "enduser.role"; static constexpr const char *kEnduserScope = "enduser.scope"; /** - * The domain identifies the business context for the events. + * Identifies the class / type of event. * *

Notes: -

- */ -static constexpr const char *kEventDomain = "event.domain"; - -/** - * The name identifies the event. + */ static constexpr const char *kEventName = "event.name"; @@ -243,6 +168,46 @@ static constexpr const char *kPoolName = "pool.name"; */ static constexpr const char *kState = "state"; +/** + * Full type name of the {@code + * IExceptionHandler} implementation that handled the exception. + */ +static constexpr const char *kAspnetcoreDiagnosticsHandlerType = + "aspnetcore.diagnostics.handler.type"; + +/** + * Rate limiting policy name. + */ +static constexpr const char *kAspnetcoreRateLimitingPolicy = "aspnetcore.rate_limiting.policy"; + +/** + * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason + */ +static constexpr const char *kAspnetcoreRateLimitingResult = "aspnetcore.rate_limiting.result"; + +/** + * Flag indicating if request was handled by the application pipeline. + */ +static constexpr const char *kAspnetcoreRequestIsUnhandled = "aspnetcore.request.is_unhandled"; + +/** + * A value that indicates whether the matched route is a fallback route. + */ +static constexpr const char *kAspnetcoreRoutingIsFallback = "aspnetcore.routing.is_fallback"; + +/** + * SignalR HTTP connection closure status. + */ +static constexpr const char *kSignalrConnectionStatus = "signalr.connection.status"; + +/** + * SignalR + * transport type + */ +static constexpr const char *kSignalrTransport = "signalr.transport"; + /** * Name of the buffer pool. * @@ -303,11 +268,6 @@ static constexpr const char *kSystemPagingState = "system.paging.state"; */ static constexpr const char *kSystemPagingType = "system.paging.type"; -/** - * The disk operation direction - */ -static constexpr const char *kSystemDiskDirection = "system.disk.direction"; - /** * The filesystem mode */ @@ -328,11 +288,6 @@ static constexpr const char *kSystemFilesystemState = "system.filesystem.state"; */ static constexpr const char *kSystemFilesystemType = "system.filesystem.type"; -/** - * - */ -static constexpr const char *kSystemNetworkDirection = "system.network.direction"; - /** * A stateless protocol MUST NOT set this attribute */ @@ -345,6 +300,27 @@ static constexpr const char *kSystemNetworkState = "system.network.state"; */ static constexpr const char *kSystemProcessesStatus = "system.processes.status"; +/** + * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or + Unix domain socket name. + * + *

Notes: +

+ */ +static constexpr const char *kClientAddress = "client.address"; + +/** + * Client port number. + * + *

Notes: +

+ */ +static constexpr const char *kClientPort = "client.port"; + /** * The column number in {@code code.filepath} best representing the operation. It SHOULD point * within the code unit named in {@code code.function}. @@ -376,166 +352,458 @@ static constexpr const char *kCodeLineno = "code.lineno"; static constexpr const char *kCodeNamespace = "code.namespace"; /** - * Deprecated, use {@code http.request.method} instead. - * - * @deprecated Deprecated, use `http.request.method` instead. + * A stacktrace as a string in the natural representation for the language runtime. The + * representation is to be determined and documented by each language SIG. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpMethod = "http.method"; +static constexpr const char *kCodeStacktrace = "code.stacktrace"; /** - * Deprecated, use {@code http.request.header.content-length} instead. - * - * @deprecated Deprecated, use `http.request.header.content-length` instead. + * The consistency level of the query. Based on consistency values from CQL. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpRequestContentLength = "http.request_content_length"; +static constexpr const char *kDbCassandraConsistencyLevel = "db.cassandra.consistency_level"; /** - * Deprecated, use {@code http.response.header.content-length} instead. - * - * @deprecated Deprecated, use `http.response.header.content-length` instead. + * The data center of the coordinating node for a query. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpResponseContentLength = "http.response_content_length"; +static constexpr const char *kDbCassandraCoordinatorDc = "db.cassandra.coordinator.dc"; /** - * Deprecated, use {@code url.scheme} instead. - * - * @deprecated Deprecated, use `url.scheme` instead. + * The ID of the coordinating node for a query. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpScheme = "http.scheme"; +static constexpr const char *kDbCassandraCoordinatorId = "db.cassandra.coordinator.id"; /** - * Deprecated, use {@code http.response.status_code} instead. - * - * @deprecated Deprecated, use `http.response.status_code` instead. + * Whether or not the query is idempotent. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpStatusCode = "http.status_code"; +static constexpr const char *kDbCassandraIdempotence = "db.cassandra.idempotence"; /** - * Deprecated, use {@code url.path} and {@code url.query} instead. - * - * @deprecated Deprecated, use `url.path` and `url.query` instead. + * The fetch size used for paging, i.e. how many rows will be returned at once. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpTarget = "http.target"; +static constexpr const char *kDbCassandraPageSize = "db.cassandra.page_size"; /** - * Deprecated, use {@code url.full} instead. - * - * @deprecated Deprecated, use `url.full` instead. + * The number of times a query was speculatively executed. Not set or {@code 0} if the query was not + * executed speculatively. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpUrl = "http.url"; +static constexpr const char *kDbCassandraSpeculativeExecutionCount = + "db.cassandra.speculative_execution_count"; /** - * Deprecated, use {@code server.address}. + * The name of the primary Cassandra table that the operation is acting upon, including the keyspace + name (if applicable). * - * @deprecated Deprecated, use `server.address`. + *

Notes: +

*/ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetHostName = "net.host.name"; +static constexpr const char *kDbCassandraTable = "db.cassandra.table"; /** - * Deprecated, use {@code server.port}. - * - * @deprecated Deprecated, use `server.port`. + * The connection string used to connect to the database. It is recommended to remove embedded + * credentials. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetHostPort = "net.host.port"; +static constexpr const char *kDbConnectionString = "db.connection_string"; /** - * 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. + * Unique Cosmos client instance id. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetPeerName = "net.peer.name"; +static constexpr const char *kDbCosmosdbClientId = "db.cosmosdb.client_id"; /** - * 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. + * Cosmos client connection mode. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetPeerPort = "net.peer.port"; +static constexpr const char *kDbCosmosdbConnectionMode = "db.cosmosdb.connection_mode"; /** - * Deprecated, use {@code network.protocol.name}. - * - * @deprecated Deprecated, use `network.protocol.name`. + * Cosmos DB container name. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetProtocolName = "net.protocol.name"; +static constexpr const char *kDbCosmosdbContainer = "db.cosmosdb.container"; /** - * Deprecated, use {@code network.protocol.version}. - * - * @deprecated Deprecated, use `network.protocol.version`. + * CosmosDB Operation Type. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetProtocolVersion = "net.protocol.version"; +static constexpr const char *kDbCosmosdbOperationType = "db.cosmosdb.operation_type"; /** - * Deprecated, use {@code network.transport} and {@code network.type}. - * - * @deprecated Deprecated, use `network.transport` and `network.type`. + * RU consumed for that operation */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockFamily = "net.sock.family"; +static constexpr const char *kDbCosmosdbRequestCharge = "db.cosmosdb.request_charge"; /** - * Deprecated, use {@code network.local.address}. - * - * @deprecated Deprecated, use `network.local.address`. + * Request payload size in bytes */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockHostAddr = "net.sock.host.addr"; +static constexpr const char *kDbCosmosdbRequestContentLength = "db.cosmosdb.request_content_length"; /** - * Deprecated, use {@code network.local.port}. - * - * @deprecated Deprecated, use `network.local.port`. + * Cosmos DB status code. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockHostPort = "net.sock.host.port"; +static constexpr const char *kDbCosmosdbStatusCode = "db.cosmosdb.status_code"; /** - * Deprecated, use {@code network.peer.address}. - * - * @deprecated Deprecated, use `network.peer.address`. + * Cosmos DB sub status code. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockPeerAddr = "net.sock.peer.addr"; +static constexpr const char *kDbCosmosdbSubStatusCode = "db.cosmosdb.sub_status_code"; /** - * Deprecated, no replacement at this time. - * - * @deprecated Deprecated, no replacement at this time. + * 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"; + +/** + * An identifier (address, unique name, or any other identifier) of the database instance that is + * executing queries or mutations on the current connection. This is useful in cases where the + * database is running in a clustered environment and the instrumentation is able to record the node + * executing the query. The client may obtain this value in databases like MySQL using queries like + * {@code select @@hostname}. + */ +static constexpr const char *kDbInstanceId = "db.instance.id"; + +/** + * The fully-qualified class name of the Java Database Connectivity + * (JDBC) driver used to connect. + */ +static constexpr const char *kDbJdbcDriverClassname = "db.jdbc.driver_classname"; + +/** + * The MongoDB collection being accessed within the database stated in {@code db.name}. + */ +static constexpr const char *kDbMongodbCollection = "db.mongodb.collection"; + +/** + * 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 *kDbMssqlInstanceName = "db.mssql.instance_name"; + +/** + * 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 *kDbName = "db.name"; + +/** + * 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 *kDbOperation = "db.operation"; + +/** + * 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 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"; + +/** + * The database statement being executed. + */ +static constexpr const char *kDbStatement = "db.statement"; + +/** + * 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"; + +/** + * Deprecated, use {@code network.protocol.name} instead. + * + * @deprecated Deprecated, use `network.protocol.name` instead. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpFlavor = "http.flavor"; + +/** + * Deprecated, use {@code http.request.method} instead. + * + * @deprecated Deprecated, use `http.request.method` instead. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpMethod = "http.method"; + +/** + * Deprecated, use {@code http.request.header.content-length} 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.header.content-length} instead. + * + * @deprecated Deprecated, use `http.response.header.content-length` instead. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpResponseContentLength = "http.response_content_length"; + +/** + * Deprecated, use {@code url.scheme} instead. + * + * @deprecated Deprecated, use `url.scheme` instead. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpScheme = "http.scheme"; + +/** + * Deprecated, use {@code http.response.status_code} instead. + * + * @deprecated Deprecated, use `http.response.status_code` instead. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpStatusCode = "http.status_code"; + +/** + * Deprecated, use {@code url.path} and {@code url.query} instead. + * + * @deprecated Deprecated, use `url.path` and `url.query` instead. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpTarget = "http.target"; + +/** + * Deprecated, use {@code url.full} instead. + * + * @deprecated Deprecated, use `url.full` instead. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpUrl = "http.url"; + +/** + * Deprecated, use {@code user_agent.original} instead. + * + * @deprecated Deprecated, use `user_agent.original` instead. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpUserAgent = "http.user_agent"; + +/** + * 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 + or Unix domain socket name. + * + *

Notes: +

+ */ +static constexpr const char *kDestinationAddress = "destination.address"; + +/** + * Destination port number + */ +static constexpr const char *kDestinationPort = "destination.port"; + +/** + * The disk IO operation direction. + */ +static constexpr const char *kDiskIoDirection = "disk.io.direction"; + +/** + * Describes a class of error the operation ended with. + * + *

Notes: +

*/ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockPeerName = "net.sock.peer.name"; +static constexpr const char *kErrorType = "error.type"; /** - * Deprecated, use {@code network.peer.port}. + * 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. * - * @deprecated Deprecated, use `network.peer.port`. + *

Notes: +

*/ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockPeerPort = "net.sock.peer.port"; +static constexpr const char *kExceptionEscaped = "exception.escaped"; /** - * Deprecated, use {@code network.transport}. - * - * @deprecated Deprecated, use `network.transport`. + * The exception message. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetTransport = "net.transport"; +static constexpr const char *kExceptionMessage = "exception.message"; + +/** + * A stacktrace as a string in the natural representation for the language runtime. The + * representation is to be determined and documented by each language SIG. + */ +static constexpr const char *kExceptionStacktrace = "exception.stacktrace"; + +/** + * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of + * the exception should be preferred over the static type in languages that support it. + */ +static constexpr const char *kExceptionType = "exception.type"; /** * The size of the request payload body in bytes. This is the number of bytes transferred excluding @@ -675,6 +943,13 @@ identify the broker. static constexpr const char *kMessagingDestinationPublishName = "messaging.destination_publish.name"; +/** + * The ordering key for a given message. If the attribute is not present, the message does not have + * an ordering key. + */ +static constexpr const char *kMessagingGcpPubsubMessageOrderingKey = + "messaging.gcp_pubsub.message.ordering_key"; + /** * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not * producers. @@ -803,7 +1078,8 @@ static constexpr const char *kMessagingRocketmqMessageType = "messaging.rocketmq static constexpr const char *kMessagingRocketmqNamespace = "messaging.rocketmq.namespace"; /** - * A string identifying the messaging system. + * An identifier for the messaging system being used. See below for a list of well-known + * identifiers. */ static constexpr const char *kMessagingSystem = "messaging.system"; @@ -838,6 +1114,11 @@ static constexpr const char *kNetworkConnectionSubtype = "network.connection.sub */ static constexpr const char *kNetworkConnectionType = "network.connection.type"; +/** + * The network IO operation direction. + */ +static constexpr const char *kNetworkIoDirection = "network.io.direction"; + /** * Local address of the network connection - IP address or Unix domain socket name. */ @@ -963,344 +1244,342 @@ static constexpr const char *kRpcService = "rpc.service"; static constexpr const char *kRpcSystem = "rpc.system"; /** - * Current "managed" thread ID (as opposed to OS thread ID). + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain + socket name. + * + *

Notes: +

*/ -static constexpr const char *kThreadId = "thread.id"; +static constexpr const char *kServerAddress = "server.address"; /** - * Current thread name. + * Server port number. + * + *

Notes: +

*/ -static constexpr const char *kThreadName = "thread.name"; +static constexpr const char *kServerPort = "server.port"; /** - * The URI fragment component + * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or + Unix domain socket name. + * + *

Notes: +

*/ -static constexpr const char *kUrlFragment = "url.fragment"; +static constexpr const char *kSourceAddress = "source.address"; /** - * Absolute URL describing a network resource according to RFC3986 - * - *

Notes: -

+ * Source port number */ -static constexpr const char *kUrlFull = "url.full"; +static constexpr const char *kSourcePort = "source.port"; /** - * The URI path component + * Current "managed" thread ID (as opposed to OS thread ID). */ -static constexpr const char *kUrlPath = "url.path"; +static constexpr const char *kThreadId = "thread.id"; /** - * The URI query component + * Current thread name. + */ +static constexpr const char *kThreadName = "thread.name"; + +/** + * String indicating the cipher used during the + current connection. * *

Notes: -

+ */ -static constexpr const char *kUrlQuery = "url.query"; +static constexpr const char *kTlsCipher = "tls.cipher"; /** - * The URI scheme component - * identifying the used protocol. + * PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of + * {@code client.certificate_chain} since this value also exists in that list. */ -static constexpr const char *kUrlScheme = "url.scheme"; +static constexpr const char *kTlsClientCertificate = "tls.client.certificate"; /** - * Value of the HTTP - * User-Agent header sent by the client. + * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This + * is usually mutually-exclusive of {@code client.certificate} since that value should be the first + * certificate in the chain. */ -static constexpr const char *kUserAgentOriginal = "user_agent.original"; +static constexpr const char *kTlsClientCertificateChain = "tls.client.certificate_chain"; /** - * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain - socket name. - * - *

Notes: -

+ * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the + * client. For consistency with other hash values, this value should be formatted as an uppercase + * hash. */ -static constexpr const char *kServerAddress = "server.address"; +static constexpr const char *kTlsClientHashMd5 = "tls.client.hash.md5"; /** - * Server port number. - * - *

Notes: -

+ * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by + * the client. For consistency with other hash values, this value should be formatted as an + * uppercase hash. */ -static constexpr const char *kServerPort = "server.port"; +static constexpr const char *kTlsClientHashSha1 = "tls.client.hash.sha1"; /** - * A unique id to identify a session. + * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by + * the client. For consistency with other hash values, this value should be formatted as an + * uppercase hash. */ -static constexpr const char *kSessionId = "session.id"; +static constexpr const char *kTlsClientHashSha256 = "tls.client.hash.sha256"; /** - * The previous {@code session.id} for this user, when known. + * Distinguished name of subject of the issuer of + * the x.509 certificate presented by the client. */ -static constexpr const char *kSessionPreviousId = "session.previous_id"; +static constexpr const char *kTlsClientIssuer = "tls.client.issuer"; /** - * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or - Unix domain socket name. - * - *

Notes: -

+ * A hash that identifies clients based on how they perform an SSL/TLS handshake. */ -static constexpr const char *kSourceAddress = "source.address"; +static constexpr const char *kTlsClientJa3 = "tls.client.ja3"; /** - * Source port number + * Date/Time indicating when client certificate is no longer considered valid. */ -static constexpr const char *kSourcePort = "source.port"; +static constexpr const char *kTlsClientNotAfter = "tls.client.not_after"; /** - * 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: -

+ * Date/Time indicating when client certificate is first considered valid. */ -static constexpr const char *kAwsLambdaInvokedArn = "aws.lambda.invoked_arn"; +static constexpr const char *kTlsClientNotBefore = "tls.client.not_before"; /** - * The event_id - * uniquely identifies the event. + * Also called an SNI, this tells the server which hostname to which the client is attempting to + * connect to. */ -static constexpr const char *kCloudeventsEventId = "cloudevents.event_id"; +static constexpr const char *kTlsClientServerName = "tls.client.server_name"; /** - * The source - * identifies the context in which an event happened. + * Distinguished name of subject of the x.509 certificate presented by the client. */ -static constexpr const char *kCloudeventsEventSource = "cloudevents.event_source"; +static constexpr const char *kTlsClientSubject = "tls.client.subject"; /** - * The version of - * the CloudEvents specification which the event uses. + * Array of ciphers offered by the client during the client hello. */ -static constexpr const char *kCloudeventsEventSpecVersion = "cloudevents.event_spec_version"; +static constexpr const char *kTlsClientSupportedCiphers = "tls.client.supported_ciphers"; /** - * The subject of - * the event in the context of the event producer (identified by source). + * String indicating the curve used for the given cipher, when applicable */ -static constexpr const char *kCloudeventsEventSubject = "cloudevents.event_subject"; +static constexpr const char *kTlsCurve = "tls.curve"; /** - * The event_type - * contains a value describing the type of event related to the originating occurrence. + * Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted + * tunnel. */ -static constexpr const char *kCloudeventsEventType = "cloudevents.event_type"; +static constexpr const char *kTlsEstablished = "tls.established"; /** - * Parent-child Reference type - * - *

Notes: -

+ * String indicating the protocol being tunneled. Per the values in the IANA + * registry, this string should be lower case. */ -static constexpr const char *kOpentracingRefType = "opentracing.ref_type"; +static constexpr const char *kTlsNextProtocol = "tls.next_protocol"; /** - * The connection string used to connect to the database. It is recommended to remove embedded - * credentials. + * Normalized lowercase protocol name parsed from original string of the negotiated SSL/TLS + * protocol version */ -static constexpr const char *kDbConnectionString = "db.connection_string"; +static constexpr const char *kTlsProtocolName = "tls.protocol.name"; /** - * The fully-qualified class name of the Java Database Connectivity - * (JDBC) driver used to connect. + * Numeric part of the version parsed from the original string of the negotiated SSL/TLS + * protocol version */ -static constexpr const char *kDbJdbcDriverClassname = "db.jdbc.driver_classname"; +static constexpr const char *kTlsProtocolVersion = "tls.protocol.version"; /** - * 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: -

+ * Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. */ -static constexpr const char *kDbName = "db.name"; +static constexpr const char *kTlsResumed = "tls.resumed"; /** - * The name of the operation being executed, e.g. the MongoDB command - name such as {@code findAndModify}, or the SQL keyword. - * - *

Notes: -

+ * PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of + * {@code server.certificate_chain} since this value also exists in that list. */ -static constexpr const char *kDbOperation = "db.operation"; +static constexpr const char *kTlsServerCertificate = "tls.server.certificate"; /** - * The database statement being executed. + * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This + * is usually mutually-exclusive of {@code server.certificate} since that value should be the first + * certificate in the chain. */ -static constexpr const char *kDbStatement = "db.statement"; +static constexpr const char *kTlsServerCertificateChain = "tls.server.certificate_chain"; /** - * An identifier for the database management system (DBMS) product being used. See below for a list - * of well-known identifiers. + * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the + * server. For consistency with other hash values, this value should be formatted as an uppercase + * hash. */ -static constexpr const char *kDbSystem = "db.system"; +static constexpr const char *kTlsServerHashMd5 = "tls.server.hash.md5"; /** - * Username for accessing the database. + * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by + * the server. For consistency with other hash values, this value should be formatted as an + * uppercase hash. */ -static constexpr const char *kDbUser = "db.user"; +static constexpr const char *kTlsServerHashSha1 = "tls.server.hash.sha1"; /** - * The Microsoft SQL Server instance - name connecting to. This name is used to determine the port of a named instance. - * - *

Notes: -

+ * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by + * the server. For consistency with other hash values, this value should be formatted as an + * uppercase hash. */ -static constexpr const char *kDbMssqlInstanceName = "db.mssql.instance_name"; +static constexpr const char *kTlsServerHashSha256 = "tls.server.hash.sha256"; /** - * The consistency level of the query. Based on consistency values from CQL. + * Distinguished name of subject of the issuer of + * the x.509 certificate presented by the client. */ -static constexpr const char *kDbCassandraConsistencyLevel = "db.cassandra.consistency_level"; +static constexpr const char *kTlsServerIssuer = "tls.server.issuer"; /** - * The data center of the coordinating node for a query. + * A hash that identifies servers based on how they perform an SSL/TLS handshake. */ -static constexpr const char *kDbCassandraCoordinatorDc = "db.cassandra.coordinator.dc"; +static constexpr const char *kTlsServerJa3s = "tls.server.ja3s"; /** - * The ID of the coordinating node for a query. + * Date/Time indicating when server certificate is no longer considered valid. */ -static constexpr const char *kDbCassandraCoordinatorId = "db.cassandra.coordinator.id"; +static constexpr const char *kTlsServerNotAfter = "tls.server.not_after"; /** - * Whether or not the query is idempotent. + * Date/Time indicating when server certificate is first considered valid. */ -static constexpr const char *kDbCassandraIdempotence = "db.cassandra.idempotence"; +static constexpr const char *kTlsServerNotBefore = "tls.server.not_before"; /** - * The fetch size used for paging, i.e. how many rows will be returned at once. + * Distinguished name of subject of the x.509 certificate presented by the server. */ -static constexpr const char *kDbCassandraPageSize = "db.cassandra.page_size"; +static constexpr const char *kTlsServerSubject = "tls.server.subject"; /** - * The number of times a query was speculatively executed. Not set or {@code 0} if the query was not - * executed speculatively. + * The URI fragment component */ -static constexpr const char *kDbCassandraSpeculativeExecutionCount = - "db.cassandra.speculative_execution_count"; +static constexpr const char *kUrlFragment = "url.fragment"; /** - * The name of the primary table that the operation is acting upon, including the keyspace name (if - applicable). + * Absolute URL describing a network resource according to RFC3986 * *

Notes: -

+ */ -static constexpr const char *kDbCassandraTable = "db.cassandra.table"; +static constexpr const char *kUrlFull = "url.full"; /** - * 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. + * The URI path component */ -static constexpr const char *kDbRedisDatabaseIndex = "db.redis.database_index"; +static constexpr const char *kUrlPath = "url.path"; /** - * The collection being accessed within the database stated in {@code db.name}. + * The URI query component + * + *

Notes: +

*/ -static constexpr const char *kDbMongodbCollection = "db.mongodb.collection"; +static constexpr const char *kUrlQuery = "url.query"; /** - * Represents the identifier of an Elasticsearch cluster. + * The URI scheme component + * identifying the used protocol. */ -static constexpr const char *kDbElasticsearchClusterName = "db.elasticsearch.cluster.name"; +static constexpr const char *kUrlScheme = "url.scheme"; /** - * Represents the human-readable identifier of the node/instance to which a request was routed. + * Value of the HTTP + * User-Agent header sent by the client. */ -static constexpr const char *kDbElasticsearchNodeName = "db.elasticsearch.node.name"; +static constexpr const char *kUserAgentOriginal = "user_agent.original"; /** - * The name of the primary table that the operation is acting upon, including the database name (if - applicable). - * - *

Notes: -

+ * A unique id to identify a session. */ -static constexpr const char *kDbSqlTable = "db.sql.table"; +static constexpr const char *kSessionId = "session.id"; /** - * Unique Cosmos client instance id. + * The previous {@code session.id} for this user, when known. */ -static constexpr const char *kDbCosmosdbClientId = "db.cosmosdb.client_id"; +static constexpr const char *kSessionPreviousId = "session.previous_id"; /** - * Cosmos client connection mode. + * 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 *kDbCosmosdbConnectionMode = "db.cosmosdb.connection_mode"; +static constexpr const char *kAwsLambdaInvokedArn = "aws.lambda.invoked_arn"; /** - * Cosmos DB container name. + * The event_id + * uniquely identifies the event. */ -static constexpr const char *kDbCosmosdbContainer = "db.cosmosdb.container"; +static constexpr const char *kCloudeventsEventId = "cloudevents.event_id"; /** - * CosmosDB Operation Type. + * The source + * identifies the context in which an event happened. */ -static constexpr const char *kDbCosmosdbOperationType = "db.cosmosdb.operation_type"; +static constexpr const char *kCloudeventsEventSource = "cloudevents.event_source"; /** - * RU consumed for that operation + * The version of + * the CloudEvents specification which the event uses. */ -static constexpr const char *kDbCosmosdbRequestCharge = "db.cosmosdb.request_charge"; +static constexpr const char *kCloudeventsEventSpecVersion = "cloudevents.event_spec_version"; /** - * Request payload size in bytes + * The subject of + * the event in the context of the event producer (identified by source). */ -static constexpr const char *kDbCosmosdbRequestContentLength = "db.cosmosdb.request_content_length"; +static constexpr const char *kCloudeventsEventSubject = "cloudevents.event_subject"; /** - * Cosmos DB status code. + * The event_type + * contains a value describing the type of event related to the originating occurrence. */ -static constexpr const char *kDbCosmosdbStatusCode = "db.cosmosdb.status_code"; +static constexpr const char *kCloudeventsEventType = "cloudevents.event_type"; /** - * Cosmos DB sub status code. + * Parent-child Reference type + * + *

Notes: +

*/ -static constexpr const char *kDbCosmosdbSubStatusCode = "db.cosmosdb.sub_status_code"; +static constexpr const char *kOpentracingRefType = "opentracing.ref_type"; /** * Name of the code, either "OK" or "ERROR". MUST NOT be set if the status code @@ -1664,32 +1943,7 @@ static constexpr const char *kMessageType = "message.type"; */ static constexpr const char *kMessageUncompressedSize = "message.uncompressed_size"; -/** - * 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. - * - *

Notes: -

- */ -static constexpr const char *kExceptionEscaped = "exception.escaped"; - // Enum definitions -namespace ErrorTypeValues -{ -/** A fallback error value to be used when the instrumentation doesn't define a custom value. */ -static constexpr const char *kOther = "_OTHER"; -} // namespace ErrorTypeValues - namespace FaasInvokedProviderValues { /** Alibaba Cloud. */ @@ -1718,16 +1972,6 @@ static constexpr const char *kTimer = "timer"; static constexpr const char *kOther = "other"; } // namespace FaasTriggerValues -namespace EventDomainValues -{ -/** Events from browser apps. */ -static constexpr const char *kBrowser = "browser"; -/** Events from mobile apps. */ -static constexpr const char *kDevice = "device"; -/** Events from Kubernetes. */ -static constexpr const char *kK8s = "k8s"; -} // namespace EventDomainValues - namespace LogIostreamValues { /** Logs from stdout stream. */ @@ -1773,6 +2017,38 @@ static constexpr const char *kIdle = "idle"; static constexpr const char *kUsed = "used"; } // namespace StateValues +namespace AspnetcoreRateLimitingResultValues +{ +/** Lease was acquired. */ +static constexpr const char *kAcquired = "acquired"; +/** Lease request was rejected by the endpoint limiter. */ +static constexpr const char *kEndpointLimiter = "endpoint_limiter"; +/** Lease request was rejected by the global limiter. */ +static constexpr const char *kGlobalLimiter = "global_limiter"; +/** Lease request was canceled. */ +static constexpr const char *kRequestCanceled = "request_canceled"; +} // namespace AspnetcoreRateLimitingResultValues + +namespace SignalrConnectionStatusValues +{ +/** The connection was closed normally. */ +static constexpr const char *kNormalClosure = "normal_closure"; +/** The connection was closed due to a timeout. */ +static constexpr const char *kTimeout = "timeout"; +/** The connection was closed because the app is shutting down. */ +static constexpr const char *kAppShutdown = "app_shutdown"; +} // namespace SignalrConnectionStatusValues + +namespace SignalrTransportValues +{ +/** ServerSentEvents protocol. */ +static constexpr const char *kServerSentEvents = "server_sent_events"; +/** LongPolling protocol. */ +static constexpr const char *kLongPolling = "long_polling"; +/** WebSockets protocol. */ +static constexpr const char *kWebSockets = "web_sockets"; +} // namespace SignalrTransportValues + namespace JvmMemoryTypeValues { /** Heap memory. */ @@ -1837,14 +2113,6 @@ static constexpr const char *kMajor = "major"; static constexpr const char *kMinor = "minor"; } // namespace SystemPagingTypeValues -namespace SystemDiskDirectionValues -{ -/** read. */ -static constexpr const char *kRead = "read"; -/** write. */ -static constexpr const char *kWrite = "write"; -} // namespace SystemDiskDirectionValues - namespace SystemFilesystemStateValues { /** used. */ @@ -1871,14 +2139,6 @@ static constexpr const char *kHfsplus = "hfsplus"; static constexpr const char *kExt4 = "ext4"; } // namespace SystemFilesystemTypeValues -namespace SystemNetworkDirectionValues -{ -/** transmit. */ -static constexpr const char *kTransmit = "transmit"; -/** receive. */ -static constexpr const char *kReceive = "receive"; -} // namespace SystemNetworkDirectionValues - namespace SystemNetworkStateValues { /** close. */ @@ -1907,17 +2167,209 @@ static constexpr const char *kSynSent = "syn_sent"; static constexpr const char *kTimeWait = "time_wait"; } // namespace SystemNetworkStateValues -namespace SystemProcessesStatusValues +namespace SystemProcessesStatusValues +{ +/** running. */ +static constexpr const char *kRunning = "running"; +/** sleeping. */ +static constexpr const char *kSleeping = "sleeping"; +/** stopped. */ +static constexpr const char *kStopped = "stopped"; +/** defunct. */ +static constexpr const char *kDefunct = "defunct"; +} // namespace SystemProcessesStatusValues + +namespace DbCassandraConsistencyLevelValues +{ +/** all. */ +static constexpr const char *kAll = "all"; +/** each_quorum. */ +static constexpr const char *kEachQuorum = "each_quorum"; +/** quorum. */ +static constexpr const char *kQuorum = "quorum"; +/** local_quorum. */ +static constexpr const char *kLocalQuorum = "local_quorum"; +/** one. */ +static constexpr const char *kOne = "one"; +/** two. */ +static constexpr const char *kTwo = "two"; +/** three. */ +static constexpr const char *kThree = "three"; +/** local_one. */ +static constexpr const char *kLocalOne = "local_one"; +/** any. */ +static constexpr const char *kAny = "any"; +/** serial. */ +static constexpr const char *kSerial = "serial"; +/** local_serial. */ +static constexpr const char *kLocalSerial = "local_serial"; +} // namespace DbCassandraConsistencyLevelValues + +namespace DbCosmosdbConnectionModeValues +{ +/** Gateway (HTTP) connections mode. */ +static constexpr const char *kGateway = "gateway"; +/** Direct connection. */ +static constexpr const char *kDirect = "direct"; +} // namespace DbCosmosdbConnectionModeValues + +namespace DbCosmosdbOperationTypeValues +{ +/** invalid. */ +static constexpr const char *kInvalid = "Invalid"; +/** create. */ +static constexpr const char *kCreate = "Create"; +/** patch. */ +static constexpr const char *kPatch = "Patch"; +/** read. */ +static constexpr const char *kRead = "Read"; +/** read_feed. */ +static constexpr const char *kReadFeed = "ReadFeed"; +/** delete. */ +static constexpr const char *kDelete = "Delete"; +/** replace. */ +static constexpr const char *kReplace = "Replace"; +/** execute. */ +static constexpr const char *kExecute = "Execute"; +/** query. */ +static constexpr const char *kQuery = "Query"; +/** head. */ +static constexpr const char *kHead = "Head"; +/** head_feed. */ +static constexpr const char *kHeadFeed = "HeadFeed"; +/** upsert. */ +static constexpr const char *kUpsert = "Upsert"; +/** batch. */ +static constexpr const char *kBatch = "Batch"; +/** query_plan. */ +static constexpr const char *kQueryPlan = "QueryPlan"; +/** execute_javascript. */ +static constexpr const char *kExecuteJavascript = "ExecuteJavaScript"; +} // namespace DbCosmosdbOperationTypeValues + +namespace DbSystemValues +{ +/** Some other SQL database. Fallback only. See notes. */ +static constexpr const char *kOtherSql = "other_sql"; +/** Microsoft SQL Server. */ +static constexpr const char *kMssql = "mssql"; +/** Microsoft SQL Server Compact. */ +static constexpr const char *kMssqlcompact = "mssqlcompact"; +/** MySQL. */ +static constexpr const char *kMysql = "mysql"; +/** Oracle Database. */ +static constexpr const char *kOracle = "oracle"; +/** IBM Db2. */ +static constexpr const char *kDb2 = "db2"; +/** PostgreSQL. */ +static constexpr const char *kPostgresql = "postgresql"; +/** Amazon Redshift. */ +static constexpr const char *kRedshift = "redshift"; +/** Apache Hive. */ +static constexpr const char *kHive = "hive"; +/** Cloudscape. */ +static constexpr const char *kCloudscape = "cloudscape"; +/** HyperSQL DataBase. */ +static constexpr const char *kHsqldb = "hsqldb"; +/** Progress Database. */ +static constexpr const char *kProgress = "progress"; +/** SAP MaxDB. */ +static constexpr const char *kMaxdb = "maxdb"; +/** SAP HANA. */ +static constexpr const char *kHanadb = "hanadb"; +/** Ingres. */ +static constexpr const char *kIngres = "ingres"; +/** FirstSQL. */ +static constexpr const char *kFirstsql = "firstsql"; +/** EnterpriseDB. */ +static constexpr const char *kEdb = "edb"; +/** InterSystems Caché. */ +static constexpr const char *kCache = "cache"; +/** Adabas (Adaptable Database System). */ +static constexpr const char *kAdabas = "adabas"; +/** Firebird. */ +static constexpr const char *kFirebird = "firebird"; +/** Apache Derby. */ +static constexpr const char *kDerby = "derby"; +/** FileMaker. */ +static constexpr const char *kFilemaker = "filemaker"; +/** Informix. */ +static constexpr const char *kInformix = "informix"; +/** InstantDB. */ +static constexpr const char *kInstantdb = "instantdb"; +/** InterBase. */ +static constexpr const char *kInterbase = "interbase"; +/** MariaDB. */ +static constexpr const char *kMariadb = "mariadb"; +/** Netezza. */ +static constexpr const char *kNetezza = "netezza"; +/** Pervasive PSQL. */ +static constexpr const char *kPervasive = "pervasive"; +/** PointBase. */ +static constexpr const char *kPointbase = "pointbase"; +/** SQLite. */ +static constexpr const char *kSqlite = "sqlite"; +/** Sybase. */ +static constexpr const char *kSybase = "sybase"; +/** Teradata. */ +static constexpr const char *kTeradata = "teradata"; +/** Vertica. */ +static constexpr const char *kVertica = "vertica"; +/** H2. */ +static constexpr const char *kH2 = "h2"; +/** ColdFusion IMQ. */ +static constexpr const char *kColdfusion = "coldfusion"; +/** Apache Cassandra. */ +static constexpr const char *kCassandra = "cassandra"; +/** Apache HBase. */ +static constexpr const char *kHbase = "hbase"; +/** MongoDB. */ +static constexpr const char *kMongodb = "mongodb"; +/** Redis. */ +static constexpr const char *kRedis = "redis"; +/** Couchbase. */ +static constexpr const char *kCouchbase = "couchbase"; +/** CouchDB. */ +static constexpr const char *kCouchdb = "couchdb"; +/** Microsoft Azure Cosmos DB. */ +static constexpr const char *kCosmosdb = "cosmosdb"; +/** Amazon DynamoDB. */ +static constexpr const char *kDynamodb = "dynamodb"; +/** Neo4j. */ +static constexpr const char *kNeo4j = "neo4j"; +/** Apache Geode. */ +static constexpr const char *kGeode = "geode"; +/** Elasticsearch. */ +static constexpr const char *kElasticsearch = "elasticsearch"; +/** Memcached. */ +static constexpr const char *kMemcached = "memcached"; +/** CockroachDB. */ +static constexpr const char *kCockroachdb = "cockroachdb"; +/** OpenSearch. */ +static constexpr const char *kOpensearch = "opensearch"; +/** ClickHouse. */ +static constexpr const char *kClickhouse = "clickhouse"; +/** Cloud Spanner. */ +static constexpr const char *kSpanner = "spanner"; +/** Trino. */ +static constexpr const char *kTrino = "trino"; +} // namespace DbSystemValues + +namespace HttpFlavorValues { -/** running. */ -static constexpr const char *kRunning = "running"; -/** sleeping. */ -static constexpr const char *kSleeping = "sleeping"; -/** stopped. */ -static constexpr const char *kStopped = "stopped"; -/** defunct. */ -static constexpr const char *kDefunct = "defunct"; -} // namespace SystemProcessesStatusValues +/** HTTP/1.0. */ +static constexpr const char *kHttp10 = "1.0"; +/** HTTP/1.1. */ +static constexpr const char *kHttp11 = "1.1"; +/** HTTP/2. */ +static constexpr const char *kHttp20 = "2.0"; +/** HTTP/3. */ +static constexpr const char *kHttp30 = "3.0"; +/** SPDY protocol. */ +static constexpr const char *kSpdy = "SPDY"; +/** QUIC protocol. */ +static constexpr const char *kQuic = "QUIC"; +} // namespace HttpFlavorValues namespace NetSockFamilyValues { @@ -1943,6 +2395,20 @@ static constexpr const char *kInproc = "inproc"; static constexpr const char *kOther = "other"; } // namespace NetTransportValues +namespace DiskIoDirectionValues +{ +/** read. */ +static constexpr const char *kRead = "read"; +/** write. */ +static constexpr const char *kWrite = "write"; +} // namespace DiskIoDirectionValues + +namespace ErrorTypeValues +{ +/** A fallback error value to be used when the instrumentation doesn't define a custom value. */ +static constexpr const char *kOther = "_OTHER"; +} // namespace ErrorTypeValues + namespace HttpRequestMethodValues { /** CONNECT method. */ @@ -2004,6 +2470,30 @@ static constexpr const char *kDelay = "delay"; static constexpr const char *kTransaction = "transaction"; } // namespace MessagingRocketmqMessageTypeValues +namespace MessagingSystemValues +{ +/** Apache ActiveMQ. */ +static constexpr const char *kActivemq = "activemq"; +/** Amazon Simple Queue Service (SQS). */ +static constexpr const char *kAwsSqs = "aws_sqs"; +/** Azure Event Grid. */ +static constexpr const char *kAzureEventgrid = "azure_eventgrid"; +/** Azure Event Hubs. */ +static constexpr const char *kAzureEventhubs = "azure_eventhubs"; +/** Azure Service Bus. */ +static constexpr const char *kAzureServicebus = "azure_servicebus"; +/** Google Cloud Pub/Sub. */ +static constexpr const char *kGcpPubsub = "gcp_pubsub"; +/** Java Message Service. */ +static constexpr const char *kJms = "jms"; +/** Apache Kafka. */ +static constexpr const char *kKafka = "kafka"; +/** RabbitMQ. */ +static constexpr const char *kRabbitmq = "rabbitmq"; +/** Apache RocketMQ. */ +static constexpr const char *kRocketmq = "rocketmq"; +} // namespace MessagingSystemValues + namespace NetworkConnectionSubtypeValues { /** GPRS. */ @@ -2064,6 +2554,14 @@ static constexpr const char *kUnavailable = "unavailable"; static constexpr const char *kUnknown = "unknown"; } // namespace NetworkConnectionTypeValues +namespace NetworkIoDirectionValues +{ +/** transmit. */ +static constexpr const char *kTransmit = "transmit"; +/** receive. */ +static constexpr const char *kReceive = "receive"; +} // namespace NetworkIoDirectionValues + namespace NetworkTransportValues { /** TCP. */ @@ -2172,6 +2670,14 @@ static constexpr const char *kApacheDubbo = "apache_dubbo"; static constexpr const char *kConnectRpc = "connect_rpc"; } // namespace RpcSystemValues +namespace TlsProtocolNameValues +{ +/** ssl. */ +static constexpr const char *kSsl = "ssl"; +/** tls. */ +static constexpr const char *kTls = "tls"; +} // namespace TlsProtocolNameValues + namespace OpentracingRefTypeValues { /** The parent Span depends on the child Span in some capacity. */ @@ -2180,182 +2686,6 @@ static constexpr const char *kChildOf = "child_of"; static constexpr const char *kFollowsFrom = "follows_from"; } // namespace OpentracingRefTypeValues -namespace DbSystemValues -{ -/** Some other SQL database. Fallback only. See notes. */ -static constexpr const char *kOtherSql = "other_sql"; -/** Microsoft SQL Server. */ -static constexpr const char *kMssql = "mssql"; -/** Microsoft SQL Server Compact. */ -static constexpr const char *kMssqlcompact = "mssqlcompact"; -/** MySQL. */ -static constexpr const char *kMysql = "mysql"; -/** Oracle Database. */ -static constexpr const char *kOracle = "oracle"; -/** IBM Db2. */ -static constexpr const char *kDb2 = "db2"; -/** PostgreSQL. */ -static constexpr const char *kPostgresql = "postgresql"; -/** Amazon Redshift. */ -static constexpr const char *kRedshift = "redshift"; -/** Apache Hive. */ -static constexpr const char *kHive = "hive"; -/** Cloudscape. */ -static constexpr const char *kCloudscape = "cloudscape"; -/** HyperSQL DataBase. */ -static constexpr const char *kHsqldb = "hsqldb"; -/** Progress Database. */ -static constexpr const char *kProgress = "progress"; -/** SAP MaxDB. */ -static constexpr const char *kMaxdb = "maxdb"; -/** SAP HANA. */ -static constexpr const char *kHanadb = "hanadb"; -/** Ingres. */ -static constexpr const char *kIngres = "ingres"; -/** FirstSQL. */ -static constexpr const char *kFirstsql = "firstsql"; -/** EnterpriseDB. */ -static constexpr const char *kEdb = "edb"; -/** InterSystems Caché. */ -static constexpr const char *kCache = "cache"; -/** Adabas (Adaptable Database System). */ -static constexpr const char *kAdabas = "adabas"; -/** Firebird. */ -static constexpr const char *kFirebird = "firebird"; -/** Apache Derby. */ -static constexpr const char *kDerby = "derby"; -/** FileMaker. */ -static constexpr const char *kFilemaker = "filemaker"; -/** Informix. */ -static constexpr const char *kInformix = "informix"; -/** InstantDB. */ -static constexpr const char *kInstantdb = "instantdb"; -/** InterBase. */ -static constexpr const char *kInterbase = "interbase"; -/** MariaDB. */ -static constexpr const char *kMariadb = "mariadb"; -/** Netezza. */ -static constexpr const char *kNetezza = "netezza"; -/** Pervasive PSQL. */ -static constexpr const char *kPervasive = "pervasive"; -/** PointBase. */ -static constexpr const char *kPointbase = "pointbase"; -/** SQLite. */ -static constexpr const char *kSqlite = "sqlite"; -/** Sybase. */ -static constexpr const char *kSybase = "sybase"; -/** Teradata. */ -static constexpr const char *kTeradata = "teradata"; -/** Vertica. */ -static constexpr const char *kVertica = "vertica"; -/** H2. */ -static constexpr const char *kH2 = "h2"; -/** ColdFusion IMQ. */ -static constexpr const char *kColdfusion = "coldfusion"; -/** Apache Cassandra. */ -static constexpr const char *kCassandra = "cassandra"; -/** Apache HBase. */ -static constexpr const char *kHbase = "hbase"; -/** MongoDB. */ -static constexpr const char *kMongodb = "mongodb"; -/** Redis. */ -static constexpr const char *kRedis = "redis"; -/** Couchbase. */ -static constexpr const char *kCouchbase = "couchbase"; -/** CouchDB. */ -static constexpr const char *kCouchdb = "couchdb"; -/** Microsoft Azure Cosmos DB. */ -static constexpr const char *kCosmosdb = "cosmosdb"; -/** Amazon DynamoDB. */ -static constexpr const char *kDynamodb = "dynamodb"; -/** Neo4j. */ -static constexpr const char *kNeo4j = "neo4j"; -/** Apache Geode. */ -static constexpr const char *kGeode = "geode"; -/** Elasticsearch. */ -static constexpr const char *kElasticsearch = "elasticsearch"; -/** Memcached. */ -static constexpr const char *kMemcached = "memcached"; -/** CockroachDB. */ -static constexpr const char *kCockroachdb = "cockroachdb"; -/** OpenSearch. */ -static constexpr const char *kOpensearch = "opensearch"; -/** ClickHouse. */ -static constexpr const char *kClickhouse = "clickhouse"; -/** Cloud Spanner. */ -static constexpr const char *kSpanner = "spanner"; -/** Trino. */ -static constexpr const char *kTrino = "trino"; -} // namespace DbSystemValues - -namespace DbCassandraConsistencyLevelValues -{ -/** all. */ -static constexpr const char *kAll = "all"; -/** each_quorum. */ -static constexpr const char *kEachQuorum = "each_quorum"; -/** quorum. */ -static constexpr const char *kQuorum = "quorum"; -/** local_quorum. */ -static constexpr const char *kLocalQuorum = "local_quorum"; -/** one. */ -static constexpr const char *kOne = "one"; -/** two. */ -static constexpr const char *kTwo = "two"; -/** three. */ -static constexpr const char *kThree = "three"; -/** local_one. */ -static constexpr const char *kLocalOne = "local_one"; -/** any. */ -static constexpr const char *kAny = "any"; -/** serial. */ -static constexpr const char *kSerial = "serial"; -/** local_serial. */ -static constexpr const char *kLocalSerial = "local_serial"; -} // namespace DbCassandraConsistencyLevelValues - -namespace DbCosmosdbConnectionModeValues -{ -/** Gateway (HTTP) connections mode. */ -static constexpr const char *kGateway = "gateway"; -/** Direct connection. */ -static constexpr const char *kDirect = "direct"; -} // namespace DbCosmosdbConnectionModeValues - -namespace DbCosmosdbOperationTypeValues -{ -/** invalid. */ -static constexpr const char *kInvalid = "Invalid"; -/** create. */ -static constexpr const char *kCreate = "Create"; -/** patch. */ -static constexpr const char *kPatch = "Patch"; -/** read. */ -static constexpr const char *kRead = "Read"; -/** read_feed. */ -static constexpr const char *kReadFeed = "ReadFeed"; -/** delete. */ -static constexpr const char *kDelete = "Delete"; -/** replace. */ -static constexpr const char *kReplace = "Replace"; -/** execute. */ -static constexpr const char *kExecute = "Execute"; -/** query. */ -static constexpr const char *kQuery = "Query"; -/** head. */ -static constexpr const char *kHead = "Head"; -/** head_feed. */ -static constexpr const char *kHeadFeed = "HeadFeed"; -/** upsert. */ -static constexpr const char *kUpsert = "Upsert"; -/** batch. */ -static constexpr const char *kBatch = "Batch"; -/** query_plan. */ -static constexpr const char *kQueryPlan = "QueryPlan"; -/** execute_javascript. */ -static constexpr const char *kExecuteJavascript = "ExecuteJavaScript"; -} // namespace DbCosmosdbOperationTypeValues - namespace OtelStatusCodeValues { /** The operation has been validated by an Application developer or Operator to have completed diff --git a/buildscripts/semantic-convention/generate.sh b/buildscripts/semantic-convention/generate.sh index 1994869439..f4785a19f6 100755 --- a/buildscripts/semantic-convention/generate.sh +++ b/buildscripts/semantic-convention/generate.sh @@ -18,7 +18,7 @@ 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.23.1 +SEMCONV_VERSION=1.24.0 # repository: https://github.com/open-telemetry/build-tools GENERATOR_VERSION=0.23.0 diff --git a/buildscripts/semantic-convention/templates/SemanticAttributes.h.j2 b/buildscripts/semantic-convention/templates/SemanticAttributes.h.j2 index d35b99444e..3ec0317d4d 100644 --- a/buildscripts/semantic-convention/templates/SemanticAttributes.h.j2 +++ b/buildscripts/semantic-convention/templates/SemanticAttributes.h.j2 @@ -4,8 +4,14 @@ */ {# Adapted from: - opentelemetry-java/buildscripts/semantic-convention/templates/SemanticAttributes.java.j2 + https://github.com/open-telemetry/semantic-conventions-java/blob/main/buildscripts/templates/SemanticAttributes.java.j2 for opentelemetry-cpp + + For doc on the template syntax: + https://jinja.palletsprojects.com/en/3.0.x/ + + For doc on the semantic convention: + https://github.com/open-telemetry/build-tools/tree/main/semantic-conventions #} {%- macro to_cpp_return_type(type) -%} {%- if type == "string" -%} @@ -60,12 +66,12 @@ static constexpr const char *kSchemaUrl = "{{schemaUrl}}"; *

Notes:

{%- endif %} -{%- if (attribute.stability | string()) == "StabilityLevel.DEPRECATED" %} +{%- if (attribute.deprecated) %} * * @deprecated {{attribute.brief | to_doc_brief}}. {%- endif %} */ - {%- if (attribute.stability | string()) == "StabilityLevel.DEPRECATED" %} + {%- if (attribute.deprecated) %} OPENTELEMETRY_DEPRECATED {%- endif %} static constexpr const char *k{{attribute.fqn | to_camelcase(True)}} = "{{attribute.fqn}}"; diff --git a/sdk/include/opentelemetry/sdk/resource/semantic_conventions.h b/sdk/include/opentelemetry/sdk/resource/semantic_conventions.h index 37ad328ae5..add4b9bed7 100644 --- a/sdk/include/opentelemetry/sdk/resource/semantic_conventions.h +++ b/sdk/include/opentelemetry/sdk/resource/semantic_conventions.h @@ -24,7 +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.23.1"; +static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.24.0"; /** * The cloud account ID the resource is assigned to. @@ -176,620 +176,629 @@ static constexpr const char *kContainerName = "container.name"; 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. + * A unique identifier representing the device * *

Notes: -

+ */ -static constexpr const char *kOciManifestDigest = "oci.manifest.digest"; +static constexpr const char *kDeviceId = "device.id"; /** - * Uniquely identifies the framework API revision offered by a version ({@code os.version}) of the - * android operating system. More information can be found here. + * The name of the device manufacturer + * + *

Notes: +

*/ -static constexpr const char *kAndroidOsApiLevel = "android.os.api_level"; +static constexpr const char *kDeviceManufacturer = "device.manufacturer"; /** - * Array of brand name and version separated by a space + * The model identifier for the device * *

Notes: -

+ */ -static constexpr const char *kBrowserBrands = "browser.brands"; +static constexpr const char *kDeviceModelIdentifier = "device.model.identifier"; /** - * Preferred language of the user using the browser + * The marketing name for the device model * *

Notes: -

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

Notes: -

+ * The CPU architecture the host system is running on. */ -static constexpr const char *kBrowserMobile = "browser.mobile"; +static constexpr const char *kHostArch = "host.arch"; /** - * The platform on which the browser is running - * - *

Notes: -

+ * The amount of level 2 memory cache available to the processor (in Bytes). */ -static constexpr const char *kBrowserPlatform = "browser.platform"; +static constexpr const char *kHostCpuCacheL2Size = "host.cpu.cache.l2.size"; /** - * The ARN of an ECS cluster. + * Family or generation of the CPU. */ -static constexpr const char *kAwsEcsClusterArn = "aws.ecs.cluster.arn"; +static constexpr const char *kHostCpuFamily = "host.cpu.family"; /** - * The Amazon Resource Name (ARN) of an ECS - * container instance. + * Model identifier. It provides more granular information about the CPU, distinguishing it from + * other CPUs within the same family. */ -static constexpr const char *kAwsEcsContainerArn = "aws.ecs.container.arn"; +static constexpr const char *kHostCpuModelId = "host.cpu.model.id"; /** - * The launch - * type for an ECS task. + * Model designation of the processor. */ -static constexpr const char *kAwsEcsLaunchtype = "aws.ecs.launchtype"; +static constexpr const char *kHostCpuModelName = "host.cpu.model.name"; /** - * The ARN of an ECS task - * definition. + * Stepping or core revisions. */ -static constexpr const char *kAwsEcsTaskArn = "aws.ecs.task.arn"; +static constexpr const char *kHostCpuStepping = "host.cpu.stepping"; /** - * The task definition family this task definition is a member of. + * Processor manufacturer identifier. A maximum 12-character string. + * + *

Notes: +

*/ -static constexpr const char *kAwsEcsTaskFamily = "aws.ecs.task.family"; +static constexpr const char *kHostCpuVendorId = "host.cpu.vendor.id"; /** - * The revision for this task definition. + * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For + * non-containerized systems, this should be the {@code machine-id}. See the table below for the + * sources to use to determine the {@code machine-id} based on operating system. */ -static constexpr const char *kAwsEcsTaskRevision = "aws.ecs.task.revision"; +static constexpr const char *kHostId = "host.id"; /** - * The ARN of an EKS cluster. + * VM image ID or host OS image ID. For Cloud, this value is from the provider. */ -static constexpr const char *kAwsEksClusterArn = "aws.eks.cluster.arn"; +static constexpr const char *kHostImageId = "host.image.id"; /** - * The Amazon Resource Name(s) (ARN) of the AWS log group(s). - * - *

Notes: -

+ * Name of the VM image or OS install the host was instantiated from. */ -static constexpr const char *kAwsLogGroupArns = "aws.log.group.arns"; +static constexpr const char *kHostImageName = "host.image.name"; /** - * The name(s) of the AWS log group(s) an application is writing to. + * The version string of the VM image or host OS as defined in Version Attributes. + */ +static constexpr const char *kHostImageVersion = "host.image.version"; + +/** + * Available IP addresses of the host, excluding loopback interfaces. * *

Notes: -

+ */ -static constexpr const char *kAwsLogGroupNames = "aws.log.group.names"; +static constexpr const char *kHostIp = "host.ip"; /** - * The ARN(s) of the AWS log stream(s). + * Available MAC addresses of the host, excluding loopback interfaces. * *

Notes: -

+ */ -static constexpr const char *kAwsLogStreamArns = "aws.log.stream.arns"; +static constexpr const char *kHostMac = "host.mac"; /** - * The name(s) of the AWS log stream(s) an application is writing to. + * 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. */ -static constexpr const char *kAwsLogStreamNames = "aws.log.stream.names"; +static constexpr const char *kHostName = "host.name"; /** - * The name of the Cloud Run execution being run for the - * Job, as set by the {@code - * CLOUD_RUN_EXECUTION} environment variable. + * Type of host. For Cloud, this must be the machine type. */ -static constexpr const char *kGcpCloudRunJobExecution = "gcp.cloud_run.job.execution"; +static constexpr const char *kHostType = "host.type"; /** - * The index for a task within an execution as provided by the {@code - * CLOUD_RUN_TASK_INDEX} environment variable. + * The name of the cluster. */ -static constexpr const char *kGcpCloudRunJobTaskIndex = "gcp.cloud_run.job.task_index"; +static constexpr const char *kK8sClusterName = "k8s.cluster.name"; /** - * The hostname of a GCE instance. This is the full value of the default or custom hostname. + * A pseudo-ID for the cluster, set to the UID of the {@code kube-system} namespace. + * + *

Notes: +

*/ -static constexpr const char *kGcpGceInstanceHostname = "gcp.gce.instance.hostname"; +static constexpr const char *kK8sClusterUid = "k8s.cluster.uid"; /** - * The instance name of a GCE instance. This is the value provided by {@code host.name}, the visible - * name of the instance in the Cloud Console UI, and the prefix for the default hostname of the - * instance as defined by the default - * internal DNS name. + * The name of the Container from Pod specification, must be unique within a Pod. Container runtime + * usually uses different globally unique name ({@code container.name}). */ -static constexpr const char *kGcpGceInstanceName = "gcp.gce.instance.name"; +static constexpr const char *kK8sContainerName = "k8s.container.name"; /** - * Unique identifier for the application + * Number of times the container was restarted. This attribute can be used to identify a particular + * container (running or stopped) within a container spec. */ -static constexpr const char *kHerokuAppId = "heroku.app.id"; +static constexpr const char *kK8sContainerRestartCount = "k8s.container.restart_count"; /** - * Commit hash for the current release + * The name of the CronJob. */ -static constexpr const char *kHerokuReleaseCommit = "heroku.release.commit"; +static constexpr const char *kK8sCronjobName = "k8s.cronjob.name"; /** - * Time and date the release was created + * The UID of the CronJob. */ -static constexpr const char *kHerokuReleaseCreationTimestamp = "heroku.release.creation_timestamp"; +static constexpr const char *kK8sCronjobUid = "k8s.cronjob.uid"; /** - * Name of the deployment - * environment (aka deployment tier). + * The name of the DaemonSet. */ -static constexpr const char *kDeploymentEnvironment = "deployment.environment"; +static constexpr const char *kK8sDaemonsetName = "k8s.daemonset.name"; /** - * A unique identifier representing the device - * - *

Notes: -

+ * The UID of the DaemonSet. */ -static constexpr const char *kDeviceId = "device.id"; +static constexpr const char *kK8sDaemonsetUid = "k8s.daemonset.uid"; /** - * The name of the device manufacturer - * - *

Notes: -

+ * The name of the Deployment. */ -static constexpr const char *kDeviceManufacturer = "device.manufacturer"; +static constexpr const char *kK8sDeploymentName = "k8s.deployment.name"; /** - * The model identifier for the device - * - *

Notes: -

+ * The UID of the Deployment. */ -static constexpr const char *kDeviceModelIdentifier = "device.model.identifier"; +static constexpr const char *kK8sDeploymentUid = "k8s.deployment.uid"; /** - * The marketing name for the device model - * - *

Notes: -

+ * The name of the Job. */ -static constexpr const char *kDeviceModelName = "device.model.name"; +static constexpr const char *kK8sJobName = "k8s.job.name"; /** - * The execution environment ID as a string, that will be potentially reused for other invocations - to the same function/function version. - * - *

Notes: -

+ * The UID of the Job. */ -static constexpr const char *kFaasInstance = "faas.instance"; +static constexpr const char *kK8sJobUid = "k8s.job.uid"; /** - * The amount of memory available to the serverless function converted to Bytes. - * - *

Notes: -

+ * The name of the namespace that the pod is running in. */ -static constexpr const char *kFaasMaxMemory = "faas.max_memory"; +static constexpr const char *kK8sNamespaceName = "k8s.namespace.name"; /** - * The name of the single function that this runtime instance executes. - * - *

Notes: -

+ * The name of the Node. */ -static constexpr const char *kFaasName = "faas.name"; +static constexpr const char *kK8sNodeName = "k8s.node.name"; /** - * The immutable version of the function being executed. - * - *

Notes: -

+ * The UID of the Node. */ -static constexpr const char *kFaasVersion = "faas.version"; +static constexpr const char *kK8sNodeUid = "k8s.node.uid"; /** - * The CPU architecture the host system is running on. + * The name of the Pod. */ -static constexpr const char *kHostArch = "host.arch"; +static constexpr const char *kK8sPodName = "k8s.pod.name"; /** - * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For - * non-containerized systems, this should be the {@code machine-id}. See the table below for the - * sources to use to determine the {@code machine-id} based on operating system. + * The UID of the Pod. */ -static constexpr const char *kHostId = "host.id"; +static constexpr const char *kK8sPodUid = "k8s.pod.uid"; /** - * VM image ID or host OS image ID. For Cloud, this value is from the provider. + * The name of the ReplicaSet. */ -static constexpr const char *kHostImageId = "host.image.id"; +static constexpr const char *kK8sReplicasetName = "k8s.replicaset.name"; /** - * Name of the VM image or OS install the host was instantiated from. + * The UID of the ReplicaSet. */ -static constexpr const char *kHostImageName = "host.image.name"; +static constexpr const char *kK8sReplicasetUid = "k8s.replicaset.uid"; /** - * The version string of the VM image or host OS as defined in Version Attributes. + * The name of the StatefulSet. */ -static constexpr const char *kHostImageVersion = "host.image.version"; +static constexpr const char *kK8sStatefulsetName = "k8s.statefulset.name"; /** - * Available IP addresses of the host, excluding loopback interfaces. - * - *

Notes: -

+ * The UID of the StatefulSet. */ -static constexpr const char *kHostIp = "host.ip"; +static constexpr const char *kK8sStatefulsetUid = "k8s.statefulset.uid"; /** - * Available MAC addresses of the host, excluding loopback interfaces. + * 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 *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. + */ -static constexpr const char *kHostName = "host.name"; +static constexpr const char *kOciManifestDigest = "oci.manifest.digest"; /** - * Type of host. For Cloud, this must be the machine type. + * Unique identifier for a particular build or compilation of the operating system. */ -static constexpr const char *kHostType = "host.type"; +static constexpr const char *kOsBuildId = "os.build_id"; /** - * The amount of level 2 memory cache available to the processor (in Bytes). + * Human readable (not intended to be parsed) OS version information, like e.g. reported by {@code + * ver} or {@code lsb_release -a} commands. */ -static constexpr const char *kHostCpuCacheL2Size = "host.cpu.cache.l2.size"; +static constexpr const char *kOsDescription = "os.description"; /** - * Numeric value specifying the family or generation of the CPU. + * Human readable operating system name. */ -static constexpr const char *kHostCpuFamily = "host.cpu.family"; +static constexpr const char *kOsName = "os.name"; /** - * Model identifier. It provides more granular information about the CPU, distinguishing it from - * other CPUs within the same family. + * The operating system type. */ -static constexpr const char *kHostCpuModelId = "host.cpu.model.id"; +static constexpr const char *kOsType = "os.type"; /** - * Model designation of the processor. + * The version string of the operating system as defined in Version Attributes. */ -static constexpr const char *kHostCpuModelName = "host.cpu.model.name"; +static constexpr const char *kOsVersion = "os.version"; /** - * Stepping or core revisions. + * The command used to launch the process (i.e. the command name). On Linux based systems, can be + * set to the zeroth string in {@code proc/[pid]/cmdline}. On Windows, can be set to the first + * parameter extracted from {@code GetCommandLineW}. */ -static constexpr const char *kHostCpuStepping = "host.cpu.stepping"; +static constexpr const char *kProcessCommand = "process.command"; /** - * Processor manufacturer identifier. A maximum 12-character string. - * - *

Notes: -

+ * All the command arguments (including the command/executable itself) as received by the process. + * On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according + * to the list of null-delimited strings extracted from {@code proc/[pid]/cmdline}. For libc-based + * executables, this would be the full argv vector passed to {@code main}. */ -static constexpr const char *kHostCpuVendorId = "host.cpu.vendor.id"; +static constexpr const char *kProcessCommandArgs = "process.command_args"; /** - * The name of the cluster. + * The full command used to launch the process as a single string representing the full command. On + * Windows, can be set to the result of {@code GetCommandLineW}. Do not set this if you have to + * assemble it just for monitoring; use {@code process.command_args} instead. */ -static constexpr const char *kK8sClusterName = "k8s.cluster.name"; +static constexpr const char *kProcessCommandLine = "process.command_line"; /** - * A pseudo-ID for the cluster, set to the UID of the {@code kube-system} namespace. - * - *

Notes: -

+ * The name of the process executable. On Linux based systems, can be set to the {@code Name} in + * {@code proc/[pid]/status}. On Windows, can be set to the base name of {@code + * GetProcessImageFileNameW}. */ -static constexpr const char *kK8sClusterUid = "k8s.cluster.uid"; +static constexpr const char *kProcessExecutableName = "process.executable.name"; /** - * The name of the Node. + * The full path to the process executable. On Linux based systems, can be set to the target of + * {@code proc/[pid]/exe}. On Windows, can be set to the result of {@code GetProcessImageFileNameW}. */ -static constexpr const char *kK8sNodeName = "k8s.node.name"; +static constexpr const char *kProcessExecutablePath = "process.executable.path"; /** - * The UID of the Node. + * The username of the user that owns the process. */ -static constexpr const char *kK8sNodeUid = "k8s.node.uid"; +static constexpr const char *kProcessOwner = "process.owner"; /** - * The name of the namespace that the pod is running in. + * Parent Process identifier (PPID). */ -static constexpr const char *kK8sNamespaceName = "k8s.namespace.name"; +static constexpr const char *kProcessParentPid = "process.parent_pid"; /** - * The name of the Pod. + * Process identifier (PID). */ -static constexpr const char *kK8sPodName = "k8s.pod.name"; +static constexpr const char *kProcessPid = "process.pid"; /** - * The UID of the Pod. + * An additional description about the runtime of the process, for example a specific vendor + * customization of the runtime environment. */ -static constexpr const char *kK8sPodUid = "k8s.pod.uid"; +static constexpr const char *kProcessRuntimeDescription = "process.runtime.description"; /** - * The name of the Container from Pod specification, must be unique within a Pod. Container runtime - * usually uses different globally unique name ({@code container.name}). + * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of + * the compiler. */ -static constexpr const char *kK8sContainerName = "k8s.container.name"; +static constexpr const char *kProcessRuntimeName = "process.runtime.name"; /** - * Number of times the container was restarted. This attribute can be used to identify a particular - * container (running or stopped) within a container spec. + * The version of the runtime of this process, as returned by the runtime without modification. */ -static constexpr const char *kK8sContainerRestartCount = "k8s.container.restart_count"; +static constexpr const char *kProcessRuntimeVersion = "process.runtime.version"; /** - * The name of the ReplicaSet. + * 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 *kK8sReplicasetName = "k8s.replicaset.name"; +static constexpr const char *kAndroidOsApiLevel = "android.os.api_level"; /** - * The UID of the ReplicaSet. + * Array of brand name and version separated by a space + * + *

Notes: +

*/ -static constexpr const char *kK8sReplicasetUid = "k8s.replicaset.uid"; +static constexpr const char *kBrowserBrands = "browser.brands"; /** - * The name of the Deployment. + * Preferred language of the user using the browser + * + *

Notes: +

*/ -static constexpr const char *kK8sDeploymentName = "k8s.deployment.name"; +static constexpr const char *kBrowserLanguage = "browser.language"; /** - * The UID of the Deployment. + * A boolean that is true if the browser is running on a mobile device + * + *

Notes: +

*/ -static constexpr const char *kK8sDeploymentUid = "k8s.deployment.uid"; +static constexpr const char *kBrowserMobile = "browser.mobile"; /** - * The name of the StatefulSet. + * The platform on which the browser is running + * + *

Notes: +

*/ -static constexpr const char *kK8sStatefulsetName = "k8s.statefulset.name"; +static constexpr const char *kBrowserPlatform = "browser.platform"; /** - * The UID of the StatefulSet. + * The ARN of an ECS cluster. */ -static constexpr const char *kK8sStatefulsetUid = "k8s.statefulset.uid"; +static constexpr const char *kAwsEcsClusterArn = "aws.ecs.cluster.arn"; /** - * The name of the DaemonSet. + * The Amazon Resource Name (ARN) of an ECS + * container instance. */ -static constexpr const char *kK8sDaemonsetName = "k8s.daemonset.name"; +static constexpr const char *kAwsEcsContainerArn = "aws.ecs.container.arn"; /** - * The UID of the DaemonSet. + * The launch + * type for an ECS task. */ -static constexpr const char *kK8sDaemonsetUid = "k8s.daemonset.uid"; +static constexpr const char *kAwsEcsLaunchtype = "aws.ecs.launchtype"; /** - * The name of the Job. + * The ARN of an ECS task + * definition. */ -static constexpr const char *kK8sJobName = "k8s.job.name"; +static constexpr const char *kAwsEcsTaskArn = "aws.ecs.task.arn"; /** - * The UID of the Job. + * The task definition family this task definition is a member of. */ -static constexpr const char *kK8sJobUid = "k8s.job.uid"; +static constexpr const char *kAwsEcsTaskFamily = "aws.ecs.task.family"; /** - * The name of the CronJob. + * The revision for this task definition. */ -static constexpr const char *kK8sCronjobName = "k8s.cronjob.name"; +static constexpr const char *kAwsEcsTaskRevision = "aws.ecs.task.revision"; /** - * The UID of the CronJob. + * The ARN of an EKS cluster. */ -static constexpr const char *kK8sCronjobUid = "k8s.cronjob.uid"; +static constexpr const char *kAwsEksClusterArn = "aws.eks.cluster.arn"; /** - * Unique identifier for a particular build or compilation of the operating system. + * The Amazon Resource Name(s) (ARN) of the AWS log group(s). + * + *

Notes: +

*/ -static constexpr const char *kOsBuildId = "os.build_id"; +static constexpr const char *kAwsLogGroupArns = "aws.log.group.arns"; /** - * Human readable (not intended to be parsed) OS version information, like e.g. reported by {@code - * ver} or {@code lsb_release -a} commands. + * The name(s) of the AWS log group(s) an application is writing to. + * + *

Notes: +

*/ -static constexpr const char *kOsDescription = "os.description"; +static constexpr const char *kAwsLogGroupNames = "aws.log.group.names"; /** - * Human readable operating system name. + * The ARN(s) of the AWS log stream(s). + * + *

Notes: +

*/ -static constexpr const char *kOsName = "os.name"; +static constexpr const char *kAwsLogStreamArns = "aws.log.stream.arns"; /** - * The operating system type. + * The name(s) of the AWS log stream(s) an application is writing to. */ -static constexpr const char *kOsType = "os.type"; +static constexpr const char *kAwsLogStreamNames = "aws.log.stream.names"; /** - * The version string of the operating system as defined in Version Attributes. + * The name of the Cloud Run execution being run for the + * Job, as set by the {@code + * CLOUD_RUN_EXECUTION} environment variable. */ -static constexpr const char *kOsVersion = "os.version"; +static constexpr const char *kGcpCloudRunJobExecution = "gcp.cloud_run.job.execution"; /** - * The command used to launch the process (i.e. the command name). On Linux based systems, can be - * set to the zeroth string in {@code proc/[pid]/cmdline}. On Windows, can be set to the first - * parameter extracted from {@code GetCommandLineW}. + * The index for a task within an execution as provided by the {@code + * CLOUD_RUN_TASK_INDEX} environment variable. */ -static constexpr const char *kProcessCommand = "process.command"; +static constexpr const char *kGcpCloudRunJobTaskIndex = "gcp.cloud_run.job.task_index"; /** - * All the command arguments (including the command/executable itself) as received by the process. - * On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according - * to the list of null-delimited strings extracted from {@code proc/[pid]/cmdline}. For libc-based - * executables, this would be the full argv vector passed to {@code main}. + * The hostname of a GCE instance. This is the full value of the default or custom hostname. */ -static constexpr const char *kProcessCommandArgs = "process.command_args"; +static constexpr const char *kGcpGceInstanceHostname = "gcp.gce.instance.hostname"; /** - * The full command used to launch the process as a single string representing the full command. On - * Windows, can be set to the result of {@code GetCommandLineW}. Do not set this if you have to - * assemble it just for monitoring; use {@code process.command_args} instead. + * The instance name of a GCE instance. This is the value provided by {@code host.name}, the visible + * name of the instance in the Cloud Console UI, and the prefix for the default hostname of the + * instance as defined by the default + * internal DNS name. */ -static constexpr const char *kProcessCommandLine = "process.command_line"; +static constexpr const char *kGcpGceInstanceName = "gcp.gce.instance.name"; /** - * The name of the process executable. On Linux based systems, can be set to the {@code Name} in - * {@code proc/[pid]/status}. On Windows, can be set to the base name of {@code - * GetProcessImageFileNameW}. + * Unique identifier for the application */ -static constexpr const char *kProcessExecutableName = "process.executable.name"; +static constexpr const char *kHerokuAppId = "heroku.app.id"; /** - * The full path to the process executable. On Linux based systems, can be set to the target of - * {@code proc/[pid]/exe}. On Windows, can be set to the result of {@code GetProcessImageFileNameW}. + * Commit hash for the current release */ -static constexpr const char *kProcessExecutablePath = "process.executable.path"; +static constexpr const char *kHerokuReleaseCommit = "heroku.release.commit"; /** - * The username of the user that owns the process. + * Time and date the release was created */ -static constexpr const char *kProcessOwner = "process.owner"; +static constexpr const char *kHerokuReleaseCreationTimestamp = "heroku.release.creation_timestamp"; /** - * Parent Process identifier (PID). + * Name of the deployment +environment (aka deployment tier). + * + *

Notes: +

*/ -static constexpr const char *kProcessParentPid = "process.parent_pid"; +static constexpr const char *kDeploymentEnvironment = "deployment.environment"; /** - * Process identifier (PID). + * The execution environment ID as a string, that will be potentially reused for other invocations + to the same function/function version. + * + *

Notes: +

*/ -static constexpr const char *kProcessPid = "process.pid"; +static constexpr const char *kFaasInstance = "faas.instance"; /** - * An additional description about the runtime of the process, for example a specific vendor - * customization of the runtime environment. + * The amount of memory available to the serverless function converted to Bytes. + * + *

Notes: +

*/ -static constexpr const char *kProcessRuntimeDescription = "process.runtime.description"; +static constexpr const char *kFaasMaxMemory = "faas.max_memory"; /** - * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of - * the compiler. + * The name of the single function that this runtime instance executes. + * + *

Notes: +

*/ -static constexpr const char *kProcessRuntimeName = "process.runtime.name"; +static constexpr const char *kFaasName = "faas.name"; /** - * The version of the runtime of this process, as returned by the runtime without modification. + * The immutable version of the function being executed. + * + *

Notes: +

*/ -static constexpr const char *kProcessRuntimeVersion = "process.runtime.version"; +static constexpr const char *kFaasVersion = "faas.version"; /** * Logical name of the service. @@ -904,18 +913,12 @@ static constexpr const char *kOtelScopeVersion = "otel.scope.version"; /** * Deprecated, use the {@code otel.scope.name} attribute. - * - * @deprecated Deprecated, use the `otel.scope.name` attribute. */ -OPENTELEMETRY_DEPRECATED static constexpr const char *kOtelLibraryName = "otel.library.name"; /** * Deprecated, use the {@code otel.scope.version} attribute. - * - * @deprecated Deprecated, use the `otel.scope.version` attribute. */ -OPENTELEMETRY_DEPRECATED static constexpr const char *kOtelLibraryVersion = "otel.library.version"; // Enum definitions @@ -995,14 +998,6 @@ static constexpr const char *kIbmCloud = "ibm_cloud"; static constexpr const char *kTencentCloud = "tencent_cloud"; } // namespace CloudProviderValues -namespace AwsEcsLaunchtypeValues -{ -/** ec2. */ -static constexpr const char *kEc2 = "ec2"; -/** fargate. */ -static constexpr const char *kFargate = "fargate"; -} // namespace AwsEcsLaunchtypeValues - namespace HostArchValues { /** AMD64. */ @@ -1049,6 +1044,14 @@ static constexpr const char *kSolaris = "solaris"; static constexpr const char *kZOs = "z_os"; } // namespace OsTypeValues +namespace AwsEcsLaunchtypeValues +{ +/** ec2. */ +static constexpr const char *kEc2 = "ec2"; +/** fargate. */ +static constexpr const char *kFargate = "fargate"; +} // namespace AwsEcsLaunchtypeValues + namespace TelemetrySdkLanguageValues { /** cpp. */