Semantic conventions for OS process metrics

May 28, 2026 ยท View on GitHub

Status: Development

This document describes instruments and attributes for common OS process level metrics in OpenTelemetry. Also consider the general metric semantic conventions when creating instruments not explicitly defined in this document. OS process metrics are not related to the runtime environment of the program, and should take measurements from the operating system. For runtime environment metrics see semantic conventions for runtime environment metrics.

Important

Existing instrumentations and collector that are using v1.21.0 of this document (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.

Process metrics

Metric: process.cpu.time

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
process.cpu.timeCountersTotal CPU seconds broken down by different CPU modes.Developmentprocess

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
cpu.modeRelease CandidateRequiredstringThe CPU mode for this data point. [1]user; system

[1] cpu.mode: The following values for cpu.mode SHOULD be used: user, system, wait Other modes SHOULD NOT be used unless a particular platform mandates a unique set of modes.


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: process.cpu.utilization

This metric is opt-in.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
process.cpu.utilizationGauge1Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process.Developmentprocess

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
cpu.modeRelease CandidateRequiredstringThe CPU mode for this data point. [1]user; system

[1] cpu.mode: The following values for cpu.mode SHOULD be used: user, system, wait Other modes SHOULD NOT be used unless a particular platform mandates a unique set of modes.


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: process.memory.usage

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
process.memory.usageUpDownCounterByThe amount of physical memory in use.Developmentprocess

Metric: process.memory.virtual

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
process.memory.virtualUpDownCounterByThe amount of committed virtual memory.Developmentprocess

Metric: process.disk.io

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
process.disk.ioCounterByDisk bytes transferred.Developmentprocess

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
disk.io.directionDevelopmentRequiredstringThe disk IO operation direction.read

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
readreadDevelopment
writewriteDevelopment

Metric: process.network.io

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
process.network.ioCounterByNetwork bytes transferred.Developmentprocess

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
network.io.directionDevelopmentRequiredstringThe network IO operation direction.transmit

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
receivereceiveDevelopment
transmittransmitDevelopment

Metric: process.thread.count

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
process.thread.countUpDownCounter{thread}Process threads count.Developmentprocess

Metric: process.unix.file_descriptor.count

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
process.unix.file_descriptor.countUpDownCounter{file_descriptor}Number of unix file descriptors in use by the process.Developmentprocess

Metric: process.windows.handle.count

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
process.windows.handle.countUpDownCounter{handle}Number of handles held by the process.Developmentprocess

Metric: process.context_switches

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
process.context_switchesCounter{context_switch}Number of times the process has been context switched.Developmentprocess

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
process.context_switch.typeRelease CandidateRequiredstringSpecifies whether the context switches for this data point were voluntary or involuntary.voluntary; involuntary

process.context_switch.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
involuntaryinvoluntaryRelease Candidate
voluntaryvoluntaryRelease Candidate

Metric: process.paging.faults

This metric is recommended.

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
process.paging.faultsCounter{fault}Number of page faults the process has made.Developmentprocess

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
system.paging.fault.typeDevelopmentRecommendedstringThe type of paging fault. Value MUST be either major or minor. If the metric is reported without this attribute, it should be the sum of major and minor page faults.minor

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
majormajorDevelopment
minorminorDevelopment

Metric: process.uptime

This metric is recommended.

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

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