diff --git a/api/include/opentelemetry/semconv/incubating/app_attributes.h b/api/include/opentelemetry/semconv/incubating/app_attributes.h index fdbad251b1..b8477ee3bb 100644 --- a/api/include/opentelemetry/semconv/incubating/app_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/app_attributes.h @@ -19,6 +19,11 @@ namespace semconv namespace app { +/** + Unique identifier for a particular build or compilation of the application. + */ +static constexpr const char *kAppBuildId = "app.build_id"; + /** A unique identifier representing the installation of an application on a specific device
@@ -42,11 +47,29 @@ namespace app Settings.getString(Settings.Secure.ANDROID_ID) @endcode.
- More information about Android identifier best practices can be found here. + More information about Android identifier best practices can be found in the Android user data IDs + guide. */ static constexpr const char *kAppInstallationId = "app.installation.id"; +/** + A number of frame renders that experienced jank. +
+ Depending on platform limitations, the value provided MAY be approximation. + */ +static constexpr const char *kAppJankFrameCount = "app.jank.frame_count"; + +/** + The time period, in seconds, for which this jank is being reported. + */ +static constexpr const char *kAppJankPeriod = "app.jank.period"; + +/** + The minimum rendering threshold for this jank, in seconds. + */ +static constexpr const char *kAppJankThreshold = "app.jank.threshold"; + /** The x (horizontal) coordinate of a screen coordinate, in screen pixels. */ diff --git a/api/include/opentelemetry/semconv/incubating/aws_attributes.h b/api/include/opentelemetry/semconv/incubating/aws_attributes.h index 2abf1b762d..d592255802 100644 --- a/api/include/opentelemetry/semconv/incubating/aws_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/aws_attributes.h @@ -409,12 +409,12 @@ static constexpr const char *kAwsStepFunctionsStateMachineArn = namespace AwsEcsLaunchtypeValues { /** - none + Amazon EC2 */ static constexpr const char *kEc2 = "ec2"; /** - none + Amazon Fargate */ static constexpr const char *kFargate = "fargate"; diff --git a/api/include/opentelemetry/semconv/incubating/azure_attributes.h b/api/include/opentelemetry/semconv/incubating/azure_attributes.h index 0c62bad288..1618050f9d 100644 --- a/api/include/opentelemetry/semconv/incubating/azure_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/azure_attributes.h @@ -92,27 +92,27 @@ static constexpr const char *kDirect = "direct"; namespace AzureCosmosdbConsistencyLevelValues { /** - none + Strong */ static constexpr const char *kStrong = "Strong"; /** - none + Bounded Staleness */ static constexpr const char *kBoundedStaleness = "BoundedStaleness"; /** - none + Session */ static constexpr const char *kSession = "Session"; /** - none + Eventual */ static constexpr const char *kEventual = "Eventual"; /** - none + Consistent Prefix */ static constexpr const char *kConsistentPrefix = "ConsistentPrefix"; diff --git a/api/include/opentelemetry/semconv/incubating/azure_metrics.h b/api/include/opentelemetry/semconv/incubating/azure_metrics.h index fb60c3ce53..98f265f5e1 100644 --- a/api/include/opentelemetry/semconv/incubating/azure_metrics.h +++ b/api/include/opentelemetry/semconv/incubating/azure_metrics.h @@ -21,14 +21,14 @@ namespace azure { /** - Number of active client instances + Number of active client instances.
updowncounter
*/
static constexpr const char *kMetricAzureCosmosdbClientActiveInstanceCount =
"azure.cosmosdb.client.active_instance.count";
static constexpr const char *descrMetricAzureCosmosdbClientActiveInstanceCount =
- "Number of active client instances";
+ "Number of active client instances.";
static constexpr const char *unitMetricAzureCosmosdbClientActiveInstanceCount = "{instance}";
static inline nostd::unique_ptr histogram
+ the operation. histogram
*/
static constexpr const char *kMetricAzureCosmosdbClientOperationRequestCharge =
"azure.cosmosdb.client.operation.request_charge";
static constexpr const char *descrMetricAzureCosmosdbClientOperationRequestCharge =
"[Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the "
- "operation";
+ "operation.";
static constexpr const char *unitMetricAzureCosmosdbClientOperationRequestCharge = "{request_unit}";
static inline nostd::unique_ptr
Total CPU time consumed by the specific container on all available CPU cores
counter
*/
static constexpr const char *kMetricContainerCpuTime = "container.cpu.time";
-static constexpr const char *descrMetricContainerCpuTime = "Total CPU time consumed";
+static constexpr const char *descrMetricContainerCpuTime = "Total CPU time consumed.";
static constexpr const char *unitMetricContainerCpuTime = "s";
static inline nostd::unique_ptr
CPU usage of the specific container on all available CPU cores, averaged over the sample window
@@ -68,7 +68,7 @@ CreateAsyncDoubleMetricContainerCpuTime(metrics::Meter *meter)
*/
static constexpr const char *kMetricContainerCpuUsage = "container.cpu.usage";
static constexpr const char *descrMetricContainerCpuUsage =
- "Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs";
+ "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
@@ -141,6 +141,154 @@ CreateAsyncDoubleMetricContainerDiskIo(metrics::Meter *meter)
unitMetricContainerDiskIo);
}
+/**
+ Container filesystem available bytes.
+
+ In K8s, this metric is derived from the
+ FsStats.AvailableBytes
+ field of the ContainerStats.Rootfs
+ of the Kubelet's stats API.
+
+ updowncounter
+ */
+static constexpr const char *kMetricContainerFilesystemAvailable = "container.filesystem.available";
+static constexpr const char *descrMetricContainerFilesystemAvailable =
+ "Container filesystem available bytes.";
+static constexpr const char *unitMetricContainerFilesystemAvailable = "By";
+
+static inline nostd::unique_ptr
+ In K8s, this metric is derived from the
+ FsStats.CapacityBytes
+ field of the ContainerStats.Rootfs
+ of the Kubelet's stats API.
+
+ updowncounter
+ */
+static constexpr const char *kMetricContainerFilesystemCapacity = "container.filesystem.capacity";
+static constexpr const char *descrMetricContainerFilesystemCapacity =
+ "Container filesystem capacity.";
+static constexpr const char *unitMetricContainerFilesystemCapacity = "By";
+
+static inline nostd::unique_ptr
+ This may not equal capacity - available.
+
+ In K8s, this metric is derived from the
+ FsStats.UsedBytes
+ field of the ContainerStats.Rootfs
+ of the Kubelet's stats API.
+
+ updowncounter
+ */
+static constexpr const char *kMetricContainerFilesystemUsage = "container.filesystem.usage";
+static constexpr const char *descrMetricContainerFilesystemUsage = "Container filesystem usage.";
+static constexpr const char *unitMetricContainerFilesystemUsage = "By";
+
+static inline nostd::unique_ptr
@@ -220,15 +368,16 @@ CreateAsyncDoubleMetricContainerNetworkIo(metrics::Meter *meter)
}
/**
- The time the container has been running
+ The time the container has been running.
Instrumentations SHOULD use a gauge with type @code double @endcode and measure uptime in seconds
as a floating point number with the highest precision available. The actual accuracy would depend
on the instrumentation and operating system. gauge
*/
-static constexpr const char *kMetricContainerUptime = "container.uptime";
-static constexpr const char *descrMetricContainerUptime = "The time the container has been running";
-static constexpr const char *unitMetricContainerUptime = "s";
+static constexpr const char *kMetricContainerUptime = "container.uptime";
+static constexpr const char *descrMetricContainerUptime =
+ "The time the container has been running.";
+static constexpr const char *unitMetricContainerUptime = "s";
#if OPENTELEMETRY_ABI_VERSION_NO >= 2
diff --git a/api/include/opentelemetry/semconv/incubating/cpu_attributes.h b/api/include/opentelemetry/semconv/incubating/cpu_attributes.h
index c3c3ef58a5..f3b24e6950 100644
--- a/api/include/opentelemetry/semconv/incubating/cpu_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/cpu_attributes.h
@@ -32,42 +32,42 @@ static constexpr const char *kCpuMode = "cpu.mode";
namespace CpuModeValues
{
/**
- none
+ User
*/
static constexpr const char *kUser = "user";
/**
- none
+ System
*/
static constexpr const char *kSystem = "system";
/**
- none
+ Nice
*/
static constexpr const char *kNice = "nice";
/**
- none
+ Idle
*/
static constexpr const char *kIdle = "idle";
/**
- none
+ IO Wait
*/
static constexpr const char *kIowait = "iowait";
/**
- none
+ Interrupt
*/
static constexpr const char *kInterrupt = "interrupt";
/**
- none
+ Steal
*/
static constexpr const char *kSteal = "steal";
/**
- none
+ Kernel
*/
static constexpr const char *kKernel = "kernel";
diff --git a/api/include/opentelemetry/semconv/incubating/db_attributes.h b/api/include/opentelemetry/semconv/incubating/db_attributes.h
index c0c44276bc..31b8f2b74e 100644
--- a/api/include/opentelemetry/semconv/incubating/db_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/db_attributes.h
@@ -517,87 +517,45 @@ OPENTELEMETRY_DEPRECATED static constexpr const char *kDbUser = "db.user";
namespace DbCassandraConsistencyLevelValues
{
-/**
- none
- */
+
static constexpr const char *kAll = "all";
-/**
- none
- */
static constexpr const char *kEachQuorum = "each_quorum";
-/**
- none
- */
static constexpr const char *kQuorum = "quorum";
-/**
- none
- */
static constexpr const char *kLocalQuorum = "local_quorum";
-/**
- none
- */
static constexpr const char *kOne = "one";
-/**
- none
- */
static constexpr const char *kTwo = "two";
-/**
- none
- */
static constexpr const char *kThree = "three";
-/**
- none
- */
static constexpr const char *kLocalOne = "local_one";
-/**
- none
- */
static constexpr const char *kAny = "any";
-/**
- none
- */
static constexpr const char *kSerial = "serial";
-/**
- none
- */
static constexpr const char *kLocalSerial = "local_serial";
} // namespace DbCassandraConsistencyLevelValues
namespace DbClientConnectionStateValues
{
-/**
- none
- */
+
static constexpr const char *kIdle = "idle";
-/**
- none
- */
static constexpr const char *kUsed = "used";
} // namespace DbClientConnectionStateValues
namespace DbClientConnectionsStateValues
{
-/**
- none
- */
+
static constexpr const char *kIdle = "idle";
-/**
- none
- */
static constexpr const char *kUsed = "used";
} // namespace DbClientConnectionsStateValues
@@ -618,108 +576,50 @@ static constexpr const char *kDirect = "direct";
namespace DbCosmosdbConsistencyLevelValues
{
-/**
- none
- */
+
static constexpr const char *kStrong = "Strong";
-/**
- none
- */
static constexpr const char *kBoundedStaleness = "BoundedStaleness";
-/**
- none
- */
static constexpr const char *kSession = "Session";
-/**
- none
- */
static constexpr const char *kEventual = "Eventual";
-/**
- none
- */
static constexpr const char *kConsistentPrefix = "ConsistentPrefix";
} // namespace DbCosmosdbConsistencyLevelValues
namespace DbCosmosdbOperationTypeValues
{
-/**
- none
- */
+
static constexpr const char *kBatch = "batch";
-/**
- none
- */
static constexpr const char *kCreate = "create";
-/**
- none
- */
static constexpr const char *kDelete = "delete";
-/**
- none
- */
static constexpr const char *kExecute = "execute";
-/**
- none
- */
static constexpr const char *kExecuteJavascript = "execute_javascript";
-/**
- none
- */
static constexpr const char *kInvalid = "invalid";
-/**
- none
- */
static constexpr const char *kHead = "head";
-/**
- none
- */
static constexpr const char *kHeadFeed = "head_feed";
-/**
- none
- */
static constexpr const char *kPatch = "patch";
-/**
- none
- */
static constexpr const char *kQuery = "query";
-/**
- none
- */
static constexpr const char *kQueryPlan = "query_plan";
-/**
- none
- */
static constexpr const char *kRead = "read";
-/**
- none
- */
static constexpr const char *kReadFeed = "read_feed";
-/**
- none
- */
static constexpr const char *kReplace = "replace";
-/**
- none
- */
static constexpr const char *kUpsert = "upsert";
} // namespace DbCosmosdbOperationTypeValues
@@ -738,8 +638,12 @@ static constexpr const char *kAdabas = "adabas";
/**
Deprecated, use @code intersystems_cache @endcode instead.
+
+ @deprecated
+ {"note": "Replaced by @code intersystems_cache @endcode.", "reason": "renamed", "renamed_to":
+ "intersystems_cache"}
*/
-static constexpr const char *kCache = "cache";
+OPENTELEMETRY_DEPRECATED static constexpr const char *kCache = "cache";
/**
InterSystems Caché
@@ -758,8 +662,11 @@ static constexpr const char *kClickhouse = "clickhouse";
/**
Deprecated, use @code other_sql @endcode instead.
+
+ @deprecated
+ {"note": "Replaced by @code other_sql @endcode.", "reason": "renamed", "renamed_to": "other_sql"}
*/
-static constexpr const char *kCloudscape = "cloudscape";
+OPENTELEMETRY_DEPRECATED static constexpr const char *kCloudscape = "cloudscape";
/**
CockroachDB
@@ -768,8 +675,11 @@ static constexpr const char *kCockroachdb = "cockroachdb";
/**
Deprecated, no replacement at this time.
+
+ @deprecated
+ {"note": "Obsoleted.", "reason": "obsoleted"}
*/
-static constexpr const char *kColdfusion = "coldfusion";
+OPENTELEMETRY_DEPRECATED static constexpr const char *kColdfusion = "coldfusion";
/**
Microsoft Azure Cosmos DB
@@ -823,8 +733,11 @@ static constexpr const char *kFirebird = "firebird";
/**
Deprecated, use @code other_sql @endcode instead.
+
+ @deprecated
+ {"note": "Replaced by @code other_sql @endcode.", "reason": "renamed", "renamed_to": "other_sql"}
*/
-static constexpr const char *kFirstsql = "firstsql";
+OPENTELEMETRY_DEPRECATED static constexpr const char *kFirstsql = "firstsql";
/**
Apache Geode
@@ -908,8 +821,11 @@ static constexpr const char *kMssql = "mssql";
/**
Deprecated, Microsoft SQL Server Compact is discontinued.
+
+ @deprecated
+ {"note": "Replaced by @code other_sql @endcode.", "reason": "renamed", "renamed_to": "other_sql"}
*/
-static constexpr const char *kMssqlcompact = "mssqlcompact";
+OPENTELEMETRY_DEPRECATED static constexpr const char *kMssqlcompact = "mssqlcompact";
/**
MySQL
diff --git a/api/include/opentelemetry/semconv/incubating/db_metrics.h b/api/include/opentelemetry/semconv/incubating/db_metrics.h
index 8b74c62bcf..935bad9d69 100644
--- a/api/include/opentelemetry/semconv/incubating/db_metrics.h
+++ b/api/include/opentelemetry/semconv/incubating/db_metrics.h
@@ -22,11 +22,11 @@ namespace db
/**
The number of connections that are currently in state described by the @code state @endcode
- attribute updowncounter
+ attribute. updowncounter
*/
static constexpr const char *kMetricDbClientConnectionCount = "db.client.connection.count";
static constexpr const char *descrMetricDbClientConnectionCount =
- "The number of connections that are currently in state described by the `state` attribute";
+ "The number of connections that are currently in state described by the `state` attribute.";
static constexpr const char *unitMetricDbClientConnectionCount = "{connection}";
static inline nostd::unique_ptr
histogram
*/
static constexpr const char *kMetricDbClientConnectionCreateTime =
"db.client.connection.create_time";
static constexpr const char *descrMetricDbClientConnectionCreateTime =
- "The time it took to create a new connection";
+ "The time it took to create a new connection.";
static constexpr const char *unitMetricDbClientConnectionCreateTime = "s";
static inline nostd::unique_ptr
updowncounter
*/
static constexpr const char *kMetricDbClientConnectionIdleMax = "db.client.connection.idle.max";
static constexpr const char *descrMetricDbClientConnectionIdleMax =
- "The maximum number of idle open connections allowed";
+ "The maximum number of idle open connections allowed.";
static constexpr const char *unitMetricDbClientConnectionIdleMax = "{connection}";
static inline nostd::unique_ptr
updowncounter
*/
static constexpr const char *kMetricDbClientConnectionIdleMin = "db.client.connection.idle.min";
static constexpr const char *descrMetricDbClientConnectionIdleMin =
- "The minimum number of idle open connections allowed";
+ "The minimum number of idle open connections allowed.";
static constexpr const char *unitMetricDbClientConnectionIdleMin = "{connection}";
static inline nostd::unique_ptr
updowncounter
*/
static constexpr const char *kMetricDbClientConnectionMax = "db.client.connection.max";
static constexpr const char *descrMetricDbClientConnectionMax =
- "The maximum number of open connections allowed";
+ "The maximum number of open connections allowed.";
static constexpr const char *unitMetricDbClientConnectionMax = "{connection}";
static inline nostd::unique_ptr
updowncounter
*/
static constexpr const char *kMetricDbClientConnectionPendingRequests =
"db.client.connection.pending_requests";
static constexpr const char *descrMetricDbClientConnectionPendingRequests =
- "The number of current pending requests for an open connection";
+ "The number of current pending requests for an open connection.";
static constexpr const char *unitMetricDbClientConnectionPendingRequests = "{request}";
static inline nostd::unique_ptr
counter
*/
static constexpr const char *kMetricDbClientConnectionTimeouts = "db.client.connection.timeouts";
static constexpr const char *descrMetricDbClientConnectionTimeouts =
"The number of connection timeouts that have occurred trying to obtain a connection from the "
- "pool";
+ "pool.";
static constexpr const char *unitMetricDbClientConnectionTimeouts = "{timeout}";
static inline nostd::unique_ptr
histogram
*/
static constexpr const char *kMetricDbClientConnectionUseTime = "db.client.connection.use_time";
static constexpr const char *descrMetricDbClientConnectionUseTime =
- "The time between borrowing a connection and returning it to the pool";
+ "The time between borrowing a connection and returning it to the pool.";
static constexpr const char *unitMetricDbClientConnectionUseTime = "s";
static inline nostd::unique_ptr
histogram
*/
static constexpr const char *kMetricDbClientConnectionWaitTime = "db.client.connection.wait_time";
static constexpr const char *descrMetricDbClientConnectionWaitTime =
- "The time it took to obtain an open connection from the pool";
+ "The time it took to obtain an open connection from the pool.";
static constexpr const char *unitMetricDbClientConnectionWaitTime = "s";
static inline nostd::unique_ptr More information about Android identifier best practices can be found here. More information about Android identifier best practices can be found in the Android user data IDs
+ guide.
This attribute may contain sensitive (PII) information. Caution should be taken when storing
diff --git a/api/include/opentelemetry/semconv/incubating/disk_attributes.h b/api/include/opentelemetry/semconv/incubating/disk_attributes.h
index c2504d75ff..3e3e209b8f 100644
--- a/api/include/opentelemetry/semconv/incubating/disk_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/disk_attributes.h
@@ -26,14 +26,9 @@ static constexpr const char *kDiskIoDirection = "disk.io.direction";
namespace DiskIoDirectionValues
{
-/**
- none
- */
+
static constexpr const char *kRead = "read";
-/**
- none
- */
static constexpr const char *kWrite = "write";
} // namespace DiskIoDirectionValues
diff --git a/api/include/opentelemetry/semconv/incubating/enduser_attributes.h b/api/include/opentelemetry/semconv/incubating/enduser_attributes.h
index 9120aa2c05..d117dd268e 100644
--- a/api/include/opentelemetry/semconv/incubating/enduser_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/enduser_attributes.h
@@ -40,7 +40,8 @@ static constexpr const char *kEnduserPseudoId = "enduser.pseudo.id";
Deprecated, use @code user.roles @endcode instead.
@deprecated
- {"note": "Use @code user.roles @endcode attribute instead.", "reason": "uncategorized"}
+ {"note": "Replaced by @code user.roles @endcode.", "reason": "renamed", "renamed_to":
+ "user.roles"}
*/
OPENTELEMETRY_DEPRECATED static constexpr const char *kEnduserRole = "enduser.role";
diff --git a/api/include/opentelemetry/semconv/incubating/faas_metrics.h b/api/include/opentelemetry/semconv/incubating/faas_metrics.h
index 99888cde9d..868eac024e 100644
--- a/api/include/opentelemetry/semconv/incubating/faas_metrics.h
+++ b/api/include/opentelemetry/semconv/incubating/faas_metrics.h
@@ -21,12 +21,12 @@ namespace faas
{
/**
- Number of invocation cold starts
+ Number of invocation cold starts.
counter
*/
static constexpr const char *kMetricFaasColdstarts = "faas.coldstarts";
-static constexpr const char *descrMetricFaasColdstarts = "Number of invocation cold starts";
+static constexpr const char *descrMetricFaasColdstarts = "Number of invocation cold starts.";
static constexpr const char *unitMetricFaasColdstarts = "{coldstart}";
static inline nostd::unique_ptr
histogram
*/
static constexpr const char *kMetricFaasCpuUsage = "faas.cpu_usage";
-static constexpr const char *descrMetricFaasCpuUsage = "Distribution of CPU usage per invocation";
+static constexpr const char *descrMetricFaasCpuUsage = "Distribution of CPU usage per invocation.";
static constexpr const char *unitMetricFaasCpuUsage = "s";
static inline nostd::unique_ptr
counter
*/
static constexpr const char *kMetricFaasErrors = "faas.errors";
-static constexpr const char *descrMetricFaasErrors = "Number of invocation errors";
+static constexpr const char *descrMetricFaasErrors = "Number of invocation errors.";
static constexpr const char *unitMetricFaasErrors = "{error}";
static inline nostd::unique_ptr
histogram
*/
static constexpr const char *kMetricFaasInitDuration = "faas.init_duration";
static constexpr const char *descrMetricFaasInitDuration =
- "Measures the duration of the function's initialization, such as a cold start";
+ "Measures the duration of the function's initialization, such as a cold start.";
static constexpr const char *unitMetricFaasInitDuration = "s";
static inline nostd::unique_ptr
counter
*/
static constexpr const char *kMetricFaasInvocations = "faas.invocations";
-static constexpr const char *descrMetricFaasInvocations = "Number of successful invocations";
+static constexpr const char *descrMetricFaasInvocations = "Number of successful invocations.";
static constexpr const char *unitMetricFaasInvocations = "{invocation}";
static inline nostd::unique_ptr
histogram
*/
static constexpr const char *kMetricFaasInvokeDuration = "faas.invoke_duration";
static constexpr const char *descrMetricFaasInvokeDuration =
- "Measures the duration of the function's logic execution";
+ "Measures the duration of the function's logic execution.";
static constexpr const char *unitMetricFaasInvokeDuration = "s";
static inline nostd::unique_ptr
histogram
*/
static constexpr const char *kMetricFaasMemUsage = "faas.mem_usage";
static constexpr const char *descrMetricFaasMemUsage =
- "Distribution of max memory usage per invocation";
+ "Distribution of max memory usage per invocation.";
static constexpr const char *unitMetricFaasMemUsage = "By";
static inline nostd::unique_ptr
histogram
*/
static constexpr const char *kMetricFaasNetIo = "faas.net_io";
-static constexpr const char *descrMetricFaasNetIo = "Distribution of net I/O usage per invocation";
+static constexpr const char *descrMetricFaasNetIo = "Distribution of net I/O usage per invocation.";
static constexpr const char *unitMetricFaasNetIo = "By";
static inline nostd::unique_ptr
counter
*/
static constexpr const char *kMetricFaasTimeouts = "faas.timeouts";
-static constexpr const char *descrMetricFaasTimeouts = "Number of invocation timeouts";
+static constexpr const char *descrMetricFaasTimeouts = "Number of invocation timeouts.";
static constexpr const char *unitMetricFaasTimeouts = "{timeout}";
static inline nostd::unique_ptr
+ Instrumentations MUST follow Input messages JSON
+ schema. When the attribute is recorded on events, it MUST be recorded in structured form. When
+ recorded on spans, it MAY be recorded as a JSON string if structured format is not supported and
+ SHOULD be recorded in structured form otherwise. Messages MUST be provided in the order they
+ were sent to the model. Instrumentations MAY provide a way for users to filter or truncate input
+ messages.
+ See Recording content on
+ attributes section for more details.
+ */
+static constexpr const char *kGenAiInputMessages = "gen_ai.input.messages";
+
/**
Deprecated, use @code gen_ai.output.type @endcode.
@@ -82,20 +99,33 @@ OPENTELEMETRY_DEPRECATED static constexpr const char *kGenAiOpenaiRequestSeed =
"gen_ai.openai.request.seed";
/**
- The service tier requested. May be a specific tier, default, or auto.
+ Deprecated, use @code openai.request.service_tier @endcode.
+
+ @deprecated
+ {"note": "Replaced by @code openai.request.service_tier @endcode.", "reason": "renamed",
+ "renamed_to": "openai.request.service_tier"}
*/
-static constexpr const char *kGenAiOpenaiRequestServiceTier = "gen_ai.openai.request.service_tier";
+OPENTELEMETRY_DEPRECATED static constexpr const char *kGenAiOpenaiRequestServiceTier =
+ "gen_ai.openai.request.service_tier";
/**
- The service tier used for the response.
+ Deprecated, use @code openai.response.service_tier @endcode.
+
+ @deprecated
+ {"note": "Replaced by @code openai.response.service_tier @endcode.", "reason": "renamed",
+ "renamed_to": "openai.response.service_tier"}
*/
-static constexpr const char *kGenAiOpenaiResponseServiceTier =
+OPENTELEMETRY_DEPRECATED static constexpr const char *kGenAiOpenaiResponseServiceTier =
"gen_ai.openai.response.service_tier";
/**
- A fingerprint to track any eventual change in the Generative AI environment.
+ Deprecated, use @code openai.response.system_fingerprint @endcode.
+
+ @deprecated
+ {"note": "Replaced by @code openai.response.system_fingerprint @endcode.", "reason": "renamed",
+ "renamed_to": "openai.response.system_fingerprint"}
*/
-static constexpr const char *kGenAiOpenaiResponseSystemFingerprint =
+OPENTELEMETRY_DEPRECATED static constexpr const char *kGenAiOpenaiResponseSystemFingerprint =
"gen_ai.openai.response.system_fingerprint";
/**
@@ -108,6 +138,29 @@ static constexpr const char *kGenAiOpenaiResponseSystemFingerprint =
*/
static constexpr const char *kGenAiOperationName = "gen_ai.operation.name";
+/**
+ Messages returned by the model where each message represents a specific model response (choice,
+ candidate). Instrumentations MUST follow Output messages JSON schema Each message
+ represents a single output choice/candidate generated by the model. Each message corresponds to
+ exactly one generation (choice/candidate) and vice versa - one choice cannot be split across
+ multiple messages or one message cannot contain parts from multiple choices.
+
+ When the attribute is recorded on events, it MUST be recorded in structured
+ form. When recorded on spans, it MAY be recorded as a JSON string if structured
+ format is not supported and SHOULD be recorded in structured form otherwise.
+
+ Instrumentations MAY provide a way for users to filter or truncate
+ output messages.
+
+ See Recording content on
+ attributes section for more details.
+ */
+static constexpr const char *kGenAiOutputMessages = "gen_ai.output.messages";
+
/**
Represents the content type requested by the client.
@@ -127,6 +180,28 @@ static constexpr const char *kGenAiOutputType = "gen_ai.output.type";
*/
OPENTELEMETRY_DEPRECATED static constexpr const char *kGenAiPrompt = "gen_ai.prompt";
+/**
+ The Generative AI provider as identified by the client or server instrumentation.
+
+ The attribute SHOULD be set based on the instrumentation's best
+ knowledge and may differ from the actual model provider.
+
+ Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms
+ are accessible using the OpenAI REST API and corresponding client libraries,
+ but may proxy or host models from different providers.
+
+ The @code gen_ai.request.model @endcode, @code gen_ai.response.model @endcode, and @code
+ server.address @endcode attributes may help identify the actual system in use. The @code
+ gen_ai.provider.name @endcode attribute acts as a discriminator that identifies the GenAI
+ telemetry format flavor specific to that provider within GenAI semantic conventions. It SHOULD be
+ set consistently with provider-specific attributes and signals. For example, GenAI spans, metrics,
+ and events related to AWS Bedrock should have the @code gen_ai.provider.name @endcode set to @code
+ aws.bedrock @endcode and include applicable @code aws.bedrock.* @endcode attributes and are not
+ expected to include
+ @code openai.* @endcode attributes.
+ */
+static constexpr const char *kGenAiProviderName = "gen_ai.provider.name";
+
/**
The target number of candidate completions to return.
*/
@@ -201,20 +276,37 @@ static constexpr const char *kGenAiResponseId = "gen_ai.response.id";
static constexpr const char *kGenAiResponseModel = "gen_ai.response.model";
/**
- The Generative AI product as identified by the client or server instrumentation.
+ Deprecated, use @code gen_ai.provider.name @endcode instead.
+
+ @deprecated
+ {"note": "Replaced by @code gen_ai.provider.name @endcode.", "reason": "renamed", "renamed_to":
+ "gen_ai.provider.name"}
+ */
+OPENTELEMETRY_DEPRECATED static constexpr const char *kGenAiSystem = "gen_ai.system";
+
+/**
+ The system message or instructions provided to the GenAI model separately from the chat history.
+
+ This attribute SHOULD be used when the corresponding provider or API
+ allows to provide system instructions or messages separately from the
+ chat history.
- The @code gen_ai.system @endcode describes a family of GenAI models with specific model identified
- by @code gen_ai.request.model @endcode and @code gen_ai.response.model @endcode attributes.
+ Instructions that are part of the chat history SHOULD be recorded in
+ @code gen_ai.input.messages @endcode attribute instead.
- The actual GenAI product may differ from the one identified by the client.
- Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client
- libraries. In such cases, the @code gen_ai.system @endcode is set to @code openai @endcode based
- on the instrumentation's best knowledge, instead of the actual system. The @code server.address
- @endcode attribute may help identify the actual system in use for @code openai @endcode. For
- custom model, a custom friendly name SHOULD be used. If none of these options apply, the @code
- gen_ai.system @endcode SHOULD be set to @code _OTHER @endcode.
+ Instrumentations MUST follow System
+ instructions JSON schema. When recorded on spans, it MAY be recorded as a JSON string if
+ structured format is not supported and SHOULD be recorded in structured form otherwise.
+ Instrumentations MAY provide a way for users to filter or truncate
+ system instructions.
+
+ See Recording content on
+ attributes section for more details.
*/
-static constexpr const char *kGenAiSystem = "gen_ai.system";
+static constexpr const char *kGenAiSystemInstructions = "gen_ai.system_instructions";
/**
The type of token being counted.
@@ -381,6 +473,85 @@ static constexpr const char *kSpeech = "speech";
} // namespace GenAiOutputTypeValues
+namespace GenAiProviderNameValues
+{
+/**
+ OpenAI
+ */
+static constexpr const char *kOpenai = "openai";
+
+/**
+ Any Google generative AI endpoint
+ */
+static constexpr const char *kGcpGenAi = "gcp.gen_ai";
+
+/**
+ Vertex AI
+ */
+static constexpr const char *kGcpVertexAi = "gcp.vertex_ai";
+
+/**
+ Gemini
+ */
+static constexpr const char *kGcpGemini = "gcp.gemini";
+
+/**
+ Anthropic
+ */
+static constexpr const char *kAnthropic = "anthropic";
+
+/**
+ Cohere
+ */
+static constexpr const char *kCohere = "cohere";
+
+/**
+ Azure AI Inference
+ */
+static constexpr const char *kAzureAiInference = "azure.ai.inference";
+
+/**
+ Azure OpenAI
+ */
+static constexpr const char *kAzureAiOpenai = "azure.ai.openai";
+
+/**
+ IBM Watsonx AI
+ */
+static constexpr const char *kIbmWatsonxAi = "ibm.watsonx.ai";
+
+/**
+ AWS Bedrock
+ */
+static constexpr const char *kAwsBedrock = "aws.bedrock";
+
+/**
+ Perplexity
+ */
+static constexpr const char *kPerplexity = "perplexity";
+
+/**
+ xAI
+ */
+static constexpr const char *kXAi = "x_ai";
+
+/**
+ DeepSeek
+ */
+static constexpr const char *kDeepseek = "deepseek";
+
+/**
+ Groq
+ */
+static constexpr const char *kGroq = "groq";
+
+/**
+ Mistral AI
+ */
+static constexpr const char *kMistralAi = "mistral_ai";
+
+} // namespace GenAiProviderNameValues
+
namespace GenAiSystemValues
{
/**
@@ -405,13 +576,21 @@ static constexpr const char *kGcpGemini = "gcp.gemini";
/**
Vertex AI
+
+ @deprecated
+ {"note": "Replaced by @code gcp.vertex_ai @endcode.", "reason": "renamed", "renamed_to":
+ "gcp.vertex_ai"}
*/
-static constexpr const char *kVertexAi = "vertex_ai";
+OPENTELEMETRY_DEPRECATED static constexpr const char *kVertexAi = "vertex_ai";
/**
Gemini
+
+ @deprecated
+ {"note": "Replaced by @code gcp.gemini @endcode.", "reason": "renamed", "renamed_to":
+ "gcp.gemini"}
*/
-static constexpr const char *kGemini = "gemini";
+OPENTELEMETRY_DEPRECATED static constexpr const char *kGemini = "gemini";
/**
Anthropic
@@ -426,22 +605,22 @@ static constexpr const char *kCohere = "cohere";
/**
Azure AI Inference
*/
-static constexpr const char *kAzureAiInference = "azure.ai.inference";
+static constexpr const char *kAzAiInference = "az.ai.inference";
/**
Azure OpenAI
*/
-static constexpr const char *kAzureAiOpenai = "azure.ai.openai";
+static constexpr const char *kAzAiOpenai = "az.ai.openai";
/**
Azure AI Inference
*/
-static constexpr const char *kAzAiInference = "az.ai.inference";
+static constexpr const char *kAzureAiInference = "azure.ai.inference";
/**
Azure OpenAI
*/
-static constexpr const char *kAzAiOpenai = "azure.ai.openai";
+static constexpr const char *kAzureAiOpenai = "azure.ai.openai";
/**
IBM Watsonx AI
@@ -460,8 +639,11 @@ static constexpr const char *kPerplexity = "perplexity";
/**
xAI
+
+ @deprecated
+ {"note": "Replaced by @code x_ai @endcode.", "reason": "renamed", "renamed_to": "x_ai"}
*/
-static constexpr const char *kXai = "xai";
+OPENTELEMETRY_DEPRECATED static constexpr const char *kXai = "xai";
/**
DeepSeek
@@ -489,8 +671,11 @@ static constexpr const char *kInput = "input";
/**
Output tokens (completion, response, etc.)
+
+ @deprecated
+ {"note": "Replaced by @code output @endcode.", "reason": "renamed", "renamed_to": "output"}
*/
-static constexpr const char *kCompletion = "output";
+OPENTELEMETRY_DEPRECATED static constexpr const char *kCompletion = "output";
/**
Output tokens (completion, response, etc.)
diff --git a/api/include/opentelemetry/semconv/incubating/gen_ai_metrics.h b/api/include/opentelemetry/semconv/incubating/gen_ai_metrics.h
index 2cd11bd546..a5798f9dbc 100644
--- a/api/include/opentelemetry/semconv/incubating/gen_ai_metrics.h
+++ b/api/include/opentelemetry/semconv/incubating/gen_ai_metrics.h
@@ -21,13 +21,13 @@ namespace gen_ai
{
/**
- GenAI operation duration
+ GenAI operation duration.
histogram
*/
static constexpr const char *kMetricGenAiClientOperationDuration =
"gen_ai.client.operation.duration";
-static constexpr const char *descrMetricGenAiClientOperationDuration = "GenAI operation duration";
+static constexpr const char *descrMetricGenAiClientOperationDuration = "GenAI operation duration.";
static constexpr const char *unitMetricGenAiClientOperationDuration = "s";
static inline nostd::unique_ptr
histogram
*/
static constexpr const char *kMetricGenAiClientTokenUsage = "gen_ai.client.token.usage";
static constexpr const char *descrMetricGenAiClientTokenUsage =
- "Measures number of input and output tokens used";
+ "Number of input and output tokens used.";
static constexpr const char *unitMetricGenAiClientTokenUsage = "{token}";
static inline nostd::unique_ptr
histogram
*/
static constexpr const char *kMetricGenAiServerRequestDuration = "gen_ai.server.request.duration";
static constexpr const char *descrMetricGenAiServerRequestDuration =
- "Generative AI server request duration such as time-to-last byte or last output token";
+ "Generative AI server request duration such as time-to-last byte or last output token.";
static constexpr const char *unitMetricGenAiServerRequestDuration = "s";
static inline nostd::unique_ptr
histogram
*/
static constexpr const char *kMetricGenAiServerTimePerOutputToken =
"gen_ai.server.time_per_output_token";
static constexpr const char *descrMetricGenAiServerTimePerOutputToken =
- "Time per output token generated after the first token for successful responses";
+ "Time per output token generated after the first token for successful responses.";
static constexpr const char *unitMetricGenAiServerTimePerOutputToken = "s";
static inline nostd::unique_ptr
histogram
*/
static constexpr const char *kMetricGenAiServerTimeToFirstToken =
"gen_ai.server.time_to_first_token";
static constexpr const char *descrMetricGenAiServerTimeToFirstToken =
- "Time to generate first token for successful responses";
+ "Time to generate first token for successful responses.";
static constexpr const char *unitMetricGenAiServerTimeToFirstToken = "s";
static inline nostd::unique_ptr
@@ -50,25 +157,164 @@ static constexpr const char *kHwState = "hw.state";
*/
static constexpr const char *kHwType = "hw.type";
-namespace HwStateValues
+/**
+ Vendor name of the hardware component
+ */
+static constexpr const char *kHwVendor = "hw.vendor";
+
+namespace HwBatteryStateValues
{
/**
- Ok
+ Charging
*/
-static constexpr const char *kOk = "ok";
+static constexpr const char *kCharging = "charging";
+
+/**
+ Discharging
+ */
+static constexpr const char *kDischarging = "discharging";
+
+} // namespace HwBatteryStateValues
+
+namespace HwGpuTaskValues
+{
+/**
+ Decoder
+ */
+static constexpr const char *kDecoder = "decoder";
+
+/**
+ Encoder
+ */
+static constexpr const char *kEncoder = "encoder";
+
+/**
+ General
+ */
+static constexpr const char *kGeneral = "general";
+
+} // namespace HwGpuTaskValues
+
+namespace HwLimitTypeValues
+{
+/**
+ Critical
+ */
+static constexpr const char *kCritical = "critical";
/**
Degraded
*/
static constexpr const char *kDegraded = "degraded";
+/**
+ High Critical
+ */
+static constexpr const char *kHighCritical = "high.critical";
+
+/**
+ High Degraded
+ */
+static constexpr const char *kHighDegraded = "high.degraded";
+
+/**
+ Low Critical
+ */
+static constexpr const char *kLowCritical = "low.critical";
+
+/**
+ Low Degraded
+ */
+static constexpr const char *kLowDegraded = "low.degraded";
+
+/**
+ Maximum
+ */
+static constexpr const char *kMax = "max";
+
+/**
+ Throttled
+ */
+static constexpr const char *kThrottled = "throttled";
+
+/**
+ Turbo
+ */
+static constexpr const char *kTurbo = "turbo";
+
+} // namespace HwLimitTypeValues
+
+namespace HwLogicalDiskStateValues
+{
+/**
+ Used
+ */
+static constexpr const char *kUsed = "used";
+
+/**
+ Free
+ */
+static constexpr const char *kFree = "free";
+
+} // namespace HwLogicalDiskStateValues
+
+namespace HwPhysicalDiskStateValues
+{
+/**
+ Remaining
+ */
+static constexpr const char *kRemaining = "remaining";
+
+} // namespace HwPhysicalDiskStateValues
+
+namespace HwStateValues
+{
+/**
+ Degraded
+ */
+static constexpr const char *kDegraded = "degraded";
+
/**
Failed
*/
static constexpr const char *kFailed = "failed";
+/**
+ Needs Cleaning
+ */
+static constexpr const char *kNeedsCleaning = "needs_cleaning";
+
+/**
+ OK
+ */
+static constexpr const char *kOk = "ok";
+
+/**
+ Predicted Failure
+ */
+static constexpr const char *kPredictedFailure = "predicted_failure";
+
} // namespace HwStateValues
+namespace HwTapeDriveOperationTypeValues
+{
+/**
+ Mount
+ */
+static constexpr const char *kMount = "mount";
+
+/**
+ Unmount
+ */
+static constexpr const char *kUnmount = "unmount";
+
+/**
+ Clean
+ */
+static constexpr const char *kClean = "clean";
+
+} // namespace HwTapeDriveOperationTypeValues
+
namespace HwTypeValues
{
/**
diff --git a/api/include/opentelemetry/semconv/incubating/hw_metrics.h b/api/include/opentelemetry/semconv/incubating/hw_metrics.h
index e73e9edeb8..fe39111265 100644
--- a/api/include/opentelemetry/semconv/incubating/hw_metrics.h
+++ b/api/include/opentelemetry/semconv/incubating/hw_metrics.h
@@ -21,12 +21,212 @@ namespace hw
{
/**
- Energy consumed by the component
+ Remaining fraction of battery charge.
+
+ gauge
+ */
+static constexpr const char *kMetricHwBatteryCharge = "hw.battery.charge";
+static constexpr const char *descrMetricHwBatteryCharge = "Remaining fraction of battery charge.";
+static constexpr const char *unitMetricHwBatteryCharge = "1";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ gauge
+ */
+static constexpr const char *kMetricHwBatteryChargeLimit = "hw.battery.charge.limit";
+static constexpr const char *descrMetricHwBatteryChargeLimit =
+ "Lower limit of battery charge fraction to ensure proper operation.";
+static constexpr const char *unitMetricHwBatteryChargeLimit = "1";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ gauge
+ */
+static constexpr const char *kMetricHwBatteryTimeLeft = "hw.battery.time_left";
+static constexpr const char *descrMetricHwBatteryTimeLeft =
+ "Time left before battery is completely charged or discharged.";
+static constexpr const char *unitMetricHwBatteryTimeLeft = "s";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ gauge
+ */
+static constexpr const char *kMetricHwCpuSpeed = "hw.cpu.speed";
+static constexpr const char *descrMetricHwCpuSpeed = "CPU current frequency.";
+static constexpr const char *unitMetricHwCpuSpeed = "Hz";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ gauge
+ */
+static constexpr const char *kMetricHwCpuSpeedLimit = "hw.cpu.speed.limit";
+static constexpr const char *descrMetricHwCpuSpeedLimit = "CPU maximum frequency.";
+static constexpr const char *unitMetricHwCpuSpeedLimit = "Hz";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
counter
*/
static constexpr const char *kMetricHwEnergy = "hw.energy";
-static constexpr const char *descrMetricHwEnergy = "Energy consumed by the component";
+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 = "hw.errors";
-static constexpr const char *descrMetricHwErrors = "Number of errors encountered by the component";
+static constexpr const char *descrMetricHwErrors = "Number of errors encountered by the component.";
static constexpr const char *unitMetricHwErrors = "{error}";
static inline nostd::unique_ptr
gauge
*/
-static constexpr const char *kMetricHwHostAmbientTemperature = "hw.host.ambient_temperature";
-static constexpr const char *descrMetricHwHostAmbientTemperature =
- "Ambient (external) temperature of the physical host";
-static constexpr const char *unitMetricHwHostAmbientTemperature = "Cel";
+static constexpr const char *kMetricHwFanSpeed = "hw.fan.speed";
+static constexpr const char *descrMetricHwFanSpeed = "Fan speed in revolutions per minute.";
+static constexpr const char *unitMetricHwFanSpeed = "rpm";
#if OPENTELEMETRY_ABI_VERSION_NO >= 2
-static inline nostd::unique_ptr
- The overall energy usage of a host MUST be reported using the specific @code hw.host.energy
- @endcode and @code hw.host.power @endcode metrics only, instead of the generic
- @code hw.energy @endcode and @code hw.power @endcode described in the previous section, to prevent
- summing up overlapping values. counter
+ gauge
*/
-static constexpr const char *kMetricHwHostEnergy = "hw.host.energy";
-static constexpr const char *descrMetricHwHostEnergy =
- "Total energy consumed by the entire physical host, in joules";
-static constexpr const char *unitMetricHwHostEnergy = "J";
+static constexpr const char *kMetricHwFanSpeedLimit = "hw.fan.speed.limit";
+static constexpr const char *descrMetricHwFanSpeedLimit = "Speed limit in rpm.";
+static constexpr const char *unitMetricHwFanSpeedLimit = "rpm";
-static inline nostd::unique_ptr gauge
+ Fan speed expressed as a fraction of its maximum speed.
+
+ gauge
*/
-static constexpr const char *kMetricHwHostHeatingMargin = "hw.host.heating_margin";
-static constexpr const char *descrMetricHwHostHeatingMargin =
- "By how many degrees Celsius the temperature of the physical host can be increased, before reaching a warning threshold on one of the internal sensors
- ";
- static constexpr const char *unitMetricHwHostHeatingMargin = "Cel";
+static constexpr const char *kMetricHwFanSpeedRatio = "hw.fan.speed_ratio";
+static constexpr const char *descrMetricHwFanSpeedRatio =
+ "Fan speed expressed as a fraction of its maximum speed.";
+static constexpr const char *unitMetricHwFanSpeedRatio = "1";
#if OPENTELEMETRY_ABI_VERSION_NO >= 2
-static inline nostd::unique_ptr The overall energy usage of a host MUST be reported using the specific @code
- hw.host.energy @endcode and @code hw.host.power @endcode metrics only, instead of
- the generic @code hw.energy @endcode and @code hw.power @endcode described in the previous
- section, to prevent summing up overlapping values. gauge
+ Received and transmitted bytes by the GPU.
+
+ counter
*/
-static constexpr const char *kMetricHwHostPower = "hw.host.power";
-static constexpr const char *descrMetricHwHostPower =
- "Instantaneous power consumed by the entire physical host in Watts (`hw.host.energy` is preferred)
- ";
- static constexpr const char *unitMetricHwHostPower = "W";
-
-#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+static constexpr const char *kMetricHwGpuIo = "hw.gpu.io";
+static constexpr const char *descrMetricHwGpuIo = "Received and transmitted bytes by the GPU.";
+static constexpr const char *unitMetricHwGpuIo = "By";
-static inline nostd::unique_ptr
- It is recommended to report @code hw.energy @endcode instead of @code hw.power @endcode when
- possible. gauge
+ updowncounter
*/
-static constexpr const char *kMetricHwPower = "hw.power";
-static constexpr const char *descrMetricHwPower = "Instantaneous power consumed by the component";
-static constexpr const char *unitMetricHwPower = "W";
+static constexpr const char *kMetricHwGpuMemoryLimit = "hw.gpu.memory.limit";
+static constexpr const char *descrMetricHwGpuMemoryLimit = "Size of the GPU memory.";
+static constexpr const char *unitMetricHwGpuMemoryLimit = "By";
-#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.
+ GPU memory used.
updowncounter
*/
-static constexpr const char *kMetricHwStatus = "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 constexpr const char *kMetricHwGpuMemoryUsage = "hw.gpu.memory.usage";
+static constexpr const char *descrMetricHwGpuMemoryUsage = "GPU memory used.";
+static constexpr const char *unitMetricHwGpuMemoryUsage = "By";
-static inline nostd::unique_ptr
+ gauge
+ */
+static constexpr const char *kMetricHwGpuMemoryUtilization = "hw.gpu.memory.utilization";
+static constexpr const char *descrMetricHwGpuMemoryUtilization = "Fraction of GPU memory used.";
+static constexpr const char *unitMetricHwGpuMemoryUtilization = "1";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ gauge
+ */
+static constexpr const char *kMetricHwGpuUtilization = "hw.gpu.utilization";
+static constexpr const char *descrMetricHwGpuUtilization =
+ "Fraction of time spent in a specific task.";
+static constexpr const char *unitMetricHwGpuUtilization = "1";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ gauge
+ */
+static constexpr const char *kMetricHwHostAmbientTemperature = "hw.host.ambient_temperature";
+static constexpr const char *descrMetricHwHostAmbientTemperature =
+ "Ambient (external) temperature of the physical host.";
+static constexpr const char *unitMetricHwHostAmbientTemperature = "Cel";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ The overall energy usage of a host MUST be reported using the specific @code hw.host.energy
+ @endcode and @code hw.host.power @endcode metrics only, instead of the generic
+ @code hw.energy @endcode and @code hw.power @endcode described in the previous section, to prevent
+ summing up overlapping values. counter
+ */
+static constexpr const char *kMetricHwHostEnergy = "hw.host.energy";
+static constexpr const char *descrMetricHwHostEnergy =
+ "Total energy consumed by the entire physical host, in joules.";
+static constexpr const char *unitMetricHwHostEnergy = "J";
+
+static inline nostd::unique_ptr gauge
+ */
+static constexpr const char *kMetricHwHostHeatingMargin = "hw.host.heating_margin";
+static constexpr const char *descrMetricHwHostHeatingMargin =
+ "By how many degrees Celsius the temperature of the physical host can be increased, before reaching a warning threshold on one of the internal sensors.
+ ";
+ static constexpr const char *unitMetricHwHostHeatingMargin = "Cel";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr The overall energy usage of a host MUST be reported using the specific @code
+ hw.host.energy @endcode and @code hw.host.power @endcode metrics only, instead of
+ the generic @code hw.energy @endcode and @code hw.power @endcode described in the previous
+ section, to prevent summing up overlapping values. gauge
+ */
+static constexpr const char *kMetricHwHostPower = "hw.host.power";
+static constexpr const char *descrMetricHwHostPower =
+ "Instantaneous power consumed by the entire physical host in Watts (`hw.host.energy` is preferred).
+ ";
+ static constexpr const char *unitMetricHwHostPower = "W";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ updowncounter
+ */
+static constexpr const char *kMetricHwLogicalDiskLimit = "hw.logical_disk.limit";
+static constexpr const char *descrMetricHwLogicalDiskLimit = "Size of the logical disk.";
+static constexpr const char *unitMetricHwLogicalDiskLimit = "By";
+
+static inline nostd::unique_ptr
+ updowncounter
+ */
+static constexpr const char *kMetricHwLogicalDiskUsage = "hw.logical_disk.usage";
+static constexpr const char *descrMetricHwLogicalDiskUsage = "Logical disk space usage.";
+static constexpr const char *unitMetricHwLogicalDiskUsage = "By";
+
+static inline nostd::unique_ptr
+ gauge
+ */
+static constexpr const char *kMetricHwLogicalDiskUtilization = "hw.logical_disk.utilization";
+static constexpr const char *descrMetricHwLogicalDiskUtilization =
+ "Logical disk space utilization as a fraction.";
+static constexpr const char *unitMetricHwLogicalDiskUtilization = "1";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ updowncounter
+ */
+static constexpr const char *kMetricHwMemorySize = "hw.memory.size";
+static constexpr const char *descrMetricHwMemorySize = "Size of the memory module.";
+static constexpr const char *unitMetricHwMemorySize = "By";
+
+static inline nostd::unique_ptr
+ updowncounter
+ */
+static constexpr const char *kMetricHwNetworkBandwidthLimit = "hw.network.bandwidth.limit";
+static constexpr const char *descrMetricHwNetworkBandwidthLimit = "Link speed.";
+static constexpr const char *unitMetricHwNetworkBandwidthLimit = "By/s";
+
+static inline nostd::unique_ptr
+ gauge
+ */
+static constexpr const char *kMetricHwNetworkBandwidthUtilization =
+ "hw.network.bandwidth.utilization";
+static constexpr const char *descrMetricHwNetworkBandwidthUtilization =
+ "Utilization of the network bandwidth as a fraction.";
+static constexpr const char *unitMetricHwNetworkBandwidthUtilization = "1";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ counter
+ */
+static constexpr const char *kMetricHwNetworkIo = "hw.network.io";
+static constexpr const char *descrMetricHwNetworkIo =
+ "Received and transmitted network traffic in bytes.";
+static constexpr const char *unitMetricHwNetworkIo = "By";
+
+static inline nostd::unique_ptr
+ counter
+ */
+static constexpr const char *kMetricHwNetworkPackets = "hw.network.packets";
+static constexpr const char *descrMetricHwNetworkPackets =
+ "Received and transmitted network traffic in packets (or frames).";
+static constexpr const char *unitMetricHwNetworkPackets = "{packet}";
+
+static inline nostd::unique_ptr
+ updowncounter
+ */
+static constexpr const char *kMetricHwNetworkUp = "hw.network.up";
+static constexpr const char *descrMetricHwNetworkUp = "Link status: `1` (up) or `0` (down).";
+static constexpr const char *unitMetricHwNetworkUp = "1";
+
+static inline nostd::unique_ptr
+ gauge
+ */
+static constexpr const char *kMetricHwPhysicalDiskEnduranceUtilization =
+ "hw.physical_disk.endurance_utilization";
+static constexpr const char *descrMetricHwPhysicalDiskEnduranceUtilization =
+ "Endurance remaining for this SSD disk.";
+static constexpr const char *unitMetricHwPhysicalDiskEnduranceUtilization = "1";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
+ updowncounter
+ */
+static constexpr const char *kMetricHwPhysicalDiskSize = "hw.physical_disk.size";
+static constexpr const char *descrMetricHwPhysicalDiskSize = "Size of the disk.";
+static constexpr const char *unitMetricHwPhysicalDiskSize = "By";
+
+static inline nostd::unique_ptr gauge
+ */
+static constexpr const char *kMetricHwPhysicalDiskSmart = "hw.physical_disk.smart";
+static constexpr const char *descrMetricHwPhysicalDiskSmart =
+ "Value of the corresponding [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) "
+ "(Self-Monitoring, Analysis, and Reporting Technology) attribute.";
+static constexpr const char *unitMetricHwPhysicalDiskSmart = "1";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+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 = "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
+ updowncounter
+ */
+static constexpr const char *kMetricHwPowerSupplyLimit = "hw.power_supply.limit";
+static constexpr const char *descrMetricHwPowerSupplyLimit =
+ "Maximum power output of the power supply.";
+static constexpr const char *unitMetricHwPowerSupplyLimit = "W";
+
+static inline nostd::unique_ptr
+ values.
[!WARNING]
+ [!Warning]
+ This attribute is likely to contain sensitive information including user/PII data.
+
+ [!Warning]
+ This attribute is likely to contain sensitive information including user/PII data.
+
+ [!Warning]
+ This attribute may contain sensitive information.
+