diff --git a/CHANGELOG.md b/CHANGELOG.md index f889a287f7..678e2d6b4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,23 +15,74 @@ Increment the: ## [Unreleased] +## [1.12.0] 2023-10-16 + +* [BUILD] Support `pkg-config` + [#2269](https://github.com/open-telemetry/opentelemetry-cpp/pull/2269) +* [CI] Do not automatically close stale issues + [#2277](https://github.com/open-telemetry/opentelemetry-cpp/pull/2277) +* [CI] Benchmark workflow fails, C++14 required to build grpc + [#2278](https://github.com/open-telemetry/opentelemetry-cpp/pull/2278) +* [SDK] Increase metric name maximum length from 63 to 255 characters + [#2284](https://github.com/open-telemetry/opentelemetry-cpp/pull/2284) +* [SEMANTIC CONVENTION] Deprecated semconv (in the spec) + not deprecated (in C++) + [#2285](https://github.com/open-telemetry/opentelemetry-cpp/pull/2285) +* [SDK] Remove unused member variables from SyncMetricStorage + [#2294](https://github.com/open-telemetry/opentelemetry-cpp/pull/2294) * [DEPRECATION] Deprecate ZPAGES [#2291](https://github.com/open-telemetry/opentelemetry-cpp/pull/2291) -* [EXPORTER] Prometheus exporter emit resource attributes - [#2301](https://github.com/open-telemetry/opentelemetry-cpp/pull/2301) -* [EXPORTER] Remove explicit timestamps from metric points exported by Prometheus +* [API] Deliver ABI breaking changes + [#2222](https://github.com/open-telemetry/opentelemetry-cpp/pull/2222) +* [SDK] Allow metric instrument names to contain / characters + [#2310](https://github.com/open-telemetry/opentelemetry-cpp/pull/2310) +* [SDK] Fix Observable Counters/UpDownCounters + [#2298](https://github.com/open-telemetry/opentelemetry-cpp/pull/2298) +* [SDK] Add exemplar reservoir to async metric storage + [#2319](https://github.com/open-telemetry/opentelemetry-cpp/pull/2319) +* [TEST] Fix lifetime issues in prometheus test utils + [#2322](https://github.com/open-telemetry/opentelemetry-cpp/pull/2322) +* [EXPORTER] Prometheus: Remove explicit timestamps from metric points [#2324](https://github.com/open-telemetry/opentelemetry-cpp/pull/2324) -* [EXPORTER] Handle attribute key collisions caused by sanitation +* [EXPORTER] Prometheus: Handle attribute key collisions from sanitation [#2326](https://github.com/open-telemetry/opentelemetry-cpp/pull/2326) -* [EXPORTER] Replace colons with underscores when converting to Prometheus label +* [EXPORTER] Prometheus cleanup, test with TranslateToPrometheus + [#2329](https://github.com/open-telemetry/opentelemetry-cpp/pull/2329) +* [SDK] Fix log message in Meter::RegisterSyncMetricStorage + [#2325](https://github.com/open-telemetry/opentelemetry-cpp/pull/2325) +* [DOC] Simplify the project status section + [#2332](https://github.com/open-telemetry/opentelemetry-cpp/pull/2332) +* [EXPORTER] Prometheus: Sanitize labels according to spec [#2330](https://github.com/open-telemetry/opentelemetry-cpp/pull/2330) +* [SDK] Fix deadlock when shuting down http client + [#2337](https://github.com/open-telemetry/opentelemetry-cpp/pull/2337) +* [Exporter] Group spans by resource and instrumentation scope + in OTLP export requests + [#2335](https://github.com/open-telemetry/opentelemetry-cpp/pull/2335) +* [BUILD] Need fine-grained HAVE_CPP_STDLIB + [#2304](https://github.com/open-telemetry/opentelemetry-cpp/pull/2304) * [API] Add InstrumentationScope attributes in MeterProvider::GetMeter() [#2224](https://github.com/open-telemetry/opentelemetry-cpp/pull/2224) * [REMOVAL] Drop C++11 support [#2342](https://github.com/open-telemetry/opentelemetry-cpp/pull/2342) -* [EXPORTER] Add otel_scope_name and otel_scope_version labels to the prometheus - exporter. +* [EXPORTER] prometheus: add otel_scope_name and otel_scope_version labels [#2293](https://github.com/open-telemetry/opentelemetry-cpp/pull/2293) +* [EXPORTER] Export resource for prometheus + [#2301](https://github.com/open-telemetry/opentelemetry-cpp/pull/2301) +* [BUILD] error: read-only reference ‘value’ used as ‘asm’ output + [#2354](https://github.com/open-telemetry/opentelemetry-cpp/pull/2354) +* [BUILD] Build break with external CMake nlohman_json package + [#2353](https://github.com/open-telemetry/opentelemetry-cpp/pull/2353) +* [BUILD] Upgrade libcurl to version 8.4.0 + [#2358](https://github.com/open-telemetry/opentelemetry-cpp/pull/2358) +* [BUILD] Fix opentracing-shim when added in super project + [#2356](https://github.com/open-telemetry/opentelemetry-cpp/pull/2356) +* [BUILD] Fix protoc searching with non-imported protobuf::protoc target + [#2362](https://github.com/open-telemetry/opentelemetry-cpp/pull/2362) +* [BUILD] Support to use different cmake package CONFIG of dependencies + [#2263](https://github.com/open-telemetry/opentelemetry-cpp/pull/2263) +* [SEMANTIC CONVENTION] Upgrade to semconv 1.22.0 + [#2368](https://github.com/open-telemetry/opentelemetry-cpp/pull/2368) Important changes: @@ -70,6 +121,11 @@ Breaking changes: [#2342](https://github.com/open-telemetry/opentelemetry-cpp/pull/2342) * Building with C++11 is no longer supported. +Deprecations: + +* [DEPRECATION] Deprecate ZPAGES + [#2291](https://github.com/open-telemetry/opentelemetry-cpp/pull/2291) + ## [1.11.0] 2023-08-21 * [BUILD] Fix more cases for symbol name for 32-bit win32 DLL build diff --git a/CMakeLists.txt b/CMakeLists.txt index f57ce47779..4af81bf0e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -688,6 +688,7 @@ if(NOT WITH_API_ONLY) endif() include(cmake/opentelemetry-build-external-component.cmake) +include(cmake/patch-imported-config.cmake) if(OPENTELEMETRY_INSTALL) # Export cmake config and support find_packages(opentelemetry-cpp CONFIG) diff --git a/api/include/opentelemetry/trace/semantic_conventions.h b/api/include/opentelemetry/trace/semantic_conventions.h index c46b41bc52..16d6562ee9 100644 --- a/api/include/opentelemetry/trace/semantic_conventions.h +++ b/api/include/opentelemetry/trace/semantic_conventions.h @@ -22,285 +22,291 @@ namespace SemanticConventions /** * The URL of the OpenTelemetry schema for these keys and values. */ -static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.21.0"; +static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.22.0"; /** - * Client address - unix domain socket name, IPv4 or IPv6 address. + * 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 (e.g. proxies) + if it's available. */ static constexpr const char *kClientAddress = "client.address"; /** - * Client port number + * Client port number. * *

Notes:

+ {@code client.port} SHOULD represent the client port behind any intermediaries (e.g. proxies) if + it's available. */ static constexpr const char *kClientPort = "client.port"; /** - * Immediate client peer address - unix domain socket name, IPv4 or IPv6 address. - */ -static constexpr const char *kClientSocketAddress = "client.socket.address"; - -/** - * Immediate client peer port number + * Deprecated, use {@code server.address}. + * + * @deprecated Deprecated, use `server.address`. */ -static constexpr const char *kClientSocketPort = "client.socket.port"; +OPENTELEMETRY_DEPRECATED +static constexpr const char *kNetHostName = "net.host.name"; /** - * Deprecated, use {@code http.request.method} instead. + * Deprecated, use {@code server.port}. * - * @deprecated Deprecated, use `http.request.method` instead. + * @deprecated Deprecated, use `server.port`. */ OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpMethod = "http.method"; +static constexpr const char *kNetHostPort = "net.host.port"; /** - * Deprecated, use {@code http.response.status_code} instead. + * Deprecated, use {@code server.address} on client spans and {@code client.address} on server + * spans. * - * @deprecated Deprecated, use `http.response.status_code` instead. + * @deprecated Deprecated, use `server.address` on client spans and `client.address` on server + * spans. */ OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpStatusCode = "http.status_code"; +static constexpr const char *kNetPeerName = "net.peer.name"; /** - * Deprecated, use {@code url.scheme} instead. + * Deprecated, use {@code server.port} on client spans and {@code client.port} on server spans. * - * @deprecated Deprecated, use `url.scheme` instead. + * @deprecated Deprecated, use `server.port` on client spans and `client.port` on server spans. */ OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpScheme = "http.scheme"; +static constexpr const char *kNetPeerPort = "net.peer.port"; /** - * Deprecated, use {@code url.full} instead. + * Deprecated, use {@code network.protocol.name}. * - * @deprecated Deprecated, use `url.full` instead. + * @deprecated Deprecated, use `network.protocol.name`. */ OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpUrl = "http.url"; +static constexpr const char *kNetProtocolName = "net.protocol.name"; /** - * Deprecated, use {@code url.path} and {@code url.query} instead. + * Deprecated, use {@code network.protocol.version}. * - * @deprecated Deprecated, use `url.path` and `url.query` instead. + * @deprecated Deprecated, use `network.protocol.version`. */ OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpTarget = "http.target"; +static constexpr const char *kNetProtocolVersion = "net.protocol.version"; /** - * Deprecated, use {@code http.request.body.size} instead. + * Deprecated, use {@code network.transport} and {@code network.type}. * - * @deprecated Deprecated, use `http.request.body.size` instead. + * @deprecated Deprecated, use `network.transport` and `network.type`. */ OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpRequestContentLength = "http.request_content_length"; +static constexpr const char *kNetSockFamily = "net.sock.family"; /** - * Deprecated, use {@code http.response.body.size} instead. + * Deprecated, use {@code network.local.address}. * - * @deprecated Deprecated, use `http.response.body.size` instead. + * @deprecated Deprecated, use `network.local.address`. */ OPENTELEMETRY_DEPRECATED -static constexpr const char *kHttpResponseContentLength = "http.response_content_length"; +static constexpr const char *kNetSockHostAddr = "net.sock.host.addr"; /** - * Deprecated, use {@code server.socket.domain} on client spans. + * Deprecated, use {@code network.local.port}. * - * @deprecated Deprecated, use `server.socket.domain` on client spans. + * @deprecated Deprecated, use `network.local.port`. */ OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockPeerName = "net.sock.peer.name"; +static constexpr const char *kNetSockHostPort = "net.sock.host.port"; /** - * Deprecated, use {@code server.socket.address} on client spans and {@code client.socket.address} - * on server spans. + * Deprecated, use {@code network.peer.address}. * - * @deprecated Deprecated, use `server.socket.address` on client spans and `client.socket.address` - * on server spans. + * @deprecated Deprecated, use `network.peer.address`. */ OPENTELEMETRY_DEPRECATED static constexpr const char *kNetSockPeerAddr = "net.sock.peer.addr"; /** - * Deprecated, use {@code server.socket.port} on client spans and {@code client.socket.port} on - * server spans. + * Deprecated, no replacement at this time. * - * @deprecated Deprecated, use `server.socket.port` on client spans and `client.socket.port` on - * server spans. + * @deprecated Deprecated, no replacement at this time. */ OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockPeerPort = "net.sock.peer.port"; +static constexpr const char *kNetSockPeerName = "net.sock.peer.name"; /** - * Deprecated, use {@code server.address} on client spans and {@code client.address} on server - * spans. + * Deprecated, use {@code network.peer.port}. * - * @deprecated Deprecated, use `server.address` on client spans and `client.address` on server - * spans. + * @deprecated Deprecated, use `network.peer.port`. */ OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetPeerName = "net.peer.name"; +static constexpr const char *kNetSockPeerPort = "net.sock.peer.port"; /** - * Deprecated, use {@code server.port} on client spans and {@code client.port} on server spans. + * Deprecated, use {@code network.transport}. * - * @deprecated Deprecated, use `server.port` on client spans and `client.port` on server spans. + * @deprecated Deprecated, use `network.transport`. */ OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetPeerPort = "net.peer.port"; +static constexpr const char *kNetTransport = "net.transport"; /** - * Deprecated, use {@code server.address}. + * Destination address - domain name if available without reverse DNS lookup, otherwise IP address + or Unix domain socket name. * - * @deprecated Deprecated, use `server.address`. + *

Notes: +

*/ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetHostName = "net.host.name"; +static constexpr const char *kDestinationAddress = "destination.address"; /** - * Deprecated, use {@code server.port}. - * - * @deprecated Deprecated, use `server.port`. + * Destination port number */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetHostPort = "net.host.port"; +static constexpr const char *kDestinationPort = "destination.port"; /** - * Deprecated, use {@code server.socket.address}. + * Describes a class of error the operation ended with. * - * @deprecated Deprecated, use `server.socket.address`. + *

Notes: +

*/ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockHostAddr = "net.sock.host.addr"; +static constexpr const char *kErrorType = "error.type"; /** - * Deprecated, use {@code server.socket.port}. - * - * @deprecated Deprecated, use `server.socket.port`. + * The exception message. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockHostPort = "net.sock.host.port"; +static constexpr const char *kExceptionMessage = "exception.message"; /** - * Deprecated, use {@code network.transport}. - * - * @deprecated Deprecated, use `network.transport`. + * 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 *kNetTransport = "net.transport"; +static constexpr const char *kExceptionStacktrace = "exception.stacktrace"; /** - * Deprecated, use {@code network.protocol.name}. - * - * @deprecated Deprecated, use `network.protocol.name`. + * 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. */ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetProtocolName = "net.protocol.name"; +static constexpr const char *kExceptionType = "exception.type"; /** - * Deprecated, use {@code network.protocol.version}. + * The name of the invoked function. * - * @deprecated Deprecated, use `network.protocol.version`. + *

Notes: +

*/ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetProtocolVersion = "net.protocol.version"; +static constexpr const char *kFaasInvokedName = "faas.invoked_name"; /** - * Deprecated, use {@code network.transport} and {@code network.type}. + * The cloud provider of the invoked function. * - * @deprecated Deprecated, use `network.transport` and `network.type`. + *

Notes: +

*/ -OPENTELEMETRY_DEPRECATED -static constexpr const char *kNetSockFamily = "net.sock.family"; +static constexpr const char *kFaasInvokedProvider = "faas.invoked_provider"; /** - * The domain name of the destination system. + * The cloud region of the invoked function. * *

Notes: -

+ */ -static constexpr const char *kDestinationDomain = "destination.domain"; +static constexpr const char *kFaasInvokedRegion = "faas.invoked_region"; /** - * Peer address, for example IP address or UNIX socket name. + * Type of the trigger which caused this function invocation. */ -static constexpr const char *kDestinationAddress = "destination.address"; +static constexpr const char *kFaasTrigger = "faas.trigger"; /** - * Peer port number + * The {@code service.name} of the remote service. + * SHOULD be equal to the actual {@code service.name} resource attribute of the remote service if + * any. */ -static constexpr const char *kDestinationPort = "destination.port"; +static constexpr const char *kPeerService = "peer.service"; /** - * 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. + * Username or client_id extracted from the access token or Authorization header in the inbound + * request from outside the system. */ -static constexpr const char *kExceptionType = "exception.type"; +static constexpr const char *kEnduserId = "enduser.id"; /** - * The exception message. + * Actual/assumed role the client is making the request under extracted from token or application + * security context. */ -static constexpr const char *kExceptionMessage = "exception.message"; +static constexpr const char *kEnduserRole = "enduser.role"; /** - * 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. + * Scopes or granted authorities the client currently possesses extracted from token or application + * security context. The value would come from the scope associated with an OAuth 2.0 Access Token or an attribute + * value in a SAML 2.0 + * Assertion. */ -static constexpr const char *kExceptionStacktrace = "exception.stacktrace"; +static constexpr const char *kEnduserScope = "enduser.scope"; /** - * HTTP request method. - * - *

Notes: -

+ * Whether the thread is daemon or not. */ -static constexpr const char *kHttpRequestMethod = "http.request.method"; +static constexpr const char *kThreadDaemon = "thread.daemon"; /** - * HTTP response status code. + * Current "managed" thread ID (as opposed to OS thread ID). */ -static constexpr const char *kHttpResponseStatusCode = "http.response.status_code"; +static constexpr const char *kThreadId = "thread.id"; /** - * The matched route (path template in the format used by the respective server framework). See note -below - * - *

Notes: -

+ * Current thread name. */ -static constexpr const char *kHttpRoute = "http.route"; +static constexpr const char *kThreadName = "thread.name"; /** - * The name identifies the event. + * 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 *kEventName = "event.name"; +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. @@ -311,6 +317,11 @@ unrelated events. */ static constexpr const char *kEventDomain = "event.domain"; +/** + * The name identifies the event. + */ +static constexpr const char *kEventName = "event.name"; + /** * A unique identifier for the Log Record. * @@ -333,14 +344,14 @@ static constexpr const char *kLogIostream = "log.iostream"; static constexpr const char *kLogFileName = "log.file.name"; /** - * The full path to the file. + * The basename of the file, with symlinks resolved. */ -static constexpr const char *kLogFilePath = "log.file.path"; +static constexpr const char *kLogFileNameResolved = "log.file.name_resolved"; /** - * The basename of the file, with symlinks resolved. + * The full path to the file. */ -static constexpr const char *kLogFileNameResolved = "log.file.name_resolved"; +static constexpr const char *kLogFilePath = "log.file.path"; /** * The full path to the file, with symlinks resolved. @@ -348,9 +359,27 @@ static constexpr const char *kLogFileNameResolved = "log.file.name_resolved"; static constexpr const char *kLogFilePathResolved = "log.file.path_resolved"; /** - * The type of memory. + * 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 + */ +static constexpr const char *kPoolName = "pool.name"; + +/** + * The state of a connection in the pool + */ +static constexpr const char *kState = "state"; + +/** + * Name of the buffer pool. + * + *

Notes: +

*/ -static constexpr const char *kType = "type"; +static constexpr const char *kJvmBufferPoolName = "jvm.buffer.pool.name"; /** * Name of the memory pool. @@ -360,570 +389,669 @@ static constexpr const char *kType = "type"; href="https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()">MemoryPoolMXBean#getName(). */ -static constexpr const char *kPool = "pool"; +static constexpr const char *kJvmMemoryPoolName = "jvm.memory.pool.name"; /** - * Logical server hostname, matches server FQDN if available, and IP or socket address if FQDN is - * not known. + * The type of memory. */ -static constexpr const char *kServerAddress = "server.address"; +static constexpr const char *kJvmMemoryType = "jvm.memory.type"; /** - * Logical server port number + * The device identifier */ -static constexpr const char *kServerPort = "server.port"; +static constexpr const char *kSystemDevice = "system.device"; /** - * The domain name of an immediate peer. - * - *

Notes: -

+ * The logical CPU number [0..n-1] */ -static constexpr const char *kServerSocketDomain = "server.socket.domain"; +static constexpr const char *kSystemCpuLogicalNumber = "system.cpu.logical_number"; /** - * Physical server IP address or Unix socket address. If set from the client, should simply use the - * socket's peer address, and not attempt to find any actual server IP (i.e., if set from client, - * this may represent some proxy server instead of the logical server). + * The state of the CPU */ -static constexpr const char *kServerSocketAddress = "server.socket.address"; +static constexpr const char *kSystemCpuState = "system.cpu.state"; /** - * Physical server port. + * The memory state */ -static constexpr const char *kServerSocketPort = "server.socket.port"; +static constexpr const char *kSystemMemoryState = "system.memory.state"; /** - * The domain name of the source system. - * - *

Notes: -

+ * The paging access direction */ -static constexpr const char *kSourceDomain = "source.domain"; +static constexpr const char *kSystemPagingDirection = "system.paging.direction"; /** - * Source address, for example IP address or Unix socket name. + * The memory paging state */ -static constexpr const char *kSourceAddress = "source.address"; +static constexpr const char *kSystemPagingState = "system.paging.state"; /** - * Source port number + * The memory paging type */ -static constexpr const char *kSourcePort = "source.port"; +static constexpr const char *kSystemPagingType = "system.paging.type"; /** - * 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: -

+ * The disk operation direction */ -static constexpr const char *kAwsLambdaInvokedArn = "aws.lambda.invoked_arn"; +static constexpr const char *kSystemDiskDirection = "system.disk.direction"; /** - * The event_id - * uniquely identifies the event. + * The filesystem mode */ -static constexpr const char *kCloudeventsEventId = "cloudevents.event_id"; +static constexpr const char *kSystemFilesystemMode = "system.filesystem.mode"; /** - * The source - * identifies the context in which an event happened. + * The filesystem mount path */ -static constexpr const char *kCloudeventsEventSource = "cloudevents.event_source"; +static constexpr const char *kSystemFilesystemMountpoint = "system.filesystem.mountpoint"; /** - * The version of - * the CloudEvents specification which the event uses. + * The filesystem state */ -static constexpr const char *kCloudeventsEventSpecVersion = "cloudevents.event_spec_version"; +static constexpr const char *kSystemFilesystemState = "system.filesystem.state"; /** - * The event_type - * contains a value describing the type of event related to the originating occurrence. + * The filesystem type */ -static constexpr const char *kCloudeventsEventType = "cloudevents.event_type"; +static constexpr const char *kSystemFilesystemType = "system.filesystem.type"; /** - * The subject of - * the event in the context of the event producer (identified by source). + * */ -static constexpr const char *kCloudeventsEventSubject = "cloudevents.event_subject"; +static constexpr const char *kSystemNetworkDirection = "system.network.direction"; /** - * Parent-child Reference type - * - *

Notes: -

+ * A stateless protocol MUST NOT set this attribute */ -static constexpr const char *kOpentracingRefType = "opentracing.ref_type"; +static constexpr const char *kSystemNetworkState = "system.network.state"; /** - * An identifier for the database management system (DBMS) product being used. See below for a list - * of well-known identifiers. + * The process state, e.g., Linux Process State + * Codes */ -static constexpr const char *kDbSystem = "db.system"; +static constexpr const char *kSystemProcessesStatus = "system.processes.status"; /** - * The connection string used to connect to the database. It is recommended to remove embedded - * credentials. + * Local address of the network connection - IP address or Unix domain socket name. */ -static constexpr const char *kDbConnectionString = "db.connection_string"; +static constexpr const char *kNetworkLocalAddress = "network.local.address"; /** - * Username for accessing the database. + * Local port number of the network connection. */ -static constexpr const char *kDbUser = "db.user"; +static constexpr const char *kNetworkLocalPort = "network.local.port"; /** - * The fully-qualified class name of the Java Database Connectivity - * (JDBC) driver used to connect. + * Peer address of the network connection - IP address or Unix domain socket name. */ -static constexpr const char *kDbJdbcDriverClassname = "db.jdbc.driver_classname"; +static constexpr const char *kNetworkPeerAddress = "network.peer.address"; /** - * 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). + * 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 *kDbName = "db.name"; +static constexpr const char *kNetworkProtocolName = "network.protocol.name"; /** - * The database statement being executed. + * Version of the protocol specified in {@code network.protocol.name}. + * + *

Notes: +

*/ -static constexpr const char *kDbStatement = "db.statement"; +static constexpr const char *kNetworkProtocolVersion = "network.protocol.version"; /** - * The name of the operation being executed, e.g. the MongoDB command - name such as {@code findAndModify}, or the SQL keyword. + * OSI transport layer or inter-process communication +method. * *

Notes: -

+ */ -static constexpr const char *kDbOperation = "db.operation"; +static constexpr const char *kNetworkTransport = "network.transport"; /** - * The Microsoft SQL Server instance - name connecting to. This name is used to determine the port of a named instance. + * OSI network layer or non-OSI equivalent. * *

Notes: -

+ */ -static constexpr const char *kDbMssqlInstanceName = "db.mssql.instance_name"; +static constexpr const char *kNetworkType = "network.type"; /** - * The fetch size used for paging, i.e. how many rows will be returned at once. + * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. */ -static constexpr const char *kDbCassandraPageSize = "db.cassandra.page_size"; +static constexpr const char *kNetworkCarrierIcc = "network.carrier.icc"; /** - * The consistency level of the query. Based on consistency values from CQL. + * The mobile carrier country code. */ -static constexpr const char *kDbCassandraConsistencyLevel = "db.cassandra.consistency_level"; +static constexpr const char *kNetworkCarrierMcc = "network.carrier.mcc"; /** - * The name of the primary table that the operation is acting upon, including the keyspace name (if - applicable). + * The mobile carrier network code. + */ +static constexpr const char *kNetworkCarrierMnc = "network.carrier.mnc"; + +/** + * The name of the mobile carrier. + */ +static constexpr const char *kNetworkCarrierName = "network.carrier.name"; + +/** + * 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 *kNetworkConnectionSubtype = "network.connection.subtype"; + +/** + * The internet connection type. + */ +static constexpr const char *kNetworkConnectionType = "network.connection.type"; + +/** + * Deprecated, use {@code http.request.method} instead. * - *

Notes: -

+ * @deprecated Deprecated, use `http.request.method` instead. */ -static constexpr const char *kDbCassandraTable = "db.cassandra.table"; +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpMethod = "http.method"; /** - * Whether or not the query is idempotent. + * Deprecated, use {@code http.request.body.size} instead. + * + * @deprecated Deprecated, use `http.request.body.size` instead. */ -static constexpr const char *kDbCassandraIdempotence = "db.cassandra.idempotence"; +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpRequestContentLength = "http.request_content_length"; /** - * The number of times a query was speculatively executed. Not set or {@code 0} if the query was not - * executed speculatively. + * Deprecated, use {@code http.response.body.size} instead. + * + * @deprecated Deprecated, use `http.response.body.size` instead. */ -static constexpr const char *kDbCassandraSpeculativeExecutionCount = - "db.cassandra.speculative_execution_count"; +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpResponseContentLength = "http.response_content_length"; /** - * The ID of the coordinating node for a query. + * Deprecated, use {@code url.scheme} instead. + * + * @deprecated Deprecated, use `url.scheme` instead. */ -static constexpr const char *kDbCassandraCoordinatorId = "db.cassandra.coordinator.id"; +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpScheme = "http.scheme"; /** - * The data center of the coordinating node for a query. + * Deprecated, use {@code http.response.status_code} instead. + * + * @deprecated Deprecated, use `http.response.status_code` instead. */ -static constexpr const char *kDbCassandraCoordinatorDc = "db.cassandra.coordinator.dc"; +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpStatusCode = "http.status_code"; /** - * 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. + * Deprecated, use {@code url.path} and {@code url.query} instead. + * + * @deprecated Deprecated, use `url.path` and `url.query` instead. */ -static constexpr const char *kDbRedisDatabaseIndex = "db.redis.database_index"; +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpTarget = "http.target"; /** - * The collection being accessed within the database stated in {@code db.name}. + * Deprecated, use {@code url.full} instead. + * + * @deprecated Deprecated, use `url.full` instead. */ -static constexpr const char *kDbMongodbCollection = "db.mongodb.collection"; +OPENTELEMETRY_DEPRECATED +static constexpr const char *kHttpUrl = "http.url"; /** - * The name of the primary table that the operation is acting upon, including the database name (if - applicable). + * 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. * *

Notes: -

+ */ -static constexpr const char *kDbSqlTable = "db.sql.table"; +static constexpr const char *kHttpRequestMethod = "http.request.method"; /** - * Unique Cosmos client instance id. + * Original HTTP method sent by the client in the request line. */ -static constexpr const char *kDbCosmosdbClientId = "db.cosmosdb.client_id"; +static constexpr const char *kHttpRequestMethodOriginal = "http.request.method_original"; /** - * CosmosDB Operation Type. + * The ordinal number of request resending attempt (for any reason, including redirects). + * + *

Notes: +

*/ -static constexpr const char *kDbCosmosdbOperationType = "db.cosmosdb.operation_type"; +static constexpr const char *kHttpResendCount = "http.resend_count"; /** - * Cosmos client connection mode. + * The size of the response 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 *kDbCosmosdbConnectionMode = "db.cosmosdb.connection_mode"; +static constexpr const char *kHttpResponseBodySize = "http.response.body.size"; /** - * Cosmos DB container name. + * HTTP response status code. */ -static constexpr const char *kDbCosmosdbContainer = "db.cosmosdb.container"; +static constexpr const char *kHttpResponseStatusCode = "http.response.status_code"; /** - * Request payload size in bytes + * The matched route (path template in the format used by the respective server framework). See note +below + * + *

Notes: +

*/ -static constexpr const char *kDbCosmosdbRequestContentLength = "db.cosmosdb.request_content_length"; +static constexpr const char *kHttpRoute = "http.route"; /** - * Cosmos DB status code. + * Server address - domain name if available without reverse DNS lookup, otherwise IP address or +Unix domain socket name. + * + *

Notes: +

*/ -static constexpr const char *kDbCosmosdbStatusCode = "db.cosmosdb.status_code"; +static constexpr const char *kServerAddress = "server.address"; /** - * Cosmos DB sub status code. + * Server port number. + * + *

Notes: +

*/ -static constexpr const char *kDbCosmosdbSubStatusCode = "db.cosmosdb.sub_status_code"; +static constexpr const char *kServerPort = "server.port"; /** - * RU consumed for that operation + * A unique id to identify a session. */ -static constexpr const char *kDbCosmosdbRequestCharge = "db.cosmosdb.request_charge"; +static constexpr const char *kSessionId = "session.id"; /** - * Name of the code, either "OK" or "ERROR". MUST NOT be set if the status code - * is UNSET. + * Source address - domain name if available without reverse DNS lookup, otherwise IP address or + Unix domain socket name. + * + *

Notes: +

*/ -static constexpr const char *kOtelStatusCode = "otel.status_code"; +static constexpr const char *kSourceAddress = "source.address"; /** - * Description of the Status if it has a value, otherwise not set. + * Source port number */ -static constexpr const char *kOtelStatusDescription = "otel.status_description"; +static constexpr const char *kSourcePort = "source.port"; /** - * Type of the trigger which caused this function invocation. + * 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 *kFaasTrigger = "faas.trigger"; +static constexpr const char *kAwsLambdaInvokedArn = "aws.lambda.invoked_arn"; /** - * The invocation ID of the current function invocation. + * The event_id + * uniquely identifies the event. */ -static constexpr const char *kFaasInvocationId = "faas.invocation_id"; +static constexpr const char *kCloudeventsEventId = "cloudevents.event_id"; /** - * 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 source + * identifies the context in which an event happened. */ -static constexpr const char *kFaasDocumentCollection = "faas.document.collection"; +static constexpr const char *kCloudeventsEventSource = "cloudevents.event_source"; /** - * Describes the type of the operation that was performed on the data. + * The version of + * the CloudEvents specification which the event uses. */ -static constexpr const char *kFaasDocumentOperation = "faas.document.operation"; +static constexpr const char *kCloudeventsEventSpecVersion = "cloudevents.event_spec_version"; /** - * A string containing the time when the data was accessed in the ISO 8601 format expressed in UTC. + * The subject of + * the event in the context of the event producer (identified by source). */ -static constexpr const char *kFaasDocumentTime = "faas.document.time"; +static constexpr const char *kCloudeventsEventSubject = "cloudevents.event_subject"; /** - * 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 event_type + * contains a value describing the type of event related to the originating occurrence. */ -static constexpr const char *kFaasDocumentName = "faas.document.name"; +static constexpr const char *kCloudeventsEventType = "cloudevents.event_type"; /** - * A string containing the function invocation time in the ISO 8601 format expressed in UTC. + * Parent-child Reference type + * + *

Notes: +

*/ -static constexpr const char *kFaasTime = "faas.time"; +static constexpr const char *kOpentracingRefType = "opentracing.ref_type"; /** - * A string containing the schedule period as Cron - * Expression. + * The connection string used to connect to the database. It is recommended to remove embedded + * credentials. */ -static constexpr const char *kFaasCron = "faas.cron"; +static constexpr const char *kDbConnectionString = "db.connection_string"; /** - * A boolean that is true if the serverless function is executed for the first time (aka - * cold-start). + * The fully-qualified class name of the Java Database Connectivity + * (JDBC) driver used to connect. */ -static constexpr const char *kFaasColdstart = "faas.coldstart"; +static constexpr const char *kDbJdbcDriverClassname = "db.jdbc.driver_classname"; /** - * The name of the invoked function. + * 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 *kFaasInvokedName = "faas.invoked_name"; +static constexpr const char *kDbName = "db.name"; /** - * The cloud provider of the invoked function. + * 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 *kFaasInvokedProvider = "faas.invoked_provider"; +static constexpr const char *kDbOperation = "db.operation"; /** - * The cloud region of the invoked function. + * 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"; + +/** + * 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 *kFaasInvokedRegion = "faas.invoked_region"; +static constexpr const char *kDbMssqlInstanceName = "db.mssql.instance_name"; /** - * The unique identifier of the feature flag. + * The consistency level of the query. Based on consistency values from CQL. */ -static constexpr const char *kFeatureFlagKey = "feature_flag.key"; +static constexpr const char *kDbCassandraConsistencyLevel = "db.cassandra.consistency_level"; /** - * The name of the service provider that performs the flag evaluation. + * The data center of the coordinating node for a query. */ -static constexpr const char *kFeatureFlagProviderName = "feature_flag.provider_name"; +static constexpr const char *kDbCassandraCoordinatorDc = "db.cassandra.coordinator.dc"; /** - * SHOULD be a semantic identifier for a value. If one is unavailable, a stringified version of the -value can be used. + * 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 *kFeatureFlagVariant = "feature_flag.variant"; +static constexpr const char *kDbCassandraTable = "db.cassandra.table"; /** - * OSI Transport Layer or Inter-process Communication - * method. The value SHOULD be normalized to lowercase. + * 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 *kNetworkTransport = "network.transport"; +static constexpr const char *kDbRedisDatabaseIndex = "db.redis.database_index"; /** - * OSI Network Layer or non-OSI equivalent. The - * value SHOULD be normalized to lowercase. + * The collection being accessed within the database stated in {@code db.name}. */ -static constexpr const char *kNetworkType = "network.type"; +static constexpr const char *kDbMongodbCollection = "db.mongodb.collection"; /** - * OSI Application Layer or non-OSI - * equivalent. The value SHOULD be normalized to lowercase. + * Represents the identifier of an Elasticsearch cluster. */ -static constexpr const char *kNetworkProtocolName = "network.protocol.name"; +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"; /** - * Version of the application layer protocol used. See note below. + * The name of the primary table that the operation is acting upon, including the database name (if + applicable). * *

Notes: -

+ */ -static constexpr const char *kNetworkProtocolVersion = "network.protocol.version"; +static constexpr const char *kDbSqlTable = "db.sql.table"; /** - * The internet connection type. + * Unique Cosmos client instance id. */ -static constexpr const char *kNetworkConnectionType = "network.connection.type"; +static constexpr const char *kDbCosmosdbClientId = "db.cosmosdb.client_id"; /** - * 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. + * Cosmos client connection mode. */ -static constexpr const char *kNetworkConnectionSubtype = "network.connection.subtype"; +static constexpr const char *kDbCosmosdbConnectionMode = "db.cosmosdb.connection_mode"; /** - * The name of the mobile carrier. + * Cosmos DB container name. */ -static constexpr const char *kNetworkCarrierName = "network.carrier.name"; +static constexpr const char *kDbCosmosdbContainer = "db.cosmosdb.container"; /** - * The mobile carrier country code. + * CosmosDB Operation Type. */ -static constexpr const char *kNetworkCarrierMcc = "network.carrier.mcc"; +static constexpr const char *kDbCosmosdbOperationType = "db.cosmosdb.operation_type"; /** - * The mobile carrier network code. + * RU consumed for that operation */ -static constexpr const char *kNetworkCarrierMnc = "network.carrier.mnc"; +static constexpr const char *kDbCosmosdbRequestCharge = "db.cosmosdb.request_charge"; /** - * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network. + * Request payload size in bytes */ -static constexpr const char *kNetworkCarrierIcc = "network.carrier.icc"; +static constexpr const char *kDbCosmosdbRequestContentLength = "db.cosmosdb.request_content_length"; /** - * The {@code service.name} of the remote service. - * SHOULD be equal to the actual {@code service.name} resource attribute of the remote service if - * any. + * Cosmos DB status code. */ -static constexpr const char *kPeerService = "peer.service"; +static constexpr const char *kDbCosmosdbStatusCode = "db.cosmosdb.status_code"; /** - * Username or client_id extracted from the access token or Authorization header in the inbound - * request from outside the system. + * Cosmos DB sub status code. */ -static constexpr const char *kEnduserId = "enduser.id"; +static constexpr const char *kDbCosmosdbSubStatusCode = "db.cosmosdb.sub_status_code"; /** - * Actual/assumed role the client is making the request under extracted from token or application - * security context. + * Name of the code, either "OK" or "ERROR". MUST NOT be set if the status code + * is UNSET. */ -static constexpr const char *kEnduserRole = "enduser.role"; +static constexpr const char *kOtelStatusCode = "otel.status_code"; /** - * Scopes or granted authorities the client currently possesses extracted from token or application - * security context. The value would come from the scope associated with an OAuth 2.0 Access Token or an attribute - * value in a SAML 2.0 - * Assertion. + * Description of the Status if it has a value, otherwise not set. */ -static constexpr const char *kEnduserScope = "enduser.scope"; +static constexpr const char *kOtelStatusDescription = "otel.status_description"; /** - * Current "managed" thread ID (as opposed to OS thread ID). + * The invocation ID of the current function invocation. */ -static constexpr const char *kThreadId = "thread.id"; +static constexpr const char *kFaasInvocationId = "faas.invocation_id"; /** - * Current thread name. + * 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 *kThreadName = "thread.name"; +static constexpr const char *kFaasDocumentCollection = "faas.document.collection"; /** - * The method or function name, or equivalent (usually rightmost part of the code unit's name). + * 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 *kCodeFunction = "code.function"; +static constexpr const char *kFaasDocumentName = "faas.document.name"; /** - * 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. + * Describes the type of the operation that was performed on the data. */ -static constexpr const char *kCodeNamespace = "code.namespace"; +static constexpr const char *kFaasDocumentOperation = "faas.document.operation"; /** - * The source code file name that identifies the code unit as uniquely as possible (preferably an - * absolute file path). + * A string containing the time when the data was accessed in the ISO 8601 format expressed in UTC. */ -static constexpr const char *kCodeFilepath = "code.filepath"; +static constexpr const char *kFaasDocumentTime = "faas.document.time"; /** - * The line number in {@code code.filepath} best representing the operation. It SHOULD point within - * the code unit named in {@code code.function}. + * A string containing the schedule period as Cron + * Expression. */ -static constexpr const char *kCodeLineno = "code.lineno"; +static constexpr const char *kFaasCron = "faas.cron"; /** - * The column number in {@code code.filepath} best representing the operation. It SHOULD point - * within the code unit named in {@code code.function}. + * A string containing the function invocation time in the ISO 8601 format expressed in UTC. */ -static constexpr const char *kCodeColumn = "code.column"; +static constexpr const char *kFaasTime = "faas.time"; /** - * Original HTTP method sent by the client in the request line. + * A boolean that is true if the serverless function is executed for the first time (aka + * cold-start). */ -static constexpr const char *kHttpRequestMethodOriginal = "http.request.method_original"; +static constexpr const char *kFaasColdstart = "faas.coldstart"; /** - * 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. + * The unique identifier of the feature flag. */ -static constexpr const char *kHttpRequestBodySize = "http.request.body.size"; +static constexpr const char *kFeatureFlagKey = "feature_flag.key"; /** - * The size of the response 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. + * The name of the service provider that performs the flag evaluation. */ -static constexpr const char *kHttpResponseBodySize = "http.response.body.size"; +static constexpr const char *kFeatureFlagProviderName = "feature_flag.provider_name"; /** - * The ordinal number of request resending attempt (for any reason, including redirects). + * 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 *kHttpResendCount = "http.resend_count"; +static constexpr const char *kFeatureFlagVariant = "feature_flag.variant"; /** * The AWS request ID as returned in the response headers {@code x-amz-request-id} or {@code @@ -932,37 +1060,35 @@ static constexpr const char *kHttpResendCount = "http.resend_count"; static constexpr const char *kAwsRequestId = "aws.request_id"; /** - * The keys in the {@code RequestItems} object field. + * The value of the {@code AttributesToGet} request parameter. */ -static constexpr const char *kAwsDynamodbTableNames = "aws.dynamodb.table_names"; +static constexpr const char *kAwsDynamodbAttributesToGet = "aws.dynamodb.attributes_to_get"; /** - * The JSON-serialized value of each item in the {@code ConsumedCapacity} response field. + * The value of the {@code ConsistentRead} request parameter. */ -static constexpr const char *kAwsDynamodbConsumedCapacity = "aws.dynamodb.consumed_capacity"; +static constexpr const char *kAwsDynamodbConsistentRead = "aws.dynamodb.consistent_read"; /** - * The JSON-serialized value of the {@code ItemCollectionMetrics} response field. + * The JSON-serialized value of each item in the {@code ConsumedCapacity} response field. */ -static constexpr const char *kAwsDynamodbItemCollectionMetrics = - "aws.dynamodb.item_collection_metrics"; +static constexpr const char *kAwsDynamodbConsumedCapacity = "aws.dynamodb.consumed_capacity"; /** - * The value of the {@code ProvisionedThroughput.ReadCapacityUnits} request parameter. + * The value of the {@code IndexName} request parameter. */ -static constexpr const char *kAwsDynamodbProvisionedReadCapacity = - "aws.dynamodb.provisioned_read_capacity"; +static constexpr const char *kAwsDynamodbIndexName = "aws.dynamodb.index_name"; /** - * The value of the {@code ProvisionedThroughput.WriteCapacityUnits} request parameter. + * The JSON-serialized value of the {@code ItemCollectionMetrics} response field. */ -static constexpr const char *kAwsDynamodbProvisionedWriteCapacity = - "aws.dynamodb.provisioned_write_capacity"; +static constexpr const char *kAwsDynamodbItemCollectionMetrics = + "aws.dynamodb.item_collection_metrics"; /** - * The value of the {@code ConsistentRead} request parameter. + * The value of the {@code Limit} request parameter. */ -static constexpr const char *kAwsDynamodbConsistentRead = "aws.dynamodb.consistent_read"; +static constexpr const char *kAwsDynamodbLimit = "aws.dynamodb.limit"; /** * The value of the {@code ProjectionExpression} request parameter. @@ -970,24 +1096,26 @@ static constexpr const char *kAwsDynamodbConsistentRead = "aws.dynamodb.consiste static constexpr const char *kAwsDynamodbProjection = "aws.dynamodb.projection"; /** - * The value of the {@code Limit} request parameter. + * The value of the {@code ProvisionedThroughput.ReadCapacityUnits} request parameter. */ -static constexpr const char *kAwsDynamodbLimit = "aws.dynamodb.limit"; +static constexpr const char *kAwsDynamodbProvisionedReadCapacity = + "aws.dynamodb.provisioned_read_capacity"; /** - * The value of the {@code AttributesToGet} request parameter. + * The value of the {@code ProvisionedThroughput.WriteCapacityUnits} request parameter. */ -static constexpr const char *kAwsDynamodbAttributesToGet = "aws.dynamodb.attributes_to_get"; +static constexpr const char *kAwsDynamodbProvisionedWriteCapacity = + "aws.dynamodb.provisioned_write_capacity"; /** - * The value of the {@code IndexName} request parameter. + * The value of the {@code Select} request parameter. */ -static constexpr const char *kAwsDynamodbIndexName = "aws.dynamodb.index_name"; +static constexpr const char *kAwsDynamodbSelect = "aws.dynamodb.select"; /** - * The value of the {@code Select} request parameter. + * The keys in the {@code RequestItems} object field. */ -static constexpr const char *kAwsDynamodbSelect = "aws.dynamodb.select"; +static constexpr const char *kAwsDynamodbTableNames = "aws.dynamodb.table_names"; /** * The JSON-serialized value of each item of the {@code GlobalSecondaryIndexes} request field @@ -1017,24 +1145,24 @@ static constexpr const char *kAwsDynamodbTableCount = "aws.dynamodb.table_count" static constexpr const char *kAwsDynamodbScanForward = "aws.dynamodb.scan_forward"; /** - * The value of the {@code Segment} request parameter. + * The value of the {@code Count} response parameter. */ -static constexpr const char *kAwsDynamodbSegment = "aws.dynamodb.segment"; +static constexpr const char *kAwsDynamodbCount = "aws.dynamodb.count"; /** - * The value of the {@code TotalSegments} request parameter. + * The value of the {@code ScannedCount} response parameter. */ -static constexpr const char *kAwsDynamodbTotalSegments = "aws.dynamodb.total_segments"; +static constexpr const char *kAwsDynamodbScannedCount = "aws.dynamodb.scanned_count"; /** - * The value of the {@code Count} response parameter. + * The value of the {@code Segment} request parameter. */ -static constexpr const char *kAwsDynamodbCount = "aws.dynamodb.count"; +static constexpr const char *kAwsDynamodbSegment = "aws.dynamodb.segment"; /** - * The value of the {@code ScannedCount} response parameter. + * The value of the {@code TotalSegments} request parameter. */ -static constexpr const char *kAwsDynamodbScannedCount = "aws.dynamodb.scanned_count"; +static constexpr const char *kAwsDynamodbTotalSegments = "aws.dynamodb.total_segments"; /** * The JSON-serialized value of each item in the {@code AttributeDefinitions} request field. @@ -1060,6 +1188,33 @@ except {@code list-buckets}. */ 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 *kAwsS3CopySource = "aws.s3.copy_source"; + +/** + * The delete request container that specifies the objects to be deleted. + * + *

Notes: +

+ */ +static constexpr const char *kAwsS3Delete = "aws.s3.delete"; + /** * The S3 object key the request refers to. Corresponds to the {@code --key} parameter of the S3 API operations. @@ -1098,19 +1253,19 @@ href="https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.ht static constexpr const char *kAwsS3Key = "aws.s3.key"; /** - * The source object (in the form {@code bucket}/{@code key}) for the copy operation. + * 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 *kAwsS3CopySource = "aws.s3.copy_source"; +static constexpr const char *kAwsS3PartNumber = "aws.s3.part_number"; /** * Upload ID that identifies the multipart upload. @@ -1134,31 +1289,12 @@ href="https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.ht static constexpr const char *kAwsS3UploadId = "aws.s3.upload_id"; /** - * The delete request container that specifies the objects to be deleted. - * - *

Notes: -

- */ -static constexpr const char *kAwsS3Delete = "aws.s3.delete"; - -/** - * The part number of the part being uploaded in a multipart-upload operation. This is a positive -integer between 1 and 10,000. + * The GraphQL document being executed. * *

Notes: -

+ */ -static constexpr const char *kAwsS3PartNumber = "aws.s3.part_number"; +static constexpr const char *kGraphqlDocument = "graphql.document"; /** * The name of the operation being executed. @@ -1171,17 +1307,13 @@ static constexpr const char *kGraphqlOperationName = "graphql.operation.name"; static constexpr const char *kGraphqlOperationType = "graphql.operation.type"; /** - * The GraphQL document being executed. + * The size of the message body in bytes. * *

Notes: -

- */ -static constexpr const char *kGraphqlDocument = "graphql.document"; - -/** - * A value used by the messaging system as an identifier for the message, represented as a string. + */ -static constexpr const char *kMessagingMessageId = "messaging.message.id"; +static constexpr const char *kMessagingMessageBodySize = "messaging.message.body.size"; /** * The conversation ID identifying the conversation to which the @@ -1190,17 +1322,24 @@ static constexpr const char *kMessagingMessageId = "messaging.message.id"; static constexpr const char *kMessagingMessageConversationId = "messaging.message.conversation_id"; /** - * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown - * whether the compressed or uncompressed payload size is reported. + * The size of the message body and metadata in bytes. + * + *

Notes: +

+ */ +static constexpr const char *kMessagingMessageEnvelopeSize = "messaging.message.envelope.size"; + +/** + * A value used by the messaging system as an identifier for the message, represented as a string. */ -static constexpr const char *kMessagingMessagePayloadSizeBytes = - "messaging.message.payload_size_bytes"; +static constexpr const char *kMessagingMessageId = "messaging.message.id"; /** - * The compressed size of the message payload in bytes. + * A boolean that is true if the message destination is anonymous (could be unnamed or have + * auto-generated name). */ -static constexpr const char *kMessagingMessagePayloadCompressedSizeBytes = - "messaging.message.payload_compressed_size_bytes"; +static constexpr const char *kMessagingDestinationAnonymous = "messaging.destination.anonymous"; /** * The message destination name @@ -1227,27 +1366,25 @@ static constexpr const char *kMessagingDestinationTemplate = "messaging.destinat * A boolean that is true if the message destination is temporary and might not exist anymore after * messages are processed. */ -static constexpr const char *kMessagingDestinationTemporary = "messaging.destination.temporary"; - -/** - * A boolean that is true if the message destination is anonymous (could be unnamed or have - * auto-generated name). - */ -static constexpr const char *kMessagingDestinationAnonymous = "messaging.destination.anonymous"; +static constexpr const char *kMessagingDestinationTemporary = "messaging.destination.temporary"; /** - * A string identifying the messaging system. + * A boolean that is true if the publish message destination is anonymous (could be unnamed or have + * auto-generated name). */ -static constexpr const char *kMessagingSystem = "messaging.system"; +static constexpr const char *kMessagingDestinationPublishAnonymous = + "messaging.destination_publish.anonymous"; /** - * A string identifying the kind of messaging operation as defined in the Operation names section above. + * The name of the original destination the message was published to * *

Notes: -

+ */ -static constexpr const char *kMessagingOperation = "messaging.operation"; +static constexpr const char *kMessagingDestinationPublishName = + "messaging.destination_publish.name"; /** * The number of messages sent, received, or processed in the scope of the batching operation. @@ -1267,22 +1404,24 @@ static constexpr const char *kMessagingBatchMessageCount = "messaging.batch.mess static constexpr const char *kMessagingClientId = "messaging.client_id"; /** - * RabbitMQ message routing key. + * A string identifying the kind of messaging operation as defined in the Operation names section above. + * + *

Notes: +

*/ -static constexpr const char *kMessagingRabbitmqDestinationRoutingKey = - "messaging.rabbitmq.destination.routing_key"; +static constexpr const char *kMessagingOperation = "messaging.operation"; /** - * 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: -

+ * A string identifying the messaging system. */ -static constexpr const char *kMessagingKafkaMessageKey = "messaging.kafka.message.key"; +static constexpr const char *kMessagingSystem = "messaging.system"; + +/** + * RabbitMQ message routing key. + */ +static constexpr const char *kMessagingRabbitmqDestinationRoutingKey = + "messaging.rabbitmq.destination.routing_key"; /** * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not @@ -1296,6 +1435,18 @@ static constexpr const char *kMessagingKafkaConsumerGroup = "messaging.kafka.con static constexpr const char *kMessagingKafkaDestinationPartition = "messaging.kafka.destination.partition"; +/** + * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the + same partition. They differ from {@code messaging.message.id} in that they're not unique. If the + key is {@code null}, the attribute MUST NOT be set. + * + *

Notes: +

+ */ +static constexpr const char *kMessagingKafkaMessageKey = "messaging.kafka.message.key"; + /** * The offset of a record in the corresponding Kafka partition. */ @@ -1306,11 +1457,6 @@ static constexpr const char *kMessagingKafkaMessageOffset = "messaging.kafka.mes */ static constexpr const char *kMessagingKafkaMessageTombstone = "messaging.kafka.message.tombstone"; -/** - * Namespace of RocketMQ resources, resources in different namespaces are individual. - */ -static constexpr const char *kMessagingRocketmqNamespace = "messaging.rocketmq.namespace"; - /** * Name of the RocketMQ producer/consumer group that is handling the message. The client type is * identified by the SpanKind. @@ -1318,10 +1464,10 @@ static constexpr const char *kMessagingRocketmqNamespace = "messaging.rocketmq.n static constexpr const char *kMessagingRocketmqClientGroup = "messaging.rocketmq.client_group"; /** - * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. + * Model of message consumption. This only applies to consumer spans. */ -static constexpr const char *kMessagingRocketmqMessageDeliveryTimestamp = - "messaging.rocketmq.message.delivery_timestamp"; +static constexpr const char *kMessagingRocketmqConsumptionModel = + "messaging.rocketmq.consumption_model"; /** * The delay time level for delay message, which determines the message delay time. @@ -1329,6 +1475,12 @@ static constexpr const char *kMessagingRocketmqMessageDeliveryTimestamp = static constexpr const char *kMessagingRocketmqMessageDelayTimeLevel = "messaging.rocketmq.message.delay_time_level"; +/** + * The timestamp in milliseconds that the delay message is expected to be delivered to consumer. + */ +static constexpr const char *kMessagingRocketmqMessageDeliveryTimestamp = + "messaging.rocketmq.message.delivery_timestamp"; + /** * It is essential for FIFO message. Messages that belong to the same message group are always * processed one by one within the same consumer group. @@ -1336,9 +1488,9 @@ static constexpr const char *kMessagingRocketmqMessageDelayTimeLevel = static constexpr const char *kMessagingRocketmqMessageGroup = "messaging.rocketmq.message.group"; /** - * Type of message. + * Key(s) of message, another way to mark message besides message id. */ -static constexpr const char *kMessagingRocketmqMessageType = "messaging.rocketmq.message.type"; +static constexpr const char *kMessagingRocketmqMessageKeys = "messaging.rocketmq.message.keys"; /** * The secondary classifier of message besides topic. @@ -1346,20 +1498,26 @@ static constexpr const char *kMessagingRocketmqMessageType = "messaging.rocketmq static constexpr const char *kMessagingRocketmqMessageTag = "messaging.rocketmq.message.tag"; /** - * Key(s) of message, another way to mark message besides message id. + * Type of message. */ -static constexpr const char *kMessagingRocketmqMessageKeys = "messaging.rocketmq.message.keys"; +static constexpr const char *kMessagingRocketmqMessageType = "messaging.rocketmq.message.type"; /** - * Model of message consumption. This only applies to consumer spans. + * Namespace of RocketMQ resources, resources in different namespaces are individual. */ -static constexpr const char *kMessagingRocketmqConsumptionModel = - "messaging.rocketmq.consumption_model"; +static constexpr const char *kMessagingRocketmqNamespace = "messaging.rocketmq.namespace"; /** - * A string identifying the remoting system. See below for a list of well-known identifiers. + * The name of the (logical) method being called, must be equal to the $method part in the span + name. + * + *

Notes: +

*/ -static constexpr const char *kRpcSystem = "rpc.system"; +static constexpr const char *kRpcMethod = "rpc.method"; /** * The full (logical) name of the service being called, including its package name, if applicable. @@ -1374,16 +1532,9 @@ static constexpr const char *kRpcSystem = "rpc.system"; static constexpr const char *kRpcService = "rpc.service"; /** - * The name of the (logical) method being called, must be equal to the $method part in the span - name. - * - *

Notes: -

+ * A string identifying the remoting system. See below for a list of well-known identifiers. */ -static constexpr const char *kRpcMethod = "rpc.method"; +static constexpr const char *kRpcSystem = "rpc.system"; /** * The numeric status @@ -1392,10 +1543,14 @@ static constexpr const char *kRpcMethod = "rpc.method"; static constexpr const char *kRpcGrpcStatusCode = "rpc.grpc.status_code"; /** - * Protocol version as in {@code jsonrpc} property of request/response. Since JSON-RPC 1.0 does not - * specify this, the value can be omitted. + * {@code error.code} property of response if it is an error response. */ -static constexpr const char *kRpcJsonrpcVersion = "rpc.jsonrpc.version"; +static constexpr const char *kRpcJsonrpcErrorCode = "rpc.jsonrpc.error_code"; + +/** + * {@code error.message} property of response if it is an error response. + */ +static constexpr const char *kRpcJsonrpcErrorMessage = "rpc.jsonrpc.error_message"; /** * {@code id} property of request or response. Since protocol allows id to be int, string, {@code @@ -1405,19 +1560,15 @@ static constexpr const char *kRpcJsonrpcVersion = "rpc.jsonrpc.version"; static constexpr const char *kRpcJsonrpcRequestId = "rpc.jsonrpc.request_id"; /** - * {@code error.code} property of response if it is an error response. - */ -static constexpr const char *kRpcJsonrpcErrorCode = "rpc.jsonrpc.error_code"; - -/** - * {@code error.message} property of response if it is an error response. + * Protocol version as in {@code jsonrpc} property of request/response. Since JSON-RPC 1.0 does not + * specify this, the value can be omitted. */ -static constexpr const char *kRpcJsonrpcErrorMessage = "rpc.jsonrpc.error_message"; +static constexpr const char *kRpcJsonrpcVersion = "rpc.jsonrpc.version"; /** - * Whether this is a received or sent message. + * Compressed size of the message in bytes. */ -static constexpr const char *kMessageType = "message.type"; +static constexpr const char *kMessageCompressedSize = "message.compressed_size"; /** * MUST be calculated as two different counters starting from {@code 1} one for sent messages and @@ -1430,9 +1581,9 @@ static constexpr const char *kMessageType = "message.type"; static constexpr const char *kMessageId = "message.id"; /** - * Compressed size of the message in bytes. + * Whether this is a received or sent message. */ -static constexpr const char *kMessageCompressedSize = "message.compressed_size"; +static constexpr const char *kMessageType = "message.type"; /** * Uncompressed size of the message in bytes. @@ -1465,10 +1616,9 @@ recorded at a time where it was not clear whether the exception will escape.URI scheme component - * identifying the used protocol. + * The URI fragment component */ -static constexpr const char *kUrlScheme = "url.scheme"; +static constexpr const char *kUrlFragment = "url.fragment"; /** * Absolute URL describing a network resource according to URI fragment component + * The URI scheme component + * identifying the used protocol. */ -static constexpr const char *kUrlFragment = "url.fragment"; +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. */ +static constexpr const char *kOther = "_OTHER"; +} // namespace ErrorTypeValues + +namespace FaasInvokedProviderValues +{ +/** Alibaba Cloud. */ +static constexpr const char *kAlibabaCloud = "alibaba_cloud"; +/** Amazon Web Services. */ +static constexpr const char *kAws = "aws"; +/** Microsoft Azure. */ +static constexpr const char *kAzure = "azure"; +/** Google Cloud Platform. */ +static constexpr const char *kGcp = "gcp"; +/** Tencent Cloud. */ +static constexpr const char *kTencentCloud = "tencent_cloud"; +} // namespace FaasInvokedProviderValues + +namespace FaasTriggerValues +{ +/** A response to some data source operation such as a database or filesystem read/write. */ +static constexpr const char *kDatasource = "datasource"; +/** To provide an answer to an inbound HTTP request. */ +static constexpr const char *kHttp = "http"; +/** A function is set to be executed when messages are sent to a messaging system. */ +static constexpr const char *kPubsub = "pubsub"; +/** A function is scheduled to be executed regularly. */ +static constexpr const char *kTimer = "timer"; +/** If none of the others apply. */ +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. */ +static constexpr const char *kStdout = "stdout"; +/** Events from stderr stream. */ +static constexpr const char *kStderr = "stderr"; +} // namespace LogIostreamValues + +namespace StateValues +{ +/** idle. */ +static constexpr const char *kIdle = "idle"; +/** used. */ +static constexpr const char *kUsed = "used"; +} // namespace StateValues + +namespace JvmMemoryTypeValues +{ +/** Heap memory. */ +static constexpr const char *kHeap = "heap"; +/** Non-heap memory. */ +static constexpr const char *kNonHeap = "non_heap"; +} // namespace JvmMemoryTypeValues + +namespace SystemCpuStateValues +{ +/** user. */ +static constexpr const char *kUser = "user"; +/** system. */ +static constexpr const char *kSystem = "system"; +/** nice. */ +static constexpr const char *kNice = "nice"; +/** idle. */ +static constexpr const char *kIdle = "idle"; +/** iowait. */ +static constexpr const char *kIowait = "iowait"; +/** interrupt. */ +static constexpr const char *kInterrupt = "interrupt"; +/** steal. */ +static constexpr const char *kSteal = "steal"; +} // namespace SystemCpuStateValues + +namespace SystemMemoryStateValues +{ +/** total. */ +static constexpr const char *kTotal = "total"; +/** used. */ +static constexpr const char *kUsed = "used"; +/** free. */ +static constexpr const char *kFree = "free"; +/** shared. */ +static constexpr const char *kShared = "shared"; +/** buffers. */ +static constexpr const char *kBuffers = "buffers"; +/** cached. */ +static constexpr const char *kCached = "cached"; +} // namespace SystemMemoryStateValues + +namespace SystemPagingDirectionValues +{ +/** in. */ +static constexpr const char *kIn = "in"; +/** out. */ +static constexpr const char *kOut = "out"; +} // namespace SystemPagingDirectionValues + +namespace SystemPagingStateValues +{ +/** used. */ +static constexpr const char *kUsed = "used"; +/** free. */ +static constexpr const char *kFree = "free"; +} // namespace SystemPagingStateValues + +namespace SystemPagingTypeValues +{ +/** major. */ +static constexpr const char *kMajor = "major"; +/** minor. */ +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. */ +static constexpr const char *kUsed = "used"; +/** free. */ +static constexpr const char *kFree = "free"; +/** reserved. */ +static constexpr const char *kReserved = "reserved"; +} // namespace SystemFilesystemStateValues + +namespace SystemFilesystemTypeValues +{ +/** fat32. */ +static constexpr const char *kFat32 = "fat32"; +/** exfat. */ +static constexpr const char *kExfat = "exfat"; +/** ntfs. */ +static constexpr const char *kNtfs = "ntfs"; +/** refs. */ +static constexpr const char *kRefs = "refs"; +/** hfsplus. */ +static constexpr const char *kHfsplus = "hfsplus"; +/** ext4. */ +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. */ +static constexpr const char *kClose = "close"; +/** close_wait. */ +static constexpr const char *kCloseWait = "close_wait"; +/** closing. */ +static constexpr const char *kClosing = "closing"; +/** delete. */ +static constexpr const char *kDelete = "delete"; +/** established. */ +static constexpr const char *kEstablished = "established"; +/** fin_wait_1. */ +static constexpr const char *kFinWait1 = "fin_wait_1"; +/** fin_wait_2. */ +static constexpr const char *kFinWait2 = "fin_wait_2"; +/** last_ack. */ +static constexpr const char *kLastAck = "last_ack"; +/** listen. */ +static constexpr const char *kListen = "listen"; +/** syn_recv. */ +static constexpr const char *kSynRecv = "syn_recv"; +/** syn_sent. */ +static constexpr const char *kSynSent = "syn_sent"; +/** time_wait. */ +static constexpr const char *kTimeWait = "time_wait"; +} // namespace SystemNetworkStateValues + +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 NetworkTransportValues +{ +/** 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. */ +static constexpr const char *kUnix = "unix"; +} // namespace NetworkTransportValues -/** - * Value of the HTTP - * User-Agent header sent by the client. - */ -static constexpr const char *kUserAgentOriginal = "user_agent.original"; +namespace NetworkTypeValues +{ +/** IPv4. */ +static constexpr const char *kIpv4 = "ipv4"; +/** IPv6. */ +static constexpr const char *kIpv6 = "ipv6"; +} // namespace NetworkTypeValues -// Enum definitions -namespace NetTransportValues +namespace NetworkConnectionSubtypeValues { -/** 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 +/** GPRS. */ +static constexpr const char *kGprs = "gprs"; +/** EDGE. */ +static constexpr const char *kEdge = "edge"; +/** UMTS. */ +static constexpr const char *kUmts = "umts"; +/** CDMA. */ +static constexpr const char *kCdma = "cdma"; +/** EVDO Rel. 0. */ +static constexpr const char *kEvdo0 = "evdo_0"; +/** EVDO Rev. A. */ +static constexpr const char *kEvdoA = "evdo_a"; +/** CDMA2000 1XRTT. */ +static constexpr const char *kCdma20001xrtt = "cdma2000_1xrtt"; +/** HSDPA. */ +static constexpr const char *kHsdpa = "hsdpa"; +/** HSUPA. */ +static constexpr const char *kHsupa = "hsupa"; +/** HSPA. */ +static constexpr const char *kHspa = "hspa"; +/** IDEN. */ +static constexpr const char *kIden = "iden"; +/** EVDO Rev. B. */ +static constexpr const char *kEvdoB = "evdo_b"; +/** LTE. */ +static constexpr const char *kLte = "lte"; +/** EHRPD. */ +static constexpr const char *kEhrpd = "ehrpd"; +/** HSPAP. */ +static constexpr const char *kHspap = "hspap"; +/** GSM. */ +static constexpr const char *kGsm = "gsm"; +/** TD-SCDMA. */ +static constexpr const char *kTdScdma = "td_scdma"; +/** IWLAN. */ +static constexpr const char *kIwlan = "iwlan"; +/** 5G NR (New Radio). */ +static constexpr const char *kNr = "nr"; +/** 5G NRNSA (New Radio Non-Standalone). */ +static constexpr const char *kNrnsa = "nrnsa"; +/** LTE CA. */ +static constexpr const char *kLteCa = "lte_ca"; +} // namespace NetworkConnectionSubtypeValues -namespace NetSockFamilyValues +namespace NetworkConnectionTypeValues { -/** 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 +/** wifi. */ +static constexpr const char *kWifi = "wifi"; +/** wired. */ +static constexpr const char *kWired = "wired"; +/** cell. */ +static constexpr const char *kCell = "cell"; +/** unavailable. */ +static constexpr const char *kUnavailable = "unavailable"; +/** unknown. */ +static constexpr const char *kUnknown = "unknown"; +} // namespace NetworkConnectionTypeValues namespace HttpRequestMethodValues { @@ -1563,32 +2003,6 @@ static constexpr const char *kTrace = "TRACE"; static constexpr const char *kOther = "_OTHER"; } // namespace HttpRequestMethodValues -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. */ -static constexpr const char *kStdout = "stdout"; -/** Events from stderr stream. */ -static constexpr const char *kStderr = "stderr"; -} // namespace LogIostreamValues - -namespace TypeValues -{ -/** Heap memory. */ -static constexpr const char *kHeap = "heap"; -/** Non-heap memory. */ -static constexpr const char *kNonHeap = "non_heap"; -} // namespace TypeValues - namespace OpentracingRefTypeValues { /** The parent Span depends on the child Span in some capacity. */ @@ -1731,6 +2145,14 @@ static constexpr const char *kSerial = "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. */ @@ -1765,14 +2187,6 @@ static constexpr const char *kQueryPlan = "QueryPlan"; static constexpr const char *kExecuteJavascript = "ExecuteJavaScript"; } // namespace DbCosmosdbOperationTypeValues -namespace DbCosmosdbConnectionModeValues -{ -/** Gateway (HTTP) connections mode. */ -static constexpr const char *kGateway = "gateway"; -/** Direct connection. */ -static constexpr const char *kDirect = "direct"; -} // namespace DbCosmosdbConnectionModeValues - namespace OtelStatusCodeValues { /** The operation has been validated by an Application developer or Operator to have completed @@ -1782,20 +2196,6 @@ static constexpr const char *kOk = "OK"; static constexpr const char *kError = "ERROR"; } // namespace OtelStatusCodeValues -namespace FaasTriggerValues -{ -/** A response to some data source operation such as a database or filesystem read/write. */ -static constexpr const char *kDatasource = "datasource"; -/** To provide an answer to an inbound HTTP request. */ -static constexpr const char *kHttp = "http"; -/** A function is set to be executed when messages are sent to a messaging system. */ -static constexpr const char *kPubsub = "pubsub"; -/** A function is scheduled to be executed regularly. */ -static constexpr const char *kTimer = "timer"; -/** If none of the others apply. */ -static constexpr const char *kOther = "other"; -} // namespace FaasTriggerValues - namespace FaasDocumentOperationValues { /** When a new object is created. */ @@ -1806,100 +2206,6 @@ static constexpr const char *kEdit = "edit"; static constexpr const char *kDelete = "delete"; } // namespace FaasDocumentOperationValues -namespace FaasInvokedProviderValues -{ -/** Alibaba Cloud. */ -static constexpr const char *kAlibabaCloud = "alibaba_cloud"; -/** Amazon Web Services. */ -static constexpr const char *kAws = "aws"; -/** Microsoft Azure. */ -static constexpr const char *kAzure = "azure"; -/** Google Cloud Platform. */ -static constexpr const char *kGcp = "gcp"; -/** Tencent Cloud. */ -static constexpr const char *kTencentCloud = "tencent_cloud"; -} // namespace FaasInvokedProviderValues - -namespace NetworkTransportValues -{ -/** 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. */ -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 NetworkConnectionTypeValues -{ -/** wifi. */ -static constexpr const char *kWifi = "wifi"; -/** wired. */ -static constexpr const char *kWired = "wired"; -/** cell. */ -static constexpr const char *kCell = "cell"; -/** unavailable. */ -static constexpr const char *kUnavailable = "unavailable"; -/** unknown. */ -static constexpr const char *kUnknown = "unknown"; -} // namespace NetworkConnectionTypeValues - -namespace NetworkConnectionSubtypeValues -{ -/** GPRS. */ -static constexpr const char *kGprs = "gprs"; -/** EDGE. */ -static constexpr const char *kEdge = "edge"; -/** UMTS. */ -static constexpr const char *kUmts = "umts"; -/** CDMA. */ -static constexpr const char *kCdma = "cdma"; -/** EVDO Rel. 0. */ -static constexpr const char *kEvdo0 = "evdo_0"; -/** EVDO Rev. A. */ -static constexpr const char *kEvdoA = "evdo_a"; -/** CDMA2000 1XRTT. */ -static constexpr const char *kCdma20001xrtt = "cdma2000_1xrtt"; -/** HSDPA. */ -static constexpr const char *kHsdpa = "hsdpa"; -/** HSUPA. */ -static constexpr const char *kHsupa = "hsupa"; -/** HSPA. */ -static constexpr const char *kHspa = "hspa"; -/** IDEN. */ -static constexpr const char *kIden = "iden"; -/** EVDO Rev. B. */ -static constexpr const char *kEvdoB = "evdo_b"; -/** LTE. */ -static constexpr const char *kLte = "lte"; -/** EHRPD. */ -static constexpr const char *kEhrpd = "ehrpd"; -/** HSPAP. */ -static constexpr const char *kHspap = "hspap"; -/** GSM. */ -static constexpr const char *kGsm = "gsm"; -/** TD-SCDMA. */ -static constexpr const char *kTdScdma = "td_scdma"; -/** IWLAN. */ -static constexpr const char *kIwlan = "iwlan"; -/** 5G NR (New Radio). */ -static constexpr const char *kNr = "nr"; -/** 5G NRNSA (New Radio Non-Standalone). */ -static constexpr const char *kNrnsa = "nrnsa"; -/** LTE CA. */ -static constexpr const char *kLteCa = "lte_ca"; -} // namespace NetworkConnectionSubtypeValues - namespace GraphqlOperationTypeValues { /** GraphQL query. */ @@ -1920,6 +2226,14 @@ static constexpr const char *kReceive = "receive"; 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. */ @@ -1932,14 +2246,6 @@ static constexpr const char *kDelay = "delay"; static constexpr const char *kTransaction = "transaction"; } // namespace MessagingRocketmqMessageTypeValues -namespace MessagingRocketmqConsumptionModelValues -{ -/** Clustering consumption model. */ -static constexpr const char *kClustering = "clustering"; -/** Broadcasting consumption model. */ -static constexpr const char *kBroadcasting = "broadcasting"; -} // namespace MessagingRocketmqConsumptionModelValues - namespace RpcSystemValues { /** gRPC. */ diff --git a/api/include/opentelemetry/version.h b/api/include/opentelemetry/version.h index fd88ffb383..79284c1501 100644 --- a/api/include/opentelemetry/version.h +++ b/api/include/opentelemetry/version.h @@ -10,9 +10,9 @@ # define OPENTELEMETRY_ABI_VERSION_NO 1 #endif -#define OPENTELEMETRY_VERSION "1.11.0" +#define OPENTELEMETRY_VERSION "1.12.0" #define OPENTELEMETRY_VERSION_MAJOR 1 -#define OPENTELEMETRY_VERSION_MINOR 11 +#define OPENTELEMETRY_VERSION_MINOR 12 #define OPENTELEMETRY_VERSION_PATCH 0 #define OPENTELEMETRY_ABI_VERSION OPENTELEMETRY_STRINGIFY(OPENTELEMETRY_ABI_VERSION_NO) diff --git a/buildscripts/semantic-convention/generate.sh b/buildscripts/semantic-convention/generate.sh index 2a6634baa4..daa5131dc5 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.21.0 +SEMCONV_VERSION=1.22.0 # repository: https://github.com/open-telemetry/build-tools -GENERATOR_VERSION=0.19.0 +GENERATOR_VERSION=0.22.0 SPEC_VERSION=v$SEMCONV_VERSION SCHEMA_URL=https://opentelemetry.io/schemas/$SEMCONV_VERSION diff --git a/cmake/patch-imported-config.cmake b/cmake/patch-imported-config.cmake new file mode 100644 index 0000000000..ec68d74099 --- /dev/null +++ b/cmake/patch-imported-config.cmake @@ -0,0 +1,141 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +# Some prebuilt or installed targets may have different CONFIG settings than +# what we use to configure otel-cpp. This file applies patches to the imported +# targets in order to use compatible CONFIG settings for fallback. + +# Common dependencies +project_build_tools_patch_default_imported_config(ZLIB::ZLIB) + +# protobuf targets +if(Protobuf_FOUND OR PROTOBUF_FOUND) + project_build_tools_patch_default_imported_config( + utf8_range::utf8_range utf8_range::utf8_validity protobuf::libprotobuf-lite + protobuf::libprotobuf protobuf::libprotoc) +endif() + +# cares targets +if(TARGET c-ares::cares) + project_build_tools_patch_default_imported_config(c-ares::cares) +endif() + +# curl targets +if(TARGET CURL::libcurl) + project_build_tools_patch_default_imported_config(CURL::libcurl) +endif() + +# abseil targets +if(WITH_ABSEIL) + project_build_tools_patch_default_imported_config( + absl::bad_variant_access + absl::raw_logging_internal + absl::log_severity + absl::log_internal_check_op + absl::log_internal_nullguard + absl::strings + absl::strings_internal + absl::base + absl::spinlock_wait + absl::int128 + absl::throw_delegate + absl::log_internal_message + absl::examine_stack + absl::stacktrace + absl::debugging_internal + absl::symbolize + absl::demangle_internal + absl::malloc_internal + absl::log_internal_format + absl::log_internal_globals + absl::time + absl::civil_time + absl::time_zone + absl::str_format_internal + absl::log_internal_proto + absl::log_internal_log_sink_set + absl::log_globals + absl::hash + absl::city + absl::bad_optional_access + absl::low_level_hash + absl::log_entry + absl::log_sink + absl::synchronization + absl::graphcycles_internal + absl::strerror + absl::log_internal_conditions + absl::cord + absl::cord_internal + absl::crc_cord_state + absl::crc32c + absl::crc_cpu_detect + absl::crc_internal + absl::cordz_functions + absl::exponential_biased + absl::cordz_info + absl::cordz_handle + absl::leak_check + absl::die_if_null + absl::flags + absl::flags_commandlineflag + absl::flags_commandlineflag_internal + absl::flags_config + absl::flags_program_name + absl::flags_internal + absl::flags_marshalling + absl::flags_reflection + absl::flags_private_handle_accessor + absl::raw_hash_set + absl::hashtablez_sampler + absl::log_initialize + absl::status + absl::statusor) +endif() + +# gRPC targets +if(TARGET gRPC::grpc++) + project_build_tools_patch_default_imported_config( + gRPC::cares + gRPC::re2 + gRPC::ssl + gRPC::crypto + gRPC::zlibstatic + gRPC::address_sorting + gRPC::gpr + gRPC::grpc + gRPC::grpc_unsecure + gRPC::grpc++ + gRPC::grpc++_alts + gRPC::grpc++_error_details + gRPC::grpc++_reflection + gRPC::grpc++_unsecure + gRPC::grpc_authorization_provider + gRPC::grpc_plugin_support + gRPC::grpcpp_channelz + gRPC::upb) +endif() + +# prometheus targets +if(TARGET prometheus-cpp::core) + project_build_tools_patch_default_imported_config( + prometheus-cpp::core prometheus-cpp::pull prometheus-cpp::push) +endif() + +# civetweb targets +if(TARGET civetweb::civetweb) + project_build_tools_patch_default_imported_config( + civetweb::civetweb civetweb::server civetweb::civetweb-cpp) +endif() + +if(BUILD_TESTING) + project_build_tools_patch_default_imported_config( + GTest::gtest + GTest::gtest_main + GTest::gmock + GTest::gmock_main + GTest::GTest + GTest::Main + benchmark::benchmark + benchmark::benchmark_main) +endif() diff --git a/cmake/tools.cmake b/cmake/tools.cmake index 345fc88ff7..ee191121ca 100644 --- a/cmake/tools.cmake +++ b/cmake/tools.cmake @@ -117,3 +117,83 @@ function(project_build_tools_get_imported_location OUTPUT_VAR_NAME TARGET_NAME) PARENT_SCOPE) endif() endfunction() + +#[[ +If we build third party packages with a different CONFIG setting from building +otel-cpp, cmake may not find a suitable file in imported targets (#705, #1359) +when linking. But on some platforms, different CONFIG settings can be used when +these CONFIG settings have the same ABI. For example, on Linux, we can build +gRPC and protobuf with -DCMAKE_BUILD_TYPE=Release, but build otel-cpp with +-DCMAKE_BUILD_TYPE=Debug and link these libraries together. +The properties of imported targets can be found here: +https://cmake.org/cmake/help/latest/manual/cmake-properties.7.html#properties-on-targets +]] +function(project_build_tools_patch_default_imported_config) + set(PATCH_VARS + IMPORTED_IMPLIB + IMPORTED_LIBNAME + IMPORTED_LINK_DEPENDENT_LIBRARIES + IMPORTED_LINK_INTERFACE_LANGUAGES + IMPORTED_LINK_INTERFACE_LIBRARIES + IMPORTED_LINK_INTERFACE_MULTIPLICITY + IMPORTED_LOCATION + IMPORTED_NO_SONAME + IMPORTED_OBJECTS + IMPORTED_SONAME) + foreach(TARGET_NAME ${ARGN}) + if(TARGET ${TARGET_NAME}) + get_target_property(IS_IMPORTED_TARGET ${TARGET_NAME} IMPORTED) + if(NOT IS_IMPORTED_TARGET) + continue() + endif() + + if(CMAKE_VERSION VERSION_LESS "3.19.0") + get_target_property(TARGET_TYPE_NAME ${TARGET_NAME} TYPE) + if(TARGET_TYPE_NAME STREQUAL "INTERFACE_LIBRARY") + continue() + endif() + endif() + + get_target_property(DO_NOT_OVERWRITE ${TARGET_NAME} IMPORTED_LOCATION) + if(DO_NOT_OVERWRITE) + continue() + endif() + + # MSVC's STL and debug level must match the target, so we can only move + # out IMPORTED_LOCATION_NOCONFIG + if(MSVC) + set(PATCH_IMPORTED_CONFIGURATION "NOCONFIG") + else() + get_target_property(PATCH_IMPORTED_CONFIGURATION ${TARGET_NAME} + IMPORTED_CONFIGURATIONS) + endif() + + if(NOT PATCH_IMPORTED_CONFIGURATION) + continue() + endif() + + get_target_property(PATCH_TARGET_LOCATION ${TARGET_NAME} + "IMPORTED_LOCATION_${PATCH_IMPORTED_CONFIGURATION}") + if(NOT PATCH_TARGET_LOCATION) + continue() + endif() + + foreach(PATCH_IMPORTED_KEY IN LISTS PATCH_VARS) + get_target_property( + PATCH_IMPORTED_VALUE ${TARGET_NAME} + "${PATCH_IMPORTED_KEY}_${PATCH_IMPORTED_CONFIGURATION}") + if(PATCH_IMPORTED_VALUE) + set_target_properties( + ${TARGET_NAME} PROPERTIES "${PATCH_IMPORTED_KEY}" + "${PATCH_IMPORTED_VALUE}") + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + message( + STATUS + "Patch: ${TARGET_NAME} ${PATCH_IMPORTED_KEY} will use ${PATCH_IMPORTED_KEY}_${PATCH_IMPORTED_CONFIGURATION}(\"${PATCH_IMPORTED_VALUE}\") by default." + ) + endif() + endif() + endforeach() + endif() + endforeach() +endfunction() diff --git a/docs/public/conf.py b/docs/public/conf.py index 1c090b8b35..2375c45924 100644 --- a/docs/public/conf.py +++ b/docs/public/conf.py @@ -24,7 +24,7 @@ author = 'OpenTelemetry authors' # The full version, including alpha/beta/rc tags -release = "1.11.0" +release = "1.12.0" # Run sphinx on subprojects and copy output # ----------------------------------------- diff --git a/examples/grpc/client.cc b/examples/grpc/client.cc index 92088c12f6..3163b38986 100644 --- a/examples/grpc/client.cc +++ b/examples/grpc/client.cc @@ -53,8 +53,8 @@ class GreeterClient {{SemanticConventions::kRpcSystem, "grpc"}, {SemanticConventions::kRpcService, "grpc-example.GreetService"}, {SemanticConventions::kRpcMethod, "Greet"}, - {SemanticConventions::kServerSocketAddress, ip}, - {SemanticConventions::kServerPort, port}}, + {SemanticConventions::kNetworkPeerAddress, ip}, + {SemanticConventions::kNetworkPeerPort, port}}, options); auto scope = get_tracer("grpc-client")->WithActiveSpan(span); diff --git a/sdk/include/opentelemetry/sdk/resource/semantic_conventions.h b/sdk/include/opentelemetry/sdk/resource/semantic_conventions.h index 9396a6c7f9..1b45f80c36 100644 --- a/sdk/include/opentelemetry/sdk/resource/semantic_conventions.h +++ b/sdk/include/opentelemetry/sdk/resource/semantic_conventions.h @@ -24,7 +24,14 @@ namespace SemanticConventions /** * The URL of the OpenTelemetry schema for these keys and values. */ -static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.21.0"; +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 @@ -36,6 +43,25 @@ static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.21 */ 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 * @@ -54,34 +80,34 @@ provides. static constexpr const char *kBrowserPlatform = "browser.platform"; /** - * A boolean that is true if the browser is running on a mobile device + * The cloud account ID the resource is assigned to. + */ +static constexpr const char *kCloudAccountId = "cloud.account.id"; + +/** + * Cloud regions often have multiple, isolated locations known as zones to increase availability. + Availability zone represents the zone where the resource is running. * *

Notes: -

+ */ -static constexpr const char *kBrowserMobile = "browser.mobile"; +static constexpr const char *kCloudAvailabilityZone = "cloud.availability_zone"; /** - * Preferred language of the user using the browser + * The cloud platform in use. * *

Notes: -

+ */ -static constexpr const char *kBrowserLanguage = "browser.language"; +static constexpr const char *kCloudPlatform = "cloud.platform"; /** * Name of the cloud provider. */ static constexpr const char *kCloudProvider = "cloud.provider"; -/** - * The cloud account ID the resource is assigned to. - */ -static constexpr const char *kCloudAccountId = "cloud.account.id"; - /** * The geographical region the resource is running. * @@ -127,23 +153,10 @@ that would usually share a TracerProvider. static constexpr const char *kCloudResourceId = "cloud.resource_id"; /** - * Cloud regions often have multiple, isolated locations known as zones to increase availability. - Availability zone represents the zone where the resource is running. - * - *

Notes: -

- */ -static constexpr const char *kCloudAvailabilityZone = "cloud.availability_zone"; - -/** - * The cloud platform in use. - * - *

Notes: -

+ * The ARN of an ECS cluster. */ -static constexpr const char *kCloudPlatform = "cloud.platform"; +static constexpr const char *kAwsEcsClusterArn = "aws.ecs.cluster.arn"; /** * The Amazon Resource Name (ARN) of an ECS cluster. - */ -static constexpr const char *kAwsEcsClusterArn = "aws.ecs.cluster.arn"; - /** * The launch @@ -187,15 +194,6 @@ static constexpr const char *kAwsEcsTaskRevision = "aws.ecs.task.revision"; */ static constexpr const char *kAwsEksClusterArn = "aws.eks.cluster.arn"; -/** - * The name(s) of the AWS log group(s) an application is writing to. - * - *

Notes: -

- */ -static constexpr const char *kAwsLogGroupNames = "aws.log.group.names"; - /** * The Amazon Resource Name(s) (ARN) of the AWS log group(s). * @@ -207,9 +205,13 @@ static constexpr const char *kAwsLogGroupNames = "aws.log.group.names"; static constexpr const char *kAwsLogGroupArns = "aws.log.group.arns"; /** - * The name(s) of the AWS log stream(s) an application is writing to. + * The name(s) of the AWS log group(s) an application is writing to. + * + *

Notes: +

*/ -static constexpr const char *kAwsLogStreamNames = "aws.log.stream.names"; +static constexpr const char *kAwsLogGroupNames = "aws.log.group.names"; /** * The ARN(s) of the AWS log stream(s). @@ -222,6 +224,11 @@ static constexpr const char *kAwsLogStreamNames = "aws.log.stream.names"; */ static constexpr const char *kAwsLogStreamArns = "aws.log.stream.arns"; +/** + * The name(s) of the AWS log stream(s) an application is writing to. + */ +static constexpr const char *kAwsLogStreamNames = "aws.log.stream.names"; + /** * The name of the Cloud Run
execution being run for the @@ -238,6 +245,12 @@ static constexpr const char *kGcpCloudRunJobExecution = "gcp.cloud_run.job.execu */ static constexpr const char *kGcpCloudRunJobTaskIndex = "gcp.cloud_run.job.task_index"; +/** + * The hostname of a GCE instance. This is the full value of the default or custom hostname. + */ +static constexpr const char *kGcpGceInstanceHostname = "gcp.gce.instance.hostname"; + /** * 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 @@ -248,10 +261,14 @@ static constexpr const char *kGcpCloudRunJobTaskIndex = "gcp.cloud_run.job.task_ static constexpr const char *kGcpGceInstanceName = "gcp.gce.instance.name"; /** - * The hostname of a GCE instance. This is the full value of the default or custom hostname. + * Unique identifier for the application */ -static constexpr const char *kGcpGceInstanceHostname = "gcp.gce.instance.hostname"; +static constexpr const char *kHerokuAppId = "heroku.app.id"; + +/** + * Commit hash for the current release + */ +static constexpr const char *kHerokuReleaseCommit = "heroku.release.commit"; /** * Time and date the release was created @@ -259,19 +276,23 @@ static constexpr const char *kGcpGceInstanceHostname = "gcp.gce.instance.hostnam static constexpr const char *kHerokuReleaseCreationTimestamp = "heroku.release.creation_timestamp"; /** - * Commit hash for the current release + * The command used to run the container (i.e. the command name). + * + *

Notes: +

*/ -static constexpr const char *kHerokuReleaseCommit = "heroku.release.commit"; +static constexpr const char *kContainerCommand = "container.command"; /** - * Unique identifier for the application + * All the command arguments (including the command/executable itself) run by the container. [2] */ -static constexpr const char *kHerokuAppId = "heroku.app.id"; +static constexpr const char *kContainerCommandArgs = "container.command_args"; /** - * Container name used by container runtime. + * The full command run by the container as a single string representing the full command. [2] */ -static constexpr const char *kContainerName = "container.name"; +static constexpr const char *kContainerCommandLine = "container.command_line"; /** * Container ID. Usually a UUID, as for example used to +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"; /** - * The command used to run the container (i.e. the command name). + * 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 *kContainerCommand = "container.command"; +static constexpr const char *kContainerImageRepoDigests = "container.image.repo_digests"; /** - * The full command run by the container as a single string representing the full command. [2] + * 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 *kContainerCommandLine = "container.command_line"; +static constexpr const char *kContainerImageTags = "container.image.tags"; /** - * All the command arguments (including the command/executable itself) run by the container. [2] + * Container name used by container runtime. */ -static constexpr const char *kContainerCommandArgs = "container.command_args"; +static constexpr const char *kContainerName = "container.name"; + +/** + * The container runtime managing this container. + */ +static constexpr const char *kContainerRuntime = "container.runtime"; /** * Name of the deployment @@ -352,6 +375,16 @@ static constexpr const char *kDeploymentEnvironment = "deployment.environment"; */ static constexpr const char *kDeviceId = "device.id"; +/** + * The name of the device manufacturer + * + *

Notes: +

+ */ +static constexpr const char *kDeviceManufacturer = "device.manufacturer"; + /** * The model identifier for the device * @@ -371,14 +404,25 @@ static constexpr const char *kDeviceModelIdentifier = "device.model.identifier"; static constexpr const char *kDeviceModelName = "device.model.name"; /** - * The name of the device manufacturer + * 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 *kDeviceManufacturer = "device.manufacturer"; +static constexpr const char *kFaasInstance = "faas.instance"; + +/** + * The amount of memory available to the serverless function converted to Bytes. + * + *

Notes: +

+ */ +static constexpr const char *kFaasMaxMemory = "faas.max_memory"; /** * The name of the single function that this runtime instance executes. @@ -387,7 +431,7 @@ static constexpr const char *kDeviceManufacturer = "device.manufacturer"; static constexpr const char *kTelemetrySdkName = "telemetry.sdk.name"; /** - * The language of the telemetry SDK. + * The version string of the telemetry SDK. */ -static constexpr const char *kTelemetrySdkLanguage = "telemetry.sdk.language"; +static constexpr const char *kTelemetrySdkVersion = "telemetry.sdk.version"; /** - * The version string of the telemetry SDK. + * The name of the auto instrumentation agent or distribution, if used. + * + *

Notes: +

*/ -static constexpr const char *kTelemetrySdkVersion = "telemetry.sdk.version"; +static constexpr const char *kTelemetryDistroName = "telemetry.distro.name"; /** - * The version string of the auto instrumentation agent, if used. + * The version string of the auto instrumentation agent or distribution, if used. */ -static constexpr const char *kTelemetryAutoVersion = "telemetry.auto.version"; +static constexpr const char *kTelemetryDistroVersion = "telemetry.distro.version"; + +/** + * Additional description of the web engine (e.g. detailed version and edition information). + */ +static constexpr const char *kWebengineDescription = "webengine.description"; /** * The name of the web engine. @@ -778,11 +881,6 @@ static constexpr const char *kWebengineName = "webengine.name"; */ static constexpr const char *kWebengineVersion = "webengine.version"; -/** - * Additional description of the web engine (e.g. detailed version and edition information). - */ -static constexpr const char *kWebengineDescription = "webengine.description"; - /** * The name of the instrumentation scope - ({@code InstrumentationScope.Name} in OTLP). */ @@ -810,24 +908,6 @@ OPENTELEMETRY_DEPRECATED static constexpr const char *kOtelLibraryVersion = "otel.library.version"; // Enum definitions -namespace CloudProviderValues -{ -/** Alibaba Cloud. */ -static constexpr const char *kAlibabaCloud = "alibaba_cloud"; -/** Amazon Web Services. */ -static constexpr const char *kAws = "aws"; -/** Microsoft Azure. */ -static constexpr const char *kAzure = "azure"; -/** Google Cloud Platform. */ -static constexpr const char *kGcp = "gcp"; -/** Heroku Platform as a Service. */ -static constexpr const char *kHeroku = "heroku"; -/** IBM Cloud. */ -static constexpr const char *kIbmCloud = "ibm_cloud"; -/** Tencent Cloud. */ -static constexpr const char *kTencentCloud = "tencent_cloud"; -} // namespace CloudProviderValues - namespace CloudPlatformValues { /** Alibaba Cloud Elastic Compute Service. */ @@ -886,6 +966,24 @@ static constexpr const char *kTencentCloudEks = "tencent_cloud_eks"; static constexpr const char *kTencentCloudScf = "tencent_cloud_scf"; } // namespace CloudPlatformValues +namespace CloudProviderValues +{ +/** Alibaba Cloud. */ +static constexpr const char *kAlibabaCloud = "alibaba_cloud"; +/** Amazon Web Services. */ +static constexpr const char *kAws = "aws"; +/** Microsoft Azure. */ +static constexpr const char *kAzure = "azure"; +/** Google Cloud Platform. */ +static constexpr const char *kGcp = "gcp"; +/** Heroku Platform as a Service. */ +static constexpr const char *kHeroku = "heroku"; +/** IBM Cloud. */ +static constexpr const char *kIbmCloud = "ibm_cloud"; +/** Tencent Cloud. */ +static constexpr const char *kTencentCloud = "tencent_cloud"; +} // namespace CloudProviderValues + namespace AwsEcsLaunchtypeValues { /** ec2. */ diff --git a/sdk/include/opentelemetry/sdk/version/version.h b/sdk/include/opentelemetry/sdk/version/version.h index b790af4574..16bd121b92 100644 --- a/sdk/include/opentelemetry/sdk/version/version.h +++ b/sdk/include/opentelemetry/sdk/version/version.h @@ -5,7 +5,7 @@ #include "opentelemetry/detail/preprocessor.h" -#define OPENTELEMETRY_SDK_VERSION "1.11.0" +#define OPENTELEMETRY_SDK_VERSION "1.12.0" #include "opentelemetry/version.h" diff --git a/sdk/src/version/version.cc b/sdk/src/version/version.cc index 34175bd4e4..fb2db64c30 100644 --- a/sdk/src/version/version.cc +++ b/sdk/src/version/version.cc @@ -12,13 +12,13 @@ namespace sdk namespace version { const int major_version = 1; -const int minor_version = 11; +const int minor_version = 12; const int patch_version = 0; const char *pre_release = "NONE"; const char *build_metadata = "NONE"; -const char *short_version = "1.11.0"; -const char *full_version = "1.11.0-NONE-NONE"; -const char *build_date = "Mon Aug 21 22:31:07 UTC 2023"; +const char *short_version = "1.12.0"; +const char *full_version = "1.12.0-NONE-NONE"; +const char *build_date = "Mon 16 Oct 2023 07:42:23 AM UTC"; } // namespace version } // namespace sdk