+ * Application instrumentation should use the value from environment
+ * variable @code VCAP_APPLICATION.application_id @endcode. This is the same value as
+ * reported by @code cf app
+ * CloudFoundry defines the @code instance_id @endcode in the Loggegator v2 envelope. It
+ * is used for logs and metrics emitted by CloudFoundry. It is supposed to contain the application
+ * instance index for applications deployed on the runtime. Application instrumentation should
+ * use the value from environment variable @code CF_INSTANCE_INDEX @endcode.
+ */
+static constexpr const char *kCloudfoundryAppInstanceId = "cloudfoundry.app.instance.id";
+
+/**
+ * The name of the application.
+ *
+ * Application instrumentation should use the value from environment
+ * variable @code VCAP_APPLICATION.application_name @endcode. This is the same value
+ * as reported by @code cf apps @endcode.
+ */
+static constexpr const char *kCloudfoundryAppName = "cloudfoundry.app.name";
+
+/**
+ * The guid of the CloudFoundry org the application is running in.
+ *
+ * Application instrumentation should use the value from environment
+ * variable @code VCAP_APPLICATION.org_id @endcode. This is the same value as
+ * reported by @code cf org
+ * Application instrumentation should use the value from environment
+ * variable @code VCAP_APPLICATION.org_name @endcode. This is the same value as
+ * reported by @code cf orgs @endcode.
+ */
+static constexpr const char *kCloudfoundryOrgName = "cloudfoundry.org.name";
+
+/**
+ * The UID identifying the process.
+ *
+ * Application instrumentation should use the value from environment
+ * variable @code VCAP_APPLICATION.process_id @endcode. It is supposed to be equal to
+ * @code VCAP_APPLICATION.app_id @endcode for applications deployed to the runtime.
+ * For system components, this could be the actual PID.
+ */
+static constexpr const char *kCloudfoundryProcessId = "cloudfoundry.process.id";
+
+/**
+ * The type of process.
+ *
+ * CloudFoundry applications can consist of multiple jobs. Usually the
+ * main process will be of type @code web @endcode. There can be additional background
+ * tasks or side-cars with different process types.
+ */
+static constexpr const char *kCloudfoundryProcessType = "cloudfoundry.process.type";
+
+/**
+ * The guid of the CloudFoundry space the application is running in.
+ *
+ * Application instrumentation should use the value from environment
+ * variable @code VCAP_APPLICATION.space_id @endcode. This is the same value as
+ * reported by @code cf space
+ * Application instrumentation should use the value from environment
+ * variable @code VCAP_APPLICATION.space_name @endcode. This is the same value as
+ * reported by @code cf spaces @endcode.
+ */
+static constexpr const char *kCloudfoundrySpaceName = "cloudfoundry.space.name";
+
+/**
+ * A guid or another name describing the event source.
+ *
+ * CloudFoundry defines the @code source_id @endcode in the Loggregator v2 envelope.
+ * It is used for logs and metrics emitted by CloudFoundry. It is
+ * supposed to contain the component name, e.g. "gorouter", for
+ * CloudFoundry components.
+ *
+ * When system components are instrumented, values from the
+ * Bosh spec
+ * should be used. The @code system.id @endcode should be set to
+ * @code spec.deployment/spec.name @endcode.
+ */
+static constexpr const char *kCloudfoundrySystemId = "cloudfoundry.system.id";
+
+/**
+ * A guid describing the concrete instance of the event source.
+ *
+ * CloudFoundry defines the @code instance_id @endcode in the Loggregator v2 envelope.
+ * It is used for logs and metrics emitted by CloudFoundry. It is
+ * supposed to contain the vm id for CloudFoundry components.
+ *
+ * When system components are instrumented, values from the
+ * Bosh spec
+ * should be used. The @code system.instance.id @endcode should be set to @code spec.id @endcode.
+ */
+static constexpr const char *kCloudfoundrySystemInstanceId = "cloudfoundry.system.instance.id";
+
+} // namespace cloudfoundry
+} // namespace semconv
+OPENTELEMETRY_END_NAMESPACE
diff --git a/api/include/opentelemetry/semconv/incubating/container_attributes.h b/api/include/opentelemetry/semconv/incubating/container_attributes.h
index 5bd1118c3b..2ea7810b30 100644
--- a/api/include/opentelemetry/semconv/incubating/container_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/container_attributes.h
@@ -28,12 +28,12 @@ namespace container
static constexpr const char *kContainerCommand = "container.command";
/**
- * All the command arguments (including the command/executable itself) run by the container. [2]
+ * All the command arguments (including the command/executable itself) run by the container.
*/
static constexpr const char *kContainerCommandArgs = "container.command_args";
/**
- * The full command run by the container as a single string representing the full command. [2]
+ * The full command run by the container as a single string representing the full command.
*/
static constexpr const char *kContainerCommandLine = "container.command_line";
@@ -46,9 +46,25 @@ static constexpr const char *kContainerCommandLine = "container.command_line";
OPENTELEMETRY_DEPRECATED
static constexpr const char *kContainerCpuState = "container.cpu.state";
+/**
+ * The name of the CSI (Container
+ * Storage Interface) plugin used by the volume. This can sometimes be referred to as a
+ * "driver" in CSI implementations. This should represent the @code name @endcode field of the
+ * GetPluginInfo RPC.
+ */
+static constexpr const char *kContainerCsiPluginName = "container.csi.plugin.name";
+
+/**
+ * The unique volume ID returned by the CSI (Container Storage Interface)
+ * plugin. This can sometimes be referred to as a "volume handle" in CSI implementations. This
+ * should represent the @code Volume.volume_id @endcode field in CSI spec.
+ */
+static constexpr const char *kContainerCsiVolumeId = "container.csi.volume.id";
+
/**
* Container ID. Usually a UUID, as for example used to identify Docker
+ * href="https://docs.docker.com/engine/containers/run/#container-identification">identify Docker
* containers. The UUID might be abbreviated.
*/
static constexpr const char *kContainerId = "container.id";
diff --git a/api/include/opentelemetry/semconv/incubating/container_metrics.h b/api/include/opentelemetry/semconv/incubating/container_metrics.h
index e670fb3788..8fa2541b32 100644
--- a/api/include/opentelemetry/semconv/incubating/container_metrics.h
+++ b/api/include/opentelemetry/semconv/incubating/container_metrics.h
@@ -59,6 +59,49 @@ CreateAsyncDoubleMetricContainerCpuTime(metrics::Meter *meter)
unitMetricContainerCpuTime);
}
+/**
+ * Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs
+ *
+ * CPU usage of the specific container on all available CPU cores, averaged over the sample window
+ *
+ * gauge
+ */
+static constexpr const char *kMetricContainerCpuUsage = "metric.container.cpu.usage";
+static constexpr const char *descrMetricContainerCpuUsage =
+ "Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs";
+static constexpr const char *unitMetricContainerCpuUsage = "{cpu}";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
diff --git a/api/include/opentelemetry/semconv/incubating/db_attributes.h b/api/include/opentelemetry/semconv/incubating/db_attributes.h
index 940f88b7da..7c5d3304bb 100644
--- a/api/include/opentelemetry/semconv/incubating/db_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/db_attributes.h
@@ -102,7 +102,8 @@ static constexpr const char *kDbClientConnectionsState = "db.client.connections.
* first collection name found in the query and it SHOULD match the value provided in the query text
* including any schema and database name prefix. For batch operations, if the individual operations
* are known to have the same collection name then that collection name SHOULD be used, otherwise
- * @code db.collection.name @endcode SHOULD NOT be captured.
+ * @code db.collection.name @endcode SHOULD NOT be captured. This attribute has stability level
+ * RELEASE CANDIDATE.
*/
static constexpr const char *kDbCollectionName = "db.collection.name";
@@ -110,7 +111,7 @@ static constexpr const char *kDbCollectionName = "db.collection.name";
* Deprecated, use @code server.address @endcode, @code server.port @endcode attributes instead.
*
* @deprecated
- * "Replaced by @code server.address @endcode and @code server.port @endcode."
+ * Replaced by @code server.address @endcode and @code server.port @endcode.
*/
OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbConnectionString = "db.connection_string";
@@ -135,7 +136,7 @@ OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCosmosdbContainer = "db.cosmosdb.container";
/**
- * CosmosDB Operation Type.
+ * Cosmos DB Operation Type.
*/
static constexpr const char *kDbCosmosdbOperationType = "db.cosmosdb.operation_type";
@@ -150,8 +151,12 @@ static constexpr const char *kDbCosmosdbRequestCharge = "db.cosmosdb.request_cha
static constexpr const char *kDbCosmosdbRequestContentLength = "db.cosmosdb.request_content_length";
/**
- * Cosmos DB status code.
+ * Deprecated, use @code db.response.status_code @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code db.response.status_code @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCosmosdbStatusCode = "db.cosmosdb.status_code";
/**
@@ -239,7 +244,8 @@ static constexpr const char *kDbName = "db.name";
* namespaces, to ensure that "startswith" queries for the more general namespaces will be valid.
* Semantic conventions for individual database systems SHOULD document what @code db.namespace
* @endcode means in the context of that system. It is RECOMMENDED to capture the value as provided
- * by the application without attempting to do any case normalization.
+ * by the application without attempting to do any case normalization. This attribute has stability
+ * level RELEASE CANDIDATE.
*/
static constexpr const char *kDbNamespace = "db.namespace";
@@ -253,10 +259,11 @@ OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbOperation = "db.operation";
/**
- * The number of queries included in a batch operation. Operations are
- * only considered batches when they contain two or more operations, and so @code
- * db.operation.batch.size @endcode SHOULD never be @code 1 @endcode.
+ * The number of queries included in a batch operation.
+ *
+ * Operations are only considered batches when they contain two or more operations, and so @code
+ * db.operation.batch.size @endcode SHOULD never be @code 1 @endcode. This attribute has stability
+ * level RELEASE CANDIDATE.
*/
static constexpr const char *kDbOperationBatchSize = "db.operation.batch.size";
@@ -268,7 +275,8 @@ static constexpr const char *kDbOperationBatchSize = "db.operation.batch.size";
* first operation name found in the query. For batch operations, if the individual operations are
* known to have the same operation name then that operation name SHOULD be used prepended by @code
* BATCH @endcode, otherwise @code db.operation.name @endcode SHOULD be @code BATCH @endcode or
- * some other database system specific term if more applicable.
+ * some other database system specific term if more applicable. This attribute has stability level
+ * RELEASE CANDIDATE.
*/
static constexpr const char *kDbOperationName = "db.operation.name";
@@ -277,7 +285,7 @@ static constexpr const char *kDbOperationName = "db.operation.name";
* parameter name, and the attribute value being a string representation of the parameter value.
* Query parameters should only be captured when @code db.query.text @endcode is parameterized with
* placeholders. If a parameter has no name and instead is referenced only by index, then @code
- *
+ * The status code returned by the database. Usually it represents an error code, but may also
+ * represent partial success, warning, or differentiate between various types of successful
+ * outcomes. Semantic conventions for individual database systems SHOULD document what @code
+ * db.response.status_code @endcode means in the context of that system. This attribute has
+ * stability level RELEASE CANDIDATE.
+ */
+static constexpr const char *kDbResponseStatusCode = "db.response.status_code";
+
/**
* Deprecated, use @code db.collection.name @endcode instead.
*
@@ -328,7 +348,8 @@ static constexpr const char *kDbStatement = "db.statement";
*
* The actual DBMS may differ from the one identified by the client. For example, when using
* PostgreSQL client libraries to connect to a CockroachDB, the @code db.system @endcode is set to
- * @code postgresql @endcode based on the instrumentation's best knowledge.
+ * @code postgresql @endcode based on the instrumentation's best knowledge. This attribute has
+ * stability level RELEASE CANDIDATE.
*/
static constexpr const char *kDbSystem = "db.system";
@@ -447,77 +468,77 @@ namespace DbCosmosdbOperationTypeValues
/**
* none
*/
-static constexpr const char *kInvalid = "Invalid";
+static constexpr const char *kBatch = "batch";
/**
* none
*/
-static constexpr const char *kCreate = "Create";
+static constexpr const char *kCreate = "create";
/**
* none
*/
-static constexpr const char *kPatch = "Patch";
+static constexpr const char *kDelete = "delete";
/**
* none
*/
-static constexpr const char *kRead = "Read";
+static constexpr const char *kExecute = "execute";
/**
* none
*/
-static constexpr const char *kReadFeed = "ReadFeed";
+static constexpr const char *kExecuteJavascript = "execute_javascript";
/**
* none
*/
-static constexpr const char *kDelete = "Delete";
+static constexpr const char *kInvalid = "invalid";
/**
* none
*/
-static constexpr const char *kReplace = "Replace";
+static constexpr const char *kHead = "head";
/**
* none
*/
-static constexpr const char *kExecute = "Execute";
+static constexpr const char *kHeadFeed = "head_feed";
/**
* none
*/
-static constexpr const char *kQuery = "Query";
+static constexpr const char *kPatch = "patch";
/**
* none
*/
-static constexpr const char *kHead = "Head";
+static constexpr const char *kQuery = "query";
/**
* none
*/
-static constexpr const char *kHeadFeed = "HeadFeed";
+static constexpr const char *kQueryPlan = "query_plan";
/**
* none
*/
-static constexpr const char *kUpsert = "Upsert";
+static constexpr const char *kRead = "read";
/**
* none
*/
-static constexpr const char *kBatch = "Batch";
+static constexpr const char *kReadFeed = "read_feed";
/**
* none
*/
-static constexpr const char *kQueryPlan = "QueryPlan";
+static constexpr const char *kReplace = "replace";
/**
* none
*/
-static constexpr const char *kExecuteJavascript = "ExecuteJavaScript";
+static constexpr const char *kUpsert = "upsert";
} // namespace DbCosmosdbOperationTypeValues
@@ -695,7 +716,7 @@ static constexpr const char *kInstantdb = "instantdb";
static constexpr const char *kInterbase = "interbase";
/**
- * MariaDB
+ * MariaDB (This value has stability level RELEASE CANDIDATE)
*/
static constexpr const char *kMariadb = "mariadb";
@@ -715,7 +736,7 @@ static constexpr const char *kMemcached = "memcached";
static constexpr const char *kMongodb = "mongodb";
/**
- * Microsoft SQL Server
+ * Microsoft SQL Server (This value has stability level RELEASE CANDIDATE)
*/
static constexpr const char *kMssql = "mssql";
@@ -729,7 +750,7 @@ OPENTELEMETRY_DEPRECATED
static constexpr const char *kMssqlcompact = "mssqlcompact";
/**
- * MySQL
+ * MySQL (This value has stability level RELEASE CANDIDATE)
*/
static constexpr const char *kMysql = "mysql";
@@ -764,7 +785,7 @@ static constexpr const char *kPervasive = "pervasive";
static constexpr const char *kPointbase = "pointbase";
/**
- * PostgreSQL
+ * PostgreSQL (This value has stability level RELEASE CANDIDATE)
*/
static constexpr const char *kPostgresql = "postgresql";
diff --git a/api/include/opentelemetry/semconv/incubating/db_metrics.h b/api/include/opentelemetry/semconv/incubating/db_metrics.h
index 6ea8e095c7..d3dd52190e 100644
--- a/api/include/opentelemetry/semconv/incubating/db_metrics.h
+++ b/api/include/opentelemetry/semconv/incubating/db_metrics.h
@@ -217,14 +217,14 @@ CreateAsyncDoubleMetricDbClientConnectionMax(metrics::Meter *meter)
}
/**
- * The number of pending requests for an open connection, cumulative for the entire pool
+ * The number of current pending requests for an open connection
*
* updowncounter
*/
static constexpr const char *kMetricDbClientConnectionPendingRequests =
"metric.db.client.connection.pending_requests";
static constexpr const char *descrMetricDbClientConnectionPendingRequests =
- "The number of pending requests for an open connection, cumulative for the entire pool";
+ "The number of current pending requests for an open connection";
static constexpr const char *unitMetricDbClientConnectionPendingRequests = "{request}";
static inline nostd::unique_ptr
+ * This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc.
+ */
+static constexpr const char *kFileAccessed = "file.accessed";
+
+/**
+ * Array of file attributes.
+ *
+ * Attributes names depend on the OS or file system. Here’s a non-exhaustive list of values expected
+ * for this attribute: @code archive @endcode, @code compressed @endcode, @code directory @endcode,
+ * @code encrypted @endcode, @code execute @endcode, @code hidden @endcode, @code immutable
+ * @endcode, @code journaled @endcode, @code read @endcode, @code readonly @endcode, @code symbolic
+ * link @endcode, @code system @endcode, @code temporary @endcode, @code write @endcode.
+ */
+static constexpr const char *kFileAttributes = "file.attributes";
+
+/**
+ * Time when the file attributes or metadata was last changed, in ISO 8601 format.
+ *
+ * @code file.changed @endcode captures the time when any of the file's properties or attributes
+ * (including the content) are changed, while @code file.modified @endcode captures the timestamp
+ * when the file content is modified.
+ */
+static constexpr const char *kFileChanged = "file.changed";
+
+/**
+ * Time when the file was created, in ISO 8601 format.
+ *
+ * This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc.
+ */
+static constexpr const char *kFileCreated = "file.created";
+
/**
* Directory where the file is located. It should include the drive letter, when appropriate.
*/
@@ -32,11 +66,61 @@ static constexpr const char *kFileDirectory = "file.directory";
*/
static constexpr const char *kFileExtension = "file.extension";
+/**
+ * Name of the fork. A fork is additional data associated with a filesystem object.
+ *
+ * On Linux, a resource fork is used to store additional data with a filesystem object. A file
+ * always has at least one fork for the data portion, and additional forks may exist. On NTFS, this
+ * is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just
+ * called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the
+ * Internet. An ADS is typically of the form: C:\path\to\filename.extension:some_fork_name, and
+ * some_fork_name is the value that should populate @code fork_name @endcode. @code
+ * filename.extension @endcode should populate @code file.name @endcode, and @code extension
+ * @endcode should populate @code file.extension @endcode. The full path, @code file.path @endcode,
+ * will include the fork name.
+ */
+static constexpr const char *kFileForkName = "file.fork_name";
+
+/**
+ * Primary Group ID (GID) of the file.
+ */
+static constexpr const char *kFileGroupId = "file.group.id";
+
+/**
+ * Primary group name of the file.
+ */
+static constexpr const char *kFileGroupName = "file.group.name";
+
+/**
+ * Inode representing the file in the filesystem.
+ */
+static constexpr const char *kFileInode = "file.inode";
+
+/**
+ * Mode of the file in octal representation.
+ */
+static constexpr const char *kFileMode = "file.mode";
+
+/**
+ * Time when the file content was last modified, in ISO 8601 format.
+ */
+static constexpr const char *kFileModified = "file.modified";
+
/**
* Name of the file including the extension, without the directory.
*/
static constexpr const char *kFileName = "file.name";
+/**
+ * The user ID (UID) or security identifier (SID) of the file owner.
+ */
+static constexpr const char *kFileOwnerId = "file.owner.id";
+
+/**
+ * Username of the file owner.
+ */
+static constexpr const char *kFileOwnerName = "file.owner.name";
+
/**
* Full path to the file, including the file name. It should include the drive letter, when
* appropriate.
@@ -48,6 +132,13 @@ static constexpr const char *kFilePath = "file.path";
*/
static constexpr const char *kFileSize = "file.size";
+/**
+ * Path to the target of a symbolic link.
+ *
+ * This attribute is only applicable to symbolic links.
+ */
+static constexpr const char *kFileSymbolicLinkTargetPath = "file.symbolic_link.target_path";
+
} // namespace file
} // namespace semconv
OPENTELEMETRY_END_NAMESPACE
diff --git a/api/include/opentelemetry/semconv/incubating/gen_ai_attributes.h b/api/include/opentelemetry/semconv/incubating/gen_ai_attributes.h
index 03f2eebc2c..ce4a939d07 100644
--- a/api/include/opentelemetry/semconv/incubating/gen_ai_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/gen_ai_attributes.h
@@ -20,13 +20,36 @@ namespace gen_ai
{
/**
- * The full response received from the GenAI model.
+ * Deprecated, use Event API to report completions contents.
*
- * It's RECOMMENDED to format completions as JSON string matching OpenAI messages format
+ * @deprecated
+ * Removed, no replacement at this time.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kGenAiCompletion = "gen_ai.completion";
+/**
+ * The response format that is requested.
+ */
+static constexpr const char *kGenAiOpenaiRequestResponseFormat =
+ "gen_ai.openai.request.response_format";
+
+/**
+ * Requests with same seed value more likely to return same result.
+ */
+static constexpr const char *kGenAiOpenaiRequestSeed = "gen_ai.openai.request.seed";
+
+/**
+ * The service tier requested. May be a specific tier, detault, or auto.
+ */
+static constexpr const char *kGenAiOpenaiRequestServiceTier = "gen_ai.openai.request.service_tier";
+
+/**
+ * The service tier used for the response.
+ */
+static constexpr const char *kGenAiOpenaiResponseServiceTier =
+ "gen_ai.openai.response.service_tier";
+
/**
* The name of the operation being performed.
*
@@ -38,11 +61,12 @@ static constexpr const char *kGenAiCompletion = "gen_ai.completion";
static constexpr const char *kGenAiOperationName = "gen_ai.operation.name";
/**
- * The full prompt sent to the GenAI model.
+ * Deprecated, use Event API to report prompt contents.
*
- * It's RECOMMENDED to format prompts as JSON string matching OpenAI messages format
+ * @deprecated
+ * Removed, no replacement at this time.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kGenAiPrompt = "gen_ai.prompt";
/**
@@ -146,6 +170,39 @@ static constexpr const char *kGenAiUsageOutputTokens = "gen_ai.usage.output_toke
OPENTELEMETRY_DEPRECATED
static constexpr const char *kGenAiUsagePromptTokens = "gen_ai.usage.prompt_tokens";
+namespace GenAiOpenaiRequestResponseFormatValues
+{
+/**
+ * Text response format
+ */
+static constexpr const char *kText = "text";
+
+/**
+ * JSON object response format
+ */
+static constexpr const char *kJsonObject = "json_object";
+
+/**
+ * JSON schema response format
+ */
+static constexpr const char *kJsonSchema = "json_schema";
+
+} // namespace GenAiOpenaiRequestResponseFormatValues
+
+namespace GenAiOpenaiRequestServiceTierValues
+{
+/**
+ * The system will utilize scale tier credits until they are exhausted.
+ */
+static constexpr const char *kAuto = "auto";
+
+/**
+ * The system will utilize the default scale tier.
+ */
+static constexpr const char *kDefault = "default";
+
+} // namespace GenAiOpenaiRequestServiceTierValues
+
namespace GenAiOperationNameValues
{
/**
diff --git a/api/include/opentelemetry/semconv/incubating/http_attributes.h b/api/include/opentelemetry/semconv/incubating/http_attributes.h
index 3e06e4e925..8f909f5297 100644
--- a/api/include/opentelemetry/semconv/incubating/http_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/http_attributes.h
@@ -126,10 +126,10 @@ static constexpr const char *kHttpRequestResendCount = "http.request.resend_coun
static constexpr const char *kHttpRequestSize = "http.request.size";
/**
- * Deprecated, use @code http.request.header.content-length @endcode instead.
+ * Deprecated, use @code http.request.header.
* @deprecated
- * Replaced by @code http.request.header.content-length @endcode.
+ * Replaced by @code http.request.header.
* @deprecated
- * Replaced by @code http.response.header.content-length @endcode.
+ * Replaced by @code http.response.header.
+ * Describes the category of the hardware component for which @code hw.state @endcode is being
+ * reported. For example, @code hw.type=temperature @endcode along with @code hw.state=degraded
+ * @endcode would indicate that the temperature of the hardware component has been reported as @code
+ * degraded @endcode.
+ */
+static constexpr const char *kHwType = "hw.type";
+
+namespace HwStateValues
+{
+/**
+ * Ok
+ */
+static constexpr const char *kOk = "ok";
+
+/**
+ * Degraded
+ */
+static constexpr const char *kDegraded = "degraded";
+
+/**
+ * Failed
+ */
+static constexpr const char *kFailed = "failed";
+
+} // namespace HwStateValues
+
+namespace HwTypeValues
+{
+/**
+ * Battery
+ */
+static constexpr const char *kBattery = "battery";
+
+/**
+ * CPU
+ */
+static constexpr const char *kCpu = "cpu";
+
+/**
+ * Disk controller
+ */
+static constexpr const char *kDiskController = "disk_controller";
+
+/**
+ * Enclosure
+ */
+static constexpr const char *kEnclosure = "enclosure";
+
+/**
+ * Fan
+ */
+static constexpr const char *kFan = "fan";
+
+/**
+ * GPU
+ */
+static constexpr const char *kGpu = "gpu";
+
+/**
+ * Logical disk
+ */
+static constexpr const char *kLogicalDisk = "logical_disk";
+
+/**
+ * Memory
+ */
+static constexpr const char *kMemory = "memory";
+
+/**
+ * Network
+ */
+static constexpr const char *kNetwork = "network";
+
+/**
+ * Physical disk
+ */
+static constexpr const char *kPhysicalDisk = "physical_disk";
+
+/**
+ * Power supply
+ */
+static constexpr const char *kPowerSupply = "power_supply";
+
+/**
+ * Tape drive
+ */
+static constexpr const char *kTapeDrive = "tape_drive";
+
+/**
+ * Temperature
+ */
+static constexpr const char *kTemperature = "temperature";
+
+/**
+ * Voltage
+ */
+static constexpr const char *kVoltage = "voltage";
+
+} // namespace HwTypeValues
+
+} // namespace hw
+} // namespace semconv
+OPENTELEMETRY_END_NAMESPACE
diff --git a/api/include/opentelemetry/semconv/incubating/hw_metrics.h b/api/include/opentelemetry/semconv/incubating/hw_metrics.h
new file mode 100644
index 0000000000..3a87fd2506
--- /dev/null
+++ b/api/include/opentelemetry/semconv/incubating/hw_metrics.h
@@ -0,0 +1,174 @@
+/*
+ * Copyright The OpenTelemetry Authors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/*
+ * DO NOT EDIT, this is an Auto-generated file from:
+ * buildscripts/semantic-convention/templates/registry/semantic_metrics-h.j2
+ */
+
+#pragma once
+
+#include "opentelemetry/common/macros.h"
+#include "opentelemetry/metrics/meter.h"
+#include "opentelemetry/version.h"
+
+OPENTELEMETRY_BEGIN_NAMESPACE
+namespace semconv
+{
+namespace hw
+{
+
+/**
+ * Energy consumed by the component
+ *
+ * counter
+ */
+static constexpr const char *kMetricHwEnergy = "metric.hw.energy";
+static constexpr const char *descrMetricHwEnergy = "Energy consumed by the component";
+static constexpr const char *unitMetricHwEnergy = "J";
+
+static inline nostd::unique_ptr
+ * counter
+ */
+static constexpr const char *kMetricHwErrors = "metric.hw.errors";
+static constexpr const char *descrMetricHwErrors = "Number of errors encountered by the component";
+static constexpr const char *unitMetricHwErrors = "{error}";
+
+static inline nostd::unique_ptr
+ * It is recommended to report @code hw.energy @endcode instead of @code hw.power @endcode when
+ * possible. gauge
+ */
+static constexpr const char *kMetricHwPower = "metric.hw.power";
+static constexpr const char *descrMetricHwPower = "Instantaneous power consumed by the component";
+static constexpr const char *unitMetricHwPower = "W";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ * @code hw.status @endcode is currently specified as an UpDownCounter but would ideally be
+ * represented using a StateSet
+ * as defined in OpenMetrics. This semantic convention will be updated once StateSet is
+ * specified in OpenTelemetry. This planned change is not expected to have any consequence on the
+ * way users query their timeseries backend to retrieve the values of @code hw.status @endcode over
+ * time. updowncounter
+ */
+static constexpr const char *kMetricHwStatus = "metric.hw.status";
+static constexpr const char *descrMetricHwStatus =
+ "Operational status: `1` (true) or `0` (false) for each of the possible states";
+static constexpr const char *unitMetricHwStatus = "1";
+
+static inline nostd::unique_ptr
+ * Total CPU time consumed by the specific Node on all available CPU cores
+ *
+ * counter
+ */
+static constexpr const char *kMetricK8sNodeCpuTime = "metric.k8s.node.cpu.time";
+static constexpr const char *descrMetricK8sNodeCpuTime = "Total CPU time consumed";
+static constexpr const char *unitMetricK8sNodeCpuTime = "s";
+
+static inline nostd::unique_ptr
+ * CPU usage of the specific Node on all available CPU cores, averaged over the sample window
+ *
+ * gauge
+ */
+static constexpr const char *kMetricK8sNodeCpuUsage = "metric.k8s.node.cpu.usage";
+static constexpr const char *descrMetricK8sNodeCpuUsage =
+ "Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs";
+static constexpr const char *unitMetricK8sNodeCpuUsage = "{cpu}";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ * Total memory usage of the Node
+ *
+ * gauge
+ */
+static constexpr const char *kMetricK8sNodeMemoryUsage = "metric.k8s.node.memory.usage";
+static constexpr const char *descrMetricK8sNodeMemoryUsage = "Memory usage of the Node";
+static constexpr const char *unitMetricK8sNodeMemoryUsage = "By";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ * Total CPU time consumed by the specific Pod on all available CPU cores
+ *
+ * counter
+ */
+static constexpr const char *kMetricK8sPodCpuTime = "metric.k8s.pod.cpu.time";
+static constexpr const char *descrMetricK8sPodCpuTime = "Total CPU time consumed";
+static constexpr const char *unitMetricK8sPodCpuTime = "s";
+
+static inline nostd::unique_ptr
+ * CPU usage of the specific Pod on all available CPU cores, averaged over the sample window
+ *
+ * gauge
+ */
+static constexpr const char *kMetricK8sPodCpuUsage = "metric.k8s.pod.cpu.usage";
+static constexpr const char *descrMetricK8sPodCpuUsage =
+ "Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs";
+static constexpr const char *unitMetricK8sPodCpuUsage = "{cpu}";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ * Total memory usage of the Pod
+ *
+ * gauge
+ */
+static constexpr const char *kMetricK8sPodMemoryUsage = "metric.k8s.pod.memory.usage";
+static constexpr const char *descrMetricK8sPodMemoryUsage = "Memory usage of the Pod";
+static constexpr const char *unitMetricK8sPodMemoryUsage = "By";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
* This value MAY be added when processing a Log Record which was originally transmitted as a string
* or equivalent data type AND the Body field of the Log Record does not contain the same value.
diff --git a/api/include/opentelemetry/semconv/incubating/messaging_attributes.h b/api/include/opentelemetry/semconv/incubating/messaging_attributes.h
index c5f07fe241..4cf20365ab 100644
--- a/api/include/opentelemetry/semconv/incubating/messaging_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/messaging_attributes.h
@@ -328,10 +328,10 @@ static constexpr const char *kMessagingRocketmqMessageType = "messaging.rocketmq
static constexpr const char *kMessagingRocketmqNamespace = "messaging.rocketmq.namespace";
/**
- * Deprecated, use @code messaging.servicebus.destination.subscription_name @endcode instead.
+ * Deprecated, use @code messaging.destination.subscription.name @endcode instead.
*
* @deprecated
- * Replaced by @code messaging.servicebus.destination.subscription_name @endcode.
+ * Replaced by @code messaging.destination.subscription.name @endcode.
*/
OPENTELEMETRY_DEPRECATED
static constexpr const char *kMessagingServicebusDestinationSubscriptionName =
@@ -369,17 +369,17 @@ static constexpr const char *kMessagingSystem = "messaging.system";
namespace MessagingOperationTypeValues
{
/**
- * One or more messages are provided for publishing to an intermediary. If a single message is
- * published, the context of the "Publish" span can be used as the creation context and no "Create"
- * span needs to be created.
+ * A message is created. "Create" spans always refer to a single message and are used to provide a
+ * unique creation context for messages in batch sending scenarios.
*/
-static constexpr const char *kPublish = "publish";
+static constexpr const char *kCreate = "create";
/**
- * A message is created. "Create" spans always refer to a single message and are used to provide a
- * unique creation context for messages in batch publishing scenarios.
+ * One or more messages are provided for sending to an intermediary. If a single message is sent,
+ * the context of the "Send" span can be used as the creation context and no "Create" span needs to
+ * be created.
*/
-static constexpr const char *kCreate = "create";
+static constexpr const char *kSend = "send";
/**
* One or more messages are requested by a consumer. This operation refers to pull-based scenarios,
@@ -406,6 +406,15 @@ static constexpr const char *kSettle = "settle";
OPENTELEMETRY_DEPRECATED
static constexpr const char *kDeliver = "deliver";
+/**
+ * Deprecated. Use @code send @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code send @endcode.
+ */
+OPENTELEMETRY_DEPRECATED
+static constexpr const char *kPublish = "publish";
+
} // namespace MessagingOperationTypeValues
namespace MessagingRocketmqConsumptionModelValues
diff --git a/api/include/opentelemetry/semconv/incubating/messaging_metrics.h b/api/include/opentelemetry/semconv/incubating/messaging_metrics.h
index 5da042da2d..9c29fb86b3 100644
--- a/api/include/opentelemetry/semconv/incubating/messaging_metrics.h
+++ b/api/include/opentelemetry/semconv/incubating/messaging_metrics.h
@@ -96,18 +96,23 @@ CreateSyncDoubleMetricMessagingClientOperationDuration(metrics::Meter *meter)
}
/**
- * Number of messages producer attempted to publish to the broker.
+ * Deprecated. Use @code messaging.client.sent.messages @endcode instead.
*
- * This metric MUST NOT count messages that were created haven't yet been attempted to be published.
+ * @deprecated
+ * Replaced by @code messaging.client.sent.messages @endcode.
*
* counter
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kMetricMessagingClientPublishedMessages =
"metric.messaging.client.published.messages";
+OPENTELEMETRY_DEPRECATED
static constexpr const char *descrMetricMessagingClientPublishedMessages =
- "Number of messages producer attempted to publish to the broker.";
+ "Deprecated. Use `messaging.client.sent.messages` instead.";
+OPENTELEMETRY_DEPRECATED
static constexpr const char *unitMetricMessagingClientPublishedMessages = "{message}";
+OPENTELEMETRY_DEPRECATED
static inline nostd::unique_ptr
+ * This metric MUST NOT count messages that were created but haven't yet been sent.
+ *
+ * counter
+ */
+static constexpr const char *kMetricMessagingClientSentMessages =
+ "metric.messaging.client.sent.messages";
+static constexpr const char *descrMetricMessagingClientSentMessages =
+ "Number of messages producer attempted to send to the broker.";
+static constexpr const char *unitMetricMessagingClientSentMessages = "{message}";
+
+static inline nostd::unique_ptr
diff --git a/api/include/opentelemetry/semconv/incubating/otel_attributes.h b/api/include/opentelemetry/semconv/incubating/otel_attributes.h
index 241e07d1aa..e3a3251005 100644
--- a/api/include/opentelemetry/semconv/incubating/otel_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/otel_attributes.h
@@ -20,15 +20,19 @@ namespace otel
{
/**
+ * Deprecated. Use the @code otel.scope.name @endcode attribute
+ *
* @deprecated
- * use the @code otel.scope.name @endcode attribute.
+ * Use the @code otel.scope.name @endcode attribute.
*/
OPENTELEMETRY_DEPRECATED
static constexpr const char *kOtelLibraryName = "otel.library.name";
/**
+ * Deprecated. Use the @code otel.scope.version @endcode attribute.
+ *
* @deprecated
- * use the @code otel.scope.version @endcode attribute.
+ * Use the @code otel.scope.version @endcode attribute.
*/
OPENTELEMETRY_DEPRECATED
static constexpr const char *kOtelLibraryVersion = "otel.library.version";
diff --git a/api/include/opentelemetry/semconv/incubating/process_attributes.h b/api/include/opentelemetry/semconv/incubating/process_attributes.h
index 392ef869d1..de81b12c38 100644
--- a/api/include/opentelemetry/semconv/incubating/process_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/process_attributes.h
@@ -19,6 +19,14 @@ namespace semconv
namespace process
{
+/**
+ * Length of the process.command_args array
+ *
+ * This field can be useful for querying or performing bucket analysis on how many arguments were
+ * provided to start a process. More arguments may be an indication of suspicious activity.
+ */
+static constexpr const char *kProcessArgsCount = "process.args_count";
+
/**
* The command used to launch the process (i.e. the command name). On Linux based systems, can be
* set to the zeroth string in @code proc/[pid]/cmdline @endcode. On Windows, can be set to the
@@ -60,6 +68,23 @@ static constexpr const char *kProcessCpuState = "process.cpu.state";
*/
static constexpr const char *kProcessCreationTime = "process.creation.time";
+/**
+ * The GNU build ID as found in the @code .note.gnu.build-id @endcode ELF section (hex string).
+ */
+static constexpr const char *kProcessExecutableBuildIdGnu = "process.executable.build_id.gnu";
+
+/**
+ * The Go build ID as retrieved by @code go tool buildid
+ * In many Unix-like systems, process title (proctitle), is the string that represents the name or
+ * command line of a running process, displayed by system monitoring tools like ps, top, and htop.
+ */
+static constexpr const char *kProcessTitle = "process.title";
+
/**
* The effective user ID (EUID) of the process.
*/
@@ -174,6 +207,11 @@ static constexpr const char *kProcessUserName = "process.user.name";
*/
static constexpr const char *kProcessVpid = "process.vpid";
+/**
+ * The working directory of the process.
+ */
+static constexpr const char *kProcessWorkingDirectory = "process.working_directory";
+
namespace ProcessContextSwitchTypeValues
{
/**
diff --git a/api/include/opentelemetry/semconv/incubating/process_metrics.h b/api/include/opentelemetry/semconv/incubating/process_metrics.h
index 95a1853ccb..5f851a2d41 100644
--- a/api/include/opentelemetry/semconv/incubating/process_metrics.h
+++ b/api/include/opentelemetry/semconv/incubating/process_metrics.h
@@ -411,6 +411,44 @@ CreateAsyncDoubleMetricProcessThreadCount(metrics::Meter *meter)
kMetricProcessThreadCount, descrMetricProcessThreadCount, unitMetricProcessThreadCount);
}
+/**
+ * The time the process has been running.
+ *
+ * Instrumentations SHOULD use counter with type @code double @endcode and measure uptime with at
+ * least millisecond precision counter
+ */
+static constexpr const char *kMetricProcessUptime = "metric.process.uptime";
+static constexpr const char *descrMetricProcessUptime = "The time the process has been running.";
+static constexpr const char *unitMetricProcessUptime = "s";
+
+static inline nostd::unique_ptr
+ * updowncounter
+ */
+static constexpr const char *kMetricSystemDiskLimit = "metric.system.disk.limit";
+static constexpr const char *descrMetricSystemDiskLimit = "The total storage capacity of the disk";
+static constexpr const char *unitMetricSystemDiskLimit = "By";
+
+static inline nostd::unique_ptr
* updowncounter
*/
-static constexpr const char *kMetricSystemFilesystemUsage = "metric.system.filesystem.usage";
-static constexpr const char *descrMetricSystemFilesystemUsage = "";
-static constexpr const char *unitMetricSystemFilesystemUsage = "By";
+static constexpr const char *kMetricSystemFilesystemLimit = "metric.system.filesystem.limit";
+static constexpr const char *descrMetricSystemFilesystemLimit =
+ "The total storage capacity of the filesystem";
+static constexpr const char *unitMetricSystemFilesystemLimit = "By";
+
+static inline nostd::unique_ptr
+ * The sum of all @code system.filesystem.usage @endcode values over the different @code
+ * system.filesystem.state @endcode attributes SHOULD equal the total storage capacity of the
+ * filesystem, that is @code system.filesystem.limit @endcode. updowncounter
+ */
+static constexpr const char *kMetricSystemFilesystemUsage = "metric.system.filesystem.usage";
+static constexpr const char *descrMetricSystemFilesystemUsage =
+ "Reports a filesystem's space usage across different states.";
+static constexpr const char *unitMetricSystemFilesystemUsage = "By";
static inline nostd::unique_ptr
* @deprecated
- * Replaced by `server.address.
+ * Replaced by @code server.address @endcode.
*/
OPENTELEMETRY_DEPRECATED
static constexpr const char *kTlsClientServerName = "tls.client.server_name";
diff --git a/api/include/opentelemetry/semconv/schema_url.h b/api/include/opentelemetry/semconv/schema_url.h
index 62d040e40b..a25e28b5ea 100644
--- a/api/include/opentelemetry/semconv/schema_url.h
+++ b/api/include/opentelemetry/semconv/schema_url.h
@@ -19,6 +19,6 @@ namespace semconv
/**
* The URL of the OpenTelemetry schema for these keys and values.
*/
-static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.27.0";
+static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.28.0";
} // namespace semconv
OPENTELEMETRY_END_NAMESPACE
diff --git a/buildscripts/semantic-convention/generate.sh b/buildscripts/semantic-convention/generate.sh
index 79becfefbd..b6fecb4459 100755
--- a/buildscripts/semantic-convention/generate.sh
+++ b/buildscripts/semantic-convention/generate.sh
@@ -16,7 +16,7 @@ ROOT_DIR="${SCRIPT_DIR}/../../"
# freeze the spec & generator tools versions to make the generation reproducible
# repository: https://github.com/open-telemetry/semantic-conventions
-SEMCONV_VERSION=1.27.0
+SEMCONV_VERSION=1.28.0
# repository: https://github.com/open-telemetry/weaver
WEAVER_VERSION=0.10.0