# Semantic conventions for system metrics **Status**: [Development][DocumentStatus] This document describes instruments and attributes for common system level metrics in OpenTelemetry. Consider the [general metric semantic conventions](/docs/general/metrics.md#general-guidelines) when creating instruments not explicitly defined in the specification. The `system.*` namespace SHOULD be exclusively used to report hosts' metrics. The `system.*` namespace SHOULD only be used when the metrics are collected from within the target system. (physical servers, virtual machines etc). Metrics collected from technology-specific, well-defined APIs (e.g. Kubelet's API or container runtimes) should be reported under their respective namespace (e.g. k8s.*, container.*). Resource attributes related to a host, SHOULD be reported under the `host.*` namespace. - [General metrics](#general-metrics) - [Metric: `system.uptime`](#metric-systemuptime) - [Processor metrics](#processor-metrics) - [Metric: `system.cpu.physical.count`](#metric-systemcpuphysicalcount) - [Metric: `system.cpu.logical.count`](#metric-systemcpulogicalcount) - [Memory metrics](#memory-metrics) - [Metric: `system.memory.usage`](#metric-systemmemoryusage) - [Metric: `system.memory.limit`](#metric-systemmemorylimit) - [Metric: `system.memory.shared`](#metric-systemmemoryshared) - [Metric: `system.memory.utilization`](#metric-systemmemoryutilization) - [Paging/Swap Metrics](#pagingswap-metrics) - [Metric: `system.paging.usage`](#metric-systempagingusage) - [Metric: `system.paging.utilization`](#metric-systempagingutilization) - [Metric: `system.paging.faults`](#metric-systempagingfaults) - [Metric: `system.paging.operations`](#metric-systempagingoperations) - [Disk controller metrics](#disk-controller-metrics) - [Metric: `system.disk.io`](#metric-systemdiskio) - [Metric: `system.disk.operations`](#metric-systemdiskoperations) - [Metric: `system.disk.io_time`](#metric-systemdiskio_time) - [Metric: `system.disk.operation_time`](#metric-systemdiskoperation_time) - [Metric: `system.disk.merged`](#metric-systemdiskmerged) - [Metric: `system.disk.limit`](#metric-systemdisklimit) - [Filesystem metrics](#filesystem-metrics) - [Metric: `system.filesystem.usage`](#metric-systemfilesystemusage) - [Metric: `system.filesystem.utilization`](#metric-systemfilesystemutilization) - [Metric: `system.filesystem.limit`](#metric-systemfilesystemlimit) - [Network metrics](#network-metrics) - [Metric: `system.network.dropped`](#metric-systemnetworkdropped) - [Metric: `system.network.packets`](#metric-systemnetworkpackets) - [Metric: `system.network.errors`](#metric-systemnetworkerrors) - [Metric: `system.network.io`](#metric-systemnetworkio) - [Metric: `system.network.connections`](#metric-systemnetworkconnections) - [Aggregate system process metrics](#aggregate-system-process-metrics) - [Metric: `system.process.count`](#metric-systemprocesscount) - [Metric: `system.process.created`](#metric-systemprocesscreated) - [`system.{os}.` - OS Specific System Metrics](#systemos---os-specific-system-metrics) - [Metric: `system.linux.memory.available`](#metric-systemlinuxmemoryavailable) - [Metric: `system.linux.memory.slab.usage`](#metric-systemlinuxmemoryslabusage) > **Warning** Existing instrumentations and collector that are using > [v1.21.0 of this document](https://github.com/open-telemetry/semantic-conventions/blob/v1.21.0/docs/system/system-metrics.md) > (or prior): > > * SHOULD NOT adopt any breaking changes from document until the system > semantic conventions are marked stable. Conventions include, but are not > limited to, attributes, metric names, and unit of measure. > * SHOULD introduce a control mechanism to allow users to opt-in to the new > conventions once the migration plan is finalized. ## General metrics ### Metric: `system.uptime` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.uptime` | Gauge | `s` | The time the system has been running [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** Instrumentations SHOULD use a gauge with type `double` 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. ## Processor metrics **Description:** System level processor metrics captured under the namespace `system.cpu`. ### Metric: `system.cpu.physical.count` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.cpu.physical.count` | UpDownCounter | `{cpu}` | Reports the number of actual physical processor cores on the hardware [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** Calculated by multiplying the number of sockets by the number of cores per socket ### Metric: `system.cpu.logical.count` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.cpu.logical.count` | UpDownCounter | `{cpu}` | Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** Calculated by multiplying the number of sockets by the number of cores per socket, and then by the number of threads per core ## Memory metrics **Description:** System level memory metrics capture under the namespace `system.memory`. This does not include [paging/swap memory](#pagingswap-metrics). ### Metric: `system.memory.usage` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.memory.usage` | UpDownCounter | `By` | Reports memory in use by state. [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** The sum over all `system.memory.state` values SHOULD equal the total memory available on the system, that is `system.memory.limit`. | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`system.memory.state`](/docs/registry/attributes/system.md) | string | The memory state | `free`; `cached` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.memory.state` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `buffers` | buffers | ![Development](https://img.shields.io/badge/-development-blue) | | `cached` | cached | ![Development](https://img.shields.io/badge/-development-blue) | | `free` | free | ![Development](https://img.shields.io/badge/-development-blue) | | `used` | used | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.memory.limit` This metric is [opt-in][MetricOptIn]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.memory.limit` | UpDownCounter | `By` | Total memory available in the system. [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** Its value SHOULD equal the sum of `system.memory.state` over all states. ### Metric: `system.memory.shared` This metric is [opt-in][MetricOptIn]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.memory.shared` | UpDownCounter | `By` | Shared memory used (mostly by tmpfs). [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** Equivalent of `shared` from [`free` command](https://man7.org/linux/man-pages/man1/free.1.html) or `Shmem` from [`/proc/meminfo`](https://man7.org/linux/man-pages/man5/proc.5.html)" ### Metric: `system.memory.utilization` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.memory.utilization` | Gauge | `1` | | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`system.memory.state`](/docs/registry/attributes/system.md) | string | The memory state | `free`; `cached` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.memory.state` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `buffers` | buffers | ![Development](https://img.shields.io/badge/-development-blue) | | `cached` | cached | ![Development](https://img.shields.io/badge/-development-blue) | | `free` | free | ![Development](https://img.shields.io/badge/-development-blue) | | `used` | used | ![Development](https://img.shields.io/badge/-development-blue) | ## Paging/Swap Metrics **Description:** System level paging/swap memory metrics captured under the namespace `system.paging`. ### Metric: `system.paging.usage` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.paging.usage` | UpDownCounter | `By` | Unix swap or windows pagefile usage | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`system.device`](/docs/registry/attributes/system.md) | string | Unique identifier for the device responsible for managing paging operations. | `/dev/dm-0` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.paging.state`](/docs/registry/attributes/system.md) | string | The memory paging state | `free` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.paging.state` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `free` | free | ![Development](https://img.shields.io/badge/-development-blue) | | `used` | used | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.paging.utilization` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.paging.utilization` | Gauge | `1` | | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`system.device`](/docs/registry/attributes/system.md) | string | Unique identifier for the device responsible for managing paging operations. | `/dev/dm-0` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.paging.state`](/docs/registry/attributes/system.md) | string | The memory paging state | `free` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.paging.state` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `free` | free | ![Development](https://img.shields.io/badge/-development-blue) | | `used` | used | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.paging.faults` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.paging.faults` | Counter | `{fault}` | | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`system.paging.type`](/docs/registry/attributes/system.md) | string | The memory paging type | `minor` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.paging.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `major` | major | ![Development](https://img.shields.io/badge/-development-blue) | | `minor` | minor | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.paging.operations` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.paging.operations` | Counter | `{operation}` | | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`system.paging.direction`](/docs/registry/attributes/system.md) | string | The paging access direction | `in` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.paging.type`](/docs/registry/attributes/system.md) | string | The memory paging type | `minor` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.paging.direction` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `in` | in | ![Development](https://img.shields.io/badge/-development-blue) | | `out` | out | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.paging.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `major` | major | ![Development](https://img.shields.io/badge/-development-blue) | | `minor` | minor | ![Development](https://img.shields.io/badge/-development-blue) | ## Disk controller metrics **Description:** System level disk performance metrics captured under the namespace `system.disk`. ### Metric: `system.disk.io` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.disk.io` | Counter | `By` | | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`disk.io.direction`](/docs/registry/attributes/disk.md) | string | The disk IO operation direction. | `read` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.device`](/docs/registry/attributes/system.md) | string | The device identifier | `(identifier)` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `disk.io.direction` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `read` | read | ![Development](https://img.shields.io/badge/-development-blue) | | `write` | write | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.disk.operations` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.disk.operations` | Counter | `{operation}` | | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`disk.io.direction`](/docs/registry/attributes/disk.md) | string | The disk IO operation direction. | `read` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.device`](/docs/registry/attributes/system.md) | string | The device identifier | `(identifier)` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `disk.io.direction` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `read` | read | ![Development](https://img.shields.io/badge/-development-blue) | | `write` | write | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.disk.io_time` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.disk.io_time` | Counter | `s` | Time disk spent activated [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** The real elapsed time ("wall clock") used in the I/O path (time from operations running in parallel are not counted). Measured as: - Linux: Field 13 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) - Windows: The complement of ["Disk\% Idle Time"](https://learn.microsoft.com/archive/blogs/askcore/windows-performance-monitor-disk-counters-explained#windows-performance-monitor-disk-counters-explained) performance counter: `uptime * (100 - "Disk\% Idle Time") / 100` | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`system.device`](/docs/registry/attributes/system.md) | string | The device identifier | `(identifier)` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.disk.operation_time` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.disk.operation_time` | Counter | `s` | Sum of the time each operation took to complete [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** Because it is the sum of time each request took, parallel-issued requests each contribute to make the count grow. Measured as: - Linux: Fields 7 & 11 from [procfs-diskstats](https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats) - Windows: "Avg. Disk sec/Read" perf counter multiplied by "Disk Reads/sec" perf counter (similar for Writes) | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`disk.io.direction`](/docs/registry/attributes/disk.md) | string | The disk IO operation direction. | `read` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.device`](/docs/registry/attributes/system.md) | string | The device identifier | `(identifier)` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `disk.io.direction` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `read` | read | ![Development](https://img.shields.io/badge/-development-blue) | | `write` | write | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.disk.merged` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.disk.merged` | Counter | `{operation}` | | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`disk.io.direction`](/docs/registry/attributes/disk.md) | string | The disk IO operation direction. | `read` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.device`](/docs/registry/attributes/system.md) | string | The device identifier | `(identifier)` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `disk.io.direction` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `read` | read | ![Development](https://img.shields.io/badge/-development-blue) | | `write` | write | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.disk.limit` This metric is [opt-in][MetricOptIn]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.disk.limit` | UpDownCounter | `By` | The total storage capacity of the disk | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`system.device`](/docs/registry/attributes/system.md) | string | The device identifier | `(identifier)` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | ## Filesystem metrics **Description:** System level filesystem metrics captured under the namespace `system.filesystem`. ### Metric: `system.filesystem.usage` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.filesystem.usage` | UpDownCounter | `By` | Reports a filesystem's space usage across different states. [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** The sum of all `system.filesystem.usage` values over the different `system.filesystem.state` attributes SHOULD equal the total storage capacity of the filesystem, that is `system.filesystem.limit`. | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`system.device`](/docs/registry/attributes/system.md) | string | Identifier for the device where the filesystem resides. | `/dev/sda`; `\network-drive` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.filesystem.mode`](/docs/registry/attributes/system.md) | string | The filesystem mode | `rw, ro` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.filesystem.mountpoint`](/docs/registry/attributes/system.md) | string | The filesystem mount path | `/mnt/data` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.filesystem.state`](/docs/registry/attributes/system.md) | string | The filesystem state | `used` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.filesystem.type`](/docs/registry/attributes/system.md) | string | The filesystem type | `ext4` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.filesystem.state` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `free` | free | ![Development](https://img.shields.io/badge/-development-blue) | | `reserved` | reserved | ![Development](https://img.shields.io/badge/-development-blue) | | `used` | used | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.filesystem.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `exfat` | exfat | ![Development](https://img.shields.io/badge/-development-blue) | | `ext4` | ext4 | ![Development](https://img.shields.io/badge/-development-blue) | | `fat32` | fat32 | ![Development](https://img.shields.io/badge/-development-blue) | | `hfsplus` | hfsplus | ![Development](https://img.shields.io/badge/-development-blue) | | `ntfs` | ntfs | ![Development](https://img.shields.io/badge/-development-blue) | | `refs` | refs | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.filesystem.utilization` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.filesystem.utilization` | Gauge | `1` | | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`system.device`](/docs/registry/attributes/system.md) | string | Identifier for the device where the filesystem resides. | `/dev/sda`; `\network-drive` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.filesystem.mode`](/docs/registry/attributes/system.md) | string | The filesystem mode | `rw, ro` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.filesystem.mountpoint`](/docs/registry/attributes/system.md) | string | The filesystem mount path | `/mnt/data` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.filesystem.state`](/docs/registry/attributes/system.md) | string | The filesystem state | `used` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.filesystem.type`](/docs/registry/attributes/system.md) | string | The filesystem type | `ext4` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.filesystem.state` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `free` | free | ![Development](https://img.shields.io/badge/-development-blue) | | `reserved` | reserved | ![Development](https://img.shields.io/badge/-development-blue) | | `used` | used | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.filesystem.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `exfat` | exfat | ![Development](https://img.shields.io/badge/-development-blue) | | `ext4` | ext4 | ![Development](https://img.shields.io/badge/-development-blue) | | `fat32` | fat32 | ![Development](https://img.shields.io/badge/-development-blue) | | `hfsplus` | hfsplus | ![Development](https://img.shields.io/badge/-development-blue) | | `ntfs` | ntfs | ![Development](https://img.shields.io/badge/-development-blue) | | `refs` | refs | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.filesystem.limit` This metric is [opt-in][MetricOptIn]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.filesystem.limit` | UpDownCounter | `By` | The total storage capacity of the filesystem | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`system.device`](/docs/registry/attributes/system.md) | string | Identifier for the device where the filesystem resides. | `/dev/sda`; `\network-drive` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.filesystem.mode`](/docs/registry/attributes/system.md) | string | The filesystem mode | `rw, ro` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.filesystem.mountpoint`](/docs/registry/attributes/system.md) | string | The filesystem mount path | `/mnt/data` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.filesystem.type`](/docs/registry/attributes/system.md) | string | The filesystem type | `ext4` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.filesystem.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `exfat` | exfat | ![Development](https://img.shields.io/badge/-development-blue) | | `ext4` | ext4 | ![Development](https://img.shields.io/badge/-development-blue) | | `fat32` | fat32 | ![Development](https://img.shields.io/badge/-development-blue) | | `hfsplus` | hfsplus | ![Development](https://img.shields.io/badge/-development-blue) | | `ntfs` | ntfs | ![Development](https://img.shields.io/badge/-development-blue) | | `refs` | refs | ![Development](https://img.shields.io/badge/-development-blue) | ## Network metrics **Description:** System level network metrics captured under the namespace `system.network`. ### Metric: `system.network.dropped` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.network.dropped` | Counter | `{packet}` | Count of packets that are dropped or discarded even though there was no error [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** Measured as: - Linux: the `drop` column in `/proc/dev/net` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)) - Windows: [`InDiscards`/`OutDiscards`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2) | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`network.interface.name`](/docs/registry/attributes/network.md) | string | The network interface name. | `lo`; `eth0` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`network.io.direction`](/docs/registry/attributes/network.md) | string | The network IO operation direction. | `transmit` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `network.io.direction` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `receive` | receive | ![Development](https://img.shields.io/badge/-development-blue) | | `transmit` | transmit | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.network.packets` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.network.packets` | Counter | `{packet}` | | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`network.io.direction`](/docs/registry/attributes/network.md) | string | The network IO operation direction. | `transmit` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`system.device`](/docs/registry/attributes/system.md) | string | The device identifier | `(identifier)` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `network.io.direction` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `receive` | receive | ![Development](https://img.shields.io/badge/-development-blue) | | `transmit` | transmit | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.network.errors` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.network.errors` | Counter | `{error}` | Count of network errors detected [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** Measured as: - Linux: the `errs` column in `/proc/dev/net` ([source](https://web.archive.org/web/20180321091318/http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html)). - Windows: [`InErrors`/`OutErrors`](https://docs.microsoft.com/windows/win32/api/netioapi/ns-netioapi-mib_if_row2) from [`GetIfEntry2`](https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2). | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`network.interface.name`](/docs/registry/attributes/network.md) | string | The network interface name. | `lo`; `eth0` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`network.io.direction`](/docs/registry/attributes/network.md) | string | The network IO operation direction. | `transmit` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `network.io.direction` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `receive` | receive | ![Development](https://img.shields.io/badge/-development-blue) | | `transmit` | transmit | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.network.io` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.network.io` | Counter | `By` | | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`network.interface.name`](/docs/registry/attributes/network.md) | string | The network interface name. | `lo`; `eth0` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`network.io.direction`](/docs/registry/attributes/network.md) | string | The network IO operation direction. | `transmit` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `network.io.direction` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `receive` | receive | ![Development](https://img.shields.io/badge/-development-blue) | | `transmit` | transmit | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.network.connections` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.network.connections` | UpDownCounter | `{connection}` | | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`network.connection.state`](/docs/registry/attributes/network.md) | string | The state of network connection [1] | `close_wait` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`network.interface.name`](/docs/registry/attributes/network.md) | string | The network interface name. | `lo`; `eth0` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`network.transport`](/docs/registry/attributes/network.md) | string | [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication). [2] | `tcp`; `udp` | `Recommended` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1] `network.connection.state`:** Connection states are defined as part of the [rfc9293](https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2) **[2] `network.transport`:** The value SHOULD be normalized to lowercase. Consider always setting the transport when setting a port number, since a port number is ambiguous without knowing the transport. For example different processes could be listening on TCP port 12345 and UDP port 12345. --- `network.connection.state` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `close_wait` | close_wait | ![Development](https://img.shields.io/badge/-development-blue) | | `closed` | closed | ![Development](https://img.shields.io/badge/-development-blue) | | `closing` | closing | ![Development](https://img.shields.io/badge/-development-blue) | | `established` | established | ![Development](https://img.shields.io/badge/-development-blue) | | `fin_wait_1` | fin_wait_1 | ![Development](https://img.shields.io/badge/-development-blue) | | `fin_wait_2` | fin_wait_2 | ![Development](https://img.shields.io/badge/-development-blue) | | `last_ack` | last_ack | ![Development](https://img.shields.io/badge/-development-blue) | | `listen` | listen | ![Development](https://img.shields.io/badge/-development-blue) | | `syn_received` | syn_received | ![Development](https://img.shields.io/badge/-development-blue) | | `syn_sent` | syn_sent | ![Development](https://img.shields.io/badge/-development-blue) | | `time_wait` | time_wait | ![Development](https://img.shields.io/badge/-development-blue) | --- `network.transport` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `pipe` | Named or anonymous pipe. | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | `quic` | QUIC | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | `tcp` | TCP | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | `udp` | UDP | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | `unix` | Unix domain socket | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | ## Aggregate system process metrics **Description:** System level aggregate process metrics captured under the namespace `system.process`. For metrics at the individual process level, see [process metrics](process-metrics.md). ### Metric: `system.process.count` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.process.count` | UpDownCounter | `{process}` | Total number of processes in each state | ![Development](https://img.shields.io/badge/-development-blue) | `host` | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`system.process.status`](/docs/registry/attributes/system.md) | string | The process state, e.g., [Linux Process State Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES) | `running` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `system.process.status` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `defunct` | defunct | ![Development](https://img.shields.io/badge/-development-blue) | | `running` | running | ![Development](https://img.shields.io/badge/-development-blue) | | `sleeping` | sleeping | ![Development](https://img.shields.io/badge/-development-blue) | | `stopped` | stopped | ![Development](https://img.shields.io/badge/-development-blue) | ### Metric: `system.process.created` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.process.created` | Counter | `{process}` | Total number of processes created over uptime of the host | ![Development](https://img.shields.io/badge/-development-blue) | `host` | ## `system.{os}.` - OS Specific System Metrics Instrument names for system level metrics that have different and conflicting meaning across multiple OSes should be prefixed with `system.{os}.` and follow the hierarchies listed above for different entities like CPU, memory, and network. For example, [UNIX load average](https://wikipedia.org/wiki/Load_(computing)) over a given interval is not well standardized and its value across different UNIX like OSes may vary despite being under similar load: > Without getting into the vagaries of every Unix-like operating system in existence, the load average more or less represents the average number of processes that are in the running (using the CPU) or runnable (waiting for the CPU) states. One notable exception exists: Linux includes processes in uninterruptible sleep states, typically waiting for some I/O activity to complete. This can markedly increase the load average on Linux systems. ([source of quote](https://github.com/torvalds/linux/blob/e4cbce4d131753eca271d9d67f58c6377f27ad21/kernel/sched/loadavg.c#L11-L18), [linux source code](https://github.com/torvalds/linux/blob/e4cbce4d131753eca271d9d67f58c6377f27ad21/kernel/sched/loadavg.c#L11-L18)) An instrument for load average over 1 minute on Linux could be named `system.linux.cpu.load_1m`, reusing the `cpu` name proposed above and having an `{os}` prefix to split this metric across OSes. [DocumentStatus]: https://opentelemetry.io/docs/specs/otel/document-status [MetricRecommended]: /docs/general/metric-requirement-level.md#recommended [MetricOptIn]: /docs/general/metric-requirement-level.md#opt-in ### Metric: `system.linux.memory.available` | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.linux.memory.available` | UpDownCounter | `By` | An estimate of how much memory is available for starting new applications, without causing swapping [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** This is an alternative to `system.memory.usage` metric with `state=free`. Linux starting from 3.14 exports "available" memory. It takes "free" memory as a baseline, and then factors in kernel-specific values. This is supposed to be more accurate than just "free" memory. For reference, see the calculations [here](https://superuser.com/a/980821). See also `MemAvailable` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). ### Metric: `system.linux.memory.slab.usage` This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations | | -------- | --------------- | ----------- | -------------- | --------- | ------ | | `system.linux.memory.slab.usage` | UpDownCounter | `By` | Reports the memory used by the Linux kernel for managing caches of frequently used objects. [1] | ![Development](https://img.shields.io/badge/-development-blue) | `host` | **[1]:** The sum over the `reclaimable` and `unreclaimable` state values in `linux.memory.slab.usage` SHOULD be equal to the total slab memory available on the system. Note that the total slab memory is not constant and may vary over time. See also the [Slab allocator](https://blogs.oracle.com/linux/post/understanding-linux-kernel-memory-statistics) and `Slab` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`linux.memory.slab.state`](/docs/registry/attributes/linux.md) | string | The Linux Slab memory state | `reclaimable`; `unreclaimable` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | --- `linux.memory.slab.state` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| | `reclaimable` | reclaimable | ![Development](https://img.shields.io/badge/-development-blue) | | `unreclaimable` | unreclaimable | ![Development](https://img.shields.io/badge/-development-blue) |