Semantic conventions for system metrics

Status: Development

This document describes instruments and attributes for common system level metrics in OpenTelemetry. Consider the general metric semantic conventions 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

Metric: system.uptime

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.uptimeGaugesThe time the system has been running. [1]Developmenthost

[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.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.cpu.physical.countUpDownCounter{cpu}Reports the number of actual physical processor cores on the hardware. [1]Developmenthost

[1]: Calculated by multiplying the number of sockets by the number of cores per socket

Metric: system.cpu.logical.count

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.cpu.logical.countUpDownCounter{cpu}Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking. [1]Developmenthost

[1]: Calculated by multiplying the number of sockets by the number of cores per socket, and then by the number of threads per core

Metric: system.cpu.time

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.cpu.timeCountersSeconds each logical CPU spent on each mode.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
cpu.modeRelease CandidateRecommendedstringThe mode of the CPU [1]user; system (see more)
cpu.logical_numberRelease CandidateOpt-InintThe identifier of a logical execution target (CPU) as seen by the operating system, in the range [0..n-1]. [2]1

[1] cpu.mode: Following states SHOULD be used: user, system, nice, idle, iowait, interrupt, steal

[2] cpu.logical_number: On systems with simultaneous multithreading (SMT) enabled — such as Intel Hyper-Threading or AMD SMT — this value will usually differ from the physical core number, because each core presents multiple logical CPUs for the system to use.


cpu.mode 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.

ValueDescriptionStability
idleIdleRelease Candidate
interruptInterruptRelease Candidate
iowaitIO WaitRelease Candidate
niceNiceRelease Candidate
stealStealRelease Candidate
systemSystemRelease Candidate
userUserRelease Candidate

Metric: system.cpu.frequency

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.cpu.frequencyGaugeHzOperating frequency of the logical CPU in Hertz.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
cpu.logical_numberRelease CandidateRecommendedintThe identifier of a logical execution target (CPU) as seen by the operating system, in the range [0..n-1]. [1]1

[1] cpu.logical_number: On systems with simultaneous multithreading (SMT) enabled — such as Intel Hyper-Threading or AMD SMT — this value will usually differ from the physical core number, because each core presents multiple logical CPUs for the system to use.

Metric: system.cpu.utilization

This metric is opt-in.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.cpu.utilizationGauge1For each logical CPU, the utilization is calculated as the change in cumulative CPU time (cpu.time) over a measurement interval, divided by the elapsed time.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
cpu.modeRelease CandidateRecommendedstringThe mode of the CPU [1]user; system (see more)
cpu.logical_numberRelease CandidateOpt-InintThe identifier of a logical execution target (CPU) as seen by the operating system, in the range [0..n-1]. [2]1

[1] cpu.mode: Following modes SHOULD be used: user, system, nice, idle, iowait, interrupt, steal

[2] cpu.logical_number: On systems with simultaneous multithreading (SMT) enabled — such as Intel Hyper-Threading or AMD SMT — this value will usually differ from the physical core number, because each core presents multiple logical CPUs for the system to use.


cpu.mode 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.

ValueDescriptionStability
idleIdleRelease Candidate
interruptInterruptRelease Candidate
iowaitIO WaitRelease Candidate
niceNiceRelease Candidate
stealStealRelease Candidate
systemSystemRelease Candidate
userUserRelease Candidate

Memory metrics

Description: System level memory metrics capture under the namespace system.memory. This does not include paging/swap memory.

Metric: system.memory.usage

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.memory.usageUpDownCounterByReports memory by state. [1]Developmenthost

[1]: The sum of the used and available state values SHOULD be equal to system.memory.limit.

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.memory.stateDevelopmentRecommendedstringThe memory stateused; available (see more)

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.

ValueDescriptionStability
availableAn estimate of how much memory is available for starting new applications, without causing swapping. [1]Development
usedActual used virtual memory in bytes. [2]Release Candidate

[1]: Calculation based on the operating system metrics. On Linux, this corresponds to “MemAvailable” from /proc/meminfo.

[2]: Calculation based on the operating system metrics. On Linux, this corresponds to “MemTotal - MemAvailable” from /proc/meminfo, which more accurately reflects memory in active use by applications compared to older formulas based on free, cached, and buffers. If MemAvailable is not available, a fallback to those older formulas may be used.

Metric: system.memory.limit

This metric is opt-in.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.memory.limitUpDownCounterByTotal virtual memory available in the system.Developmenthost

Metric: system.memory.utilization

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.memory.utilizationGauge1Fraction of memory bytes by state. [1]Developmenthost

[1]: The sum of the used and available state values SHOULD be equal to 1.

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.memory.stateDevelopmentRecommendedstringThe memory stateused; available (see more)

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.

ValueDescriptionStability
availableAn estimate of how much memory is available for starting new applications, without causing swapping. [1]Development
usedActual used virtual memory in bytes. [2]Release Candidate

[1]: Calculation based on the operating system metrics. On Linux, this corresponds to “MemAvailable” from /proc/meminfo.

[2]: Calculation based on the operating system metrics. On Linux, this corresponds to “MemTotal - MemAvailable” from /proc/meminfo, which more accurately reflects memory in active use by applications compared to older formulas based on free, cached, and buffers. If MemAvailable is not available, a fallback to those older formulas may be used.

Paging/Swap Metrics

Description: System level paging/swap memory metrics captured under the namespace system.paging.

Metric: system.paging.usage

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.paging.usageUpDownCounterByUNIX swap or windows pagefile usage.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.device.nameRelease CandidateRecommendedstringUnique identifier for the device responsible for managing paging operations./dev/dm-0
system.paging.stateRelease CandidateRecommendedstringThe memory paging statefree (see more)

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.

ValueDescriptionStability
freefreeRelease Candidate
usedusedRelease Candidate

Metric: system.paging.utilization

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.paging.utilizationGauge1Swap (UNIX) or pagefile (windows) utilization.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.device.nameRelease CandidateRecommendedstringUnique identifier for the device responsible for managing paging operations./dev/dm-0
system.paging.stateRelease CandidateRecommendedstringThe memory paging statefree (see more)

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.

ValueDescriptionStability
freefreeRelease Candidate
usedusedRelease Candidate

Metric: system.paging.faults

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.paging.faultsCounter{fault}The number of page faults.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.paging.fault.typeRelease CandidateRecommendedstringThe paging fault typeminor (see more)

system.paging.fault.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.

ValueDescriptionStability
majormajorRelease Candidate
minorminorRelease Candidate

Metric: system.paging.operations

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.paging.operationsCounter{operation}The number of paging operations.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.paging.directionRelease CandidateRecommendedstringThe paging access directionin (see more)
system.paging.fault.typeRelease CandidateRecommendedstringThe paging fault typeminor (see more)

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.

ValueDescriptionStability
ininRelease Candidate
outoutRelease Candidate

system.paging.fault.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.

ValueDescriptionStability
majormajorRelease Candidate
minorminorRelease Candidate

Disk controller metrics

Description: System level disk performance metrics captured under the namespace system.disk.

Metric: system.disk.io

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.disk.ioCounterByDisk bytes transferred.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
disk.io.directionRelease CandidateRecommendedstringThe disk IO operation direction.read (see more)
system.device.nameRelease CandidateRecommendedstringThe OS level identifier for a device, such as disk, partition or network interface./dev/sda; eth0; \network-drive

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.

ValueDescriptionStability
readreadRelease Candidate
writewriteRelease Candidate

Metric: system.disk.operations

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.disk.operationsCounter{operation}Disk operations count.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
disk.io.directionRelease CandidateRecommendedstringThe disk IO operation direction.read (see more)
system.device.nameRelease CandidateRecommendedstringThe OS level identifier for a device, such as disk, partition or network interface./dev/sda; eth0; \network-drive

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.

ValueDescriptionStability
readreadRelease Candidate
writewriteRelease Candidate

Metric: system.disk.io_time

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.disk.io_timeCountersTime disk spent activated. [1]Developmenthost

[1]: The real elapsed time (“wall clock”) used in the I/O path (time from operations running in parallel are not counted). Measured as:

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.device.nameRelease CandidateRecommendedstringThe OS level identifier for a device, such as disk, partition or network interface./dev/sda; eth0; \network-drive

Metric: system.disk.operation_time

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.disk.operation_timeCountersSum of the time each operation took to complete. [1]Developmenthost

[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
  • Windows: “Avg. Disk sec/Read” perf counter multiplied by “Disk Reads/sec” perf counter (similar for Writes)

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
disk.io.directionRelease CandidateRecommendedstringThe disk IO operation direction.read (see more)
system.device.nameRelease CandidateRecommendedstringThe OS level identifier for a device, such as disk, partition or network interface./dev/sda; eth0; \network-drive

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.

ValueDescriptionStability
readreadRelease Candidate
writewriteRelease Candidate

Metric: system.disk.merged

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.disk.mergedCounter{operation}The number of disk reads/writes merged into single physical disk access operations.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
disk.io.directionRelease CandidateRecommendedstringThe disk IO operation direction.read (see more)
system.device.nameRelease CandidateRecommendedstringThe OS level identifier for a device, such as disk, partition or network interface./dev/sda; eth0; \network-drive

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.

ValueDescriptionStability
readreadRelease Candidate
writewriteRelease Candidate

Metric: system.disk.limit

This metric is opt-in.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.disk.limitUpDownCounterByThe total storage capacity of the disk.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.device.nameRelease CandidateRecommendedstringThe OS level identifier for a device, such as disk, partition or network interface./dev/sda; eth0; \network-drive

Filesystem metrics

Description: System level filesystem metrics captured under the namespace system.filesystem.

Metric: system.filesystem.usage

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.filesystem.usageUpDownCounterByReports a filesystem’s space usage across different states. [1]Developmenthost

[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.

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.device.nameRelease CandidateRecommendedstringIdentifier for the device where the filesystem resides./dev/sda; \network-drive
system.filesystem.modeRelease CandidateRecommendedstringThe filesystem moderw, ro
system.filesystem.mountpointRelease CandidateRecommendedstringThe filesystem mount path/mnt/data
system.filesystem.stateRelease CandidateRecommendedstringThe filesystem stateused (see more)
system.filesystem.typeRelease CandidateRecommendedstringThe filesystem typeext4 (see more)

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.

ValueDescriptionStability
freefreeRelease Candidate
reservedreservedRelease Candidate
usedusedRelease Candidate

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.

ValueDescriptionStability
exfatexfatRelease Candidate
ext4ext4Release Candidate
fat32fat32Release Candidate
hfsplushfsplusRelease Candidate
ntfsntfsRelease Candidate
refsrefsRelease Candidate

Metric: system.filesystem.utilization

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.filesystem.utilizationGauge1Fraction of filesystem bytes used.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.device.nameRelease CandidateRecommendedstringIdentifier for the device where the filesystem resides./dev/sda; \network-drive
system.filesystem.modeRelease CandidateRecommendedstringThe filesystem moderw, ro
system.filesystem.mountpointRelease CandidateRecommendedstringThe filesystem mount path/mnt/data
system.filesystem.stateRelease CandidateRecommendedstringThe filesystem stateused (see more)
system.filesystem.typeRelease CandidateRecommendedstringThe filesystem typeext4 (see more)

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.

ValueDescriptionStability
freefreeRelease Candidate
reservedreservedRelease Candidate
usedusedRelease Candidate

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.

ValueDescriptionStability
exfatexfatRelease Candidate
ext4ext4Release Candidate
fat32fat32Release Candidate
hfsplushfsplusRelease Candidate
ntfsntfsRelease Candidate
refsrefsRelease Candidate

Metric: system.filesystem.limit

This metric is opt-in.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.filesystem.limitUpDownCounterByThe total storage capacity of the filesystem.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.device.nameRelease CandidateRecommendedstringIdentifier for the device where the filesystem resides./dev/sda; \network-drive
system.filesystem.modeRelease CandidateRecommendedstringThe filesystem moderw, ro
system.filesystem.mountpointRelease CandidateRecommendedstringThe filesystem mount path/mnt/data
system.filesystem.typeRelease CandidateRecommendedstringThe filesystem typeext4 (see more)

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.

ValueDescriptionStability
exfatexfatRelease Candidate
ext4ext4Release Candidate
fat32fat32Release Candidate
hfsplushfsplusRelease Candidate
ntfsntfsRelease Candidate
refsrefsRelease Candidate

Metric: system.filesystem.lock.count

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.filesystem.lock.countUpDownCounter{lock}Filesystem lock counts.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
file.lock.mechanismDevelopmentRecommendedstringThe lock mechanism such as noted by POSIXPOSIX; FLOCK; DELEG; LEASE
file.lock.modeDevelopmentRecommendedstringMode of lock or operation such as documented by POSIXADVISORY; MANDATORY; BREAKING; ACTIVE; BREAKER
file.lock.typeDevelopmentRecommendedstringThe lock type as represented by i.e. POSIX’s l_type.read (see more)
system.device.nameRelease CandidateRecommendedstringOS-specific identifier for the device where the file resides.08:01

file.lock.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.

ValueDescriptionStability
readreadDevelopment
writewriteDevelopment

Network metrics

Description: System level network metrics captured under the namespace system.network.

Metric: system.network.packet.dropped

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.network.packet.droppedCounter{packet}Count of packets that are dropped or discarded even though there was no error. [1]Developmenthost

[1]: Measured as:

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
network.interface.nameRelease CandidateRecommendedstringThe network interface name.lo; eth0
network.io.directionRelease CandidateRecommendedstringThe direction of traffic from the perspective of the observing host’s physical or virtual network interface. It should not be used to represent the logical direction of a stateful connection or network flow.transmit (see more)

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.

ValueDescriptionStability
receivereceiveRelease Candidate
transmittransmitRelease Candidate

Metric: system.network.packet.count

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.network.packet.countCounter{packet}The number of packets transferred.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
network.io.directionRelease CandidateRecommendedstringThe direction of traffic from the perspective of the observing host’s physical or virtual network interface. It should not be used to represent the logical direction of a stateful connection or network flow.transmit (see more)
system.device.nameRelease CandidateRecommendedstringThe OS level identifier for a device, such as disk, partition or network interface./dev/sda; eth0; \network-drive

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.

ValueDescriptionStability
receivereceiveRelease Candidate
transmittransmitRelease Candidate

Metric: system.network.errors

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.network.errorsCounter{error}Count of network errors detected. [1]Developmenthost

[1]: Measured as:

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
network.interface.nameRelease CandidateRecommendedstringThe network interface name.lo; eth0
network.io.directionRelease CandidateRecommendedstringThe direction of traffic from the perspective of the observing host’s physical or virtual network interface. It should not be used to represent the logical direction of a stateful connection or network flow.transmit (see more)

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.

ValueDescriptionStability
receivereceiveRelease Candidate
transmittransmitRelease Candidate

Metric: system.network.io

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.network.ioCounterByThe number of bytes transmitted and received.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
network.interface.nameRelease CandidateRecommendedstringThe network interface name.lo; eth0
network.io.directionRelease CandidateRecommendedstringThe direction of traffic from the perspective of the observing host’s physical or virtual network interface. It should not be used to represent the logical direction of a stateful connection or network flow.transmit (see more)

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.

ValueDescriptionStability
receivereceiveRelease Candidate
transmittransmitRelease Candidate

Metric: system.network.connection.count

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.network.connection.countUpDownCounter{connection}The number of connections.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
network.connection.stateRelease CandidateRecommendedstringThe state of network connection [1]close_wait (see more)
network.interface.nameRelease CandidateRecommendedstringThe network interface name.lo; eth0
network.transportStableRecommendedstringOSI transport layer or inter-process communication method. [2]tcp; udp (see more)

[1] network.connection.state: Connection states are defined as part of the rfc9293

[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.

ValueDescriptionStability
close_waitclose_waitRelease Candidate
closedclosedRelease Candidate
closingclosingRelease Candidate
establishedestablishedRelease Candidate
fin_wait_1fin_wait_1Release Candidate
fin_wait_2fin_wait_2Release Candidate
last_acklast_ackRelease Candidate
listenlistenRelease Candidate
syn_receivedsyn_receivedRelease Candidate
syn_sentsyn_sentRelease Candidate
time_waittime_waitRelease Candidate

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.

ValueDescriptionStability
pipeNamed or anonymous pipe.Stable
quicQUICStable
tcpTCPStable
udpUDPStable
unixUNIX domain socketStable

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.

Metric: system.process.count

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.process.countUpDownCounter{process}Total number of processes in each state.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
process.stateRelease CandidateRecommendedstringThe process state, e.g., Linux Process State Codesrunning (see more)

process.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.

ValueDescriptionStability
defunctdefunctRelease Candidate
runningrunningRelease Candidate
sleepingsleepingRelease Candidate
stoppedstoppedRelease Candidate

Metric: system.process.created

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.process.createdCounter{process}Total number of processes created over uptime of the host.Developmenthost

Metric: system.process.limit

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.process.limitUpDownCounter{thread}The maximum number of concurrent processes/tasks allowed by the operating system. [1]Developmenthost

[1]: On Linux, this corresponds to /proc/sys/kernel/pid_max or /proc/sys/kernel/threads-max. A per-user process limit may also be retrieved via getrlimit(RLIMIT_NPROC). On BSD-like systems, this corresponds to sysctl kern.maxproc. This metric is unsupported on Windows systems.

system.memory.{os}. - OS Specific System Memory 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 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, Linux source code)

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.

Metric: system.memory.linux.available

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.memory.linux.availableUpDownCounterByAn estimate of how much memory is available for starting new applications, without causing swapping. [1]Developmenthost

[1]: This is equivalent to the system.memory.usage metric with state=available. 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. See also MemAvailable in /proc/meminfo.

Metric: system.memory.linux.hugepages.limit

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.memory.linux.hugepages.limitUpDownCounter{page}Total number of hugepages available.Developmenthost

Metric: system.memory.linux.hugepages.page_size

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.memory.linux.hugepages.page_sizeUpDownCounterBySystem hugepage size in bytes.Developmenthost

Metric: system.memory.linux.hugepages.reserved

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.memory.linux.hugepages.reservedUpDownCounter{page}Number of reserved hugepages. [1]Developmenthost

[1]: Hugepages for which a commitment to allocate has been made, but no allocation has yet been made. This is reported as a separate metric rather than a usage state because reserved pages are already counted in free pages. They represent a subset of free pages that cannot be used for non-reserved allocations.

Metric: system.memory.linux.hugepages.surplus

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.memory.linux.hugepages.surplusUpDownCounter{page}Number of surplus hugepages. [1]Developmenthost

[1]: Overcommitted hugepages beyond the persistent pool. This is reported as a separate metric rather than a usage state because surplus pages can be in either used or free state. Including them in usage would break the convention that usage states sum to the limit.

Metric: system.memory.linux.hugepages.usage

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.memory.linux.hugepages.usageUpDownCounter{page}Number of hugepages in use by state.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.memory.linux.hugepages.stateRelease CandidateRecommendedstringThe Linux HugePages memory statefree; used (see more)

system.memory.linux.hugepages.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.

ValueDescriptionStability
freefreeRelease Candidate
usedusedRelease Candidate

Metric: system.memory.linux.hugepages.utilization

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.memory.linux.hugepages.utilizationGauge1Percentage of hugepages in use by state.Developmenthost

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.memory.linux.hugepages.stateRelease CandidateRecommendedstringThe Linux HugePages memory statefree; used (see more)

system.memory.linux.hugepages.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.

ValueDescriptionStability
freefreeRelease Candidate
usedusedRelease Candidate

Metric: system.memory.linux.shared

This metric is opt-in.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.memory.linux.sharedUpDownCounterByShared memory used (mostly by tmpfs). [1]Developmenthost

[1]: Equivalent of shared from free command or Shmem from /proc/meminfo"

Metric: system.memory.linux.slab.usage

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
system.memory.linux.slab.usageUpDownCounterByReports the memory used by the Linux kernel for managing caches of frequently used objects. [1]Developmenthost

[1]: The sum over the reclaimable and unreclaimable state values in memory.linux.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 and Slab in /proc/meminfo.

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.memory.linux.slab.stateRelease CandidateRecommendedstringThe Linux Slab memory statereclaimable; unreclaimable (see more)

system.memory.linux.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.

ValueDescriptionStability
reclaimablereclaimableRelease Candidate
unreclaimableunreclaimableRelease Candidate