系统指标的语义约定

状态: 开发中

本文档描述了 OpenTelemetry 中常见系统级指标的仪器和属性。在创建规格中未明确定义的仪器时,请考虑 通用指标语义约定

system.* 命名空间应仅用于报告主机的指标。system.* 命名空间仅应在指标从目标系统(物理服务器、虚拟机等)内部收集时使用。从特定于技术、定义明确的 API(例如 Kubelet 的 API 或容器运行时)收集的指标应在其各自的命名空间下报告(例如,k8s.*、container.*)。与主机相关的资源属性应在 host.* 命名空间下报告。

警告 现有使用的 本文档 v1.21.0(或更早版本)的仪器和收集器

  • 在系统语义约定被标记为稳定之前,不应采用文档中的任何破坏性更改。约定包括但不限于属性、指标名称和计量单位。
  • 一旦迁移计划最终确定,应引入一种控制机制,允许用户选择加入新的约定。

通用指标

指标: system.uptime

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.uptimeGauges系统运行的时间。[1]Developmenthost

[1]: 观测点 SHOULD 使用类型为 double 的 gauge,并以秒为单位测量运行时间,作为具有最高可用精度的浮点数。实际精度取决于观测点和操作系统。

处理器指标

描述:system.cpu 命名空间下捕获的系统级处理器指标。

指标: system.cpu.physical.count

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.cpu.physical.countUpDownCounter{cpu}报告硬件上的实际物理处理器核心数。[1]Developmenthost

[1]: 通过将插槽数乘以每个插槽的核心数来计算。

指标: system.cpu.logical.count

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.cpu.logical.countUpDownCounter{cpu}报告由操作系统管理多任务处理创建的逻辑(虚拟)处理器核心数。[1]Developmenthost

[1]: 通过将插槽数乘以每个插槽的核心数,然后乘以每个核心的线程数来计算。

指标: system.cpu.time

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.cpu.timeCounters每个逻辑 CPU 在每种模式下花费的秒数。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
cpu.modeDevelopment推荐字符串CPU 的模式 [1]user; system
cpu.logical_numberDevelopment选择加入int逻辑 CPU 编号 [0..n-1]1

[1] cpu.mode: 应使用以下状态:usersystemniceidleiowaitinterruptsteal


cpu.mode 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以(MAY)使用自定义值。

描述Stability
idle空闲Development
interrupt中断Development
iowaitIO 等待Development
kernel内核Development
niceNiceDevelopment
stealStealDevelopment
system系统Development
userUserDevelopment

指标: system.cpu.frequency

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.cpu.frequencyGauge赫兹逻辑 CPU 的运行频率(以赫兹为单位)。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
cpu.logical_numberDevelopment推荐int逻辑 CPU 编号 [0..n-1]1

指标: system.cpu.utilization

此指标为 opt-in

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.cpu.utilizationGauge1对于每个逻辑 CPU,利用率计算为在测量间隔内累积 CPU 时间(cpu.time)的变化除以经过的时间。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
cpu.modeDevelopment推荐字符串CPU 的模式 [1]user; system
cpu.logical_numberDevelopment选择加入int逻辑 CPU 编号 [0..n-1]1

[1] cpu.mode: 应使用以下模式:usersystemniceidleiowaitinterruptsteal


cpu.mode 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以(MAY)使用自定义值。

描述Stability
idle空闲Development
interrupt中断Development
iowaitIO 等待Development
kernel内核Development
niceNiceDevelopment
stealStealDevelopment
system系统Development
userUserDevelopment

内存指标

描述:system.memory 命名空间下捕获的系统级内存指标。这不包括 分页/交换内存

指标: system.memory.usage

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.memory.usageUpDownCounter每个调用的最大内存使用量的分布。按状态报告使用中的内存。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
system.memory.stateDevelopment推荐字符串内存状态free; cached

system.memory.state 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
buffersbuffersDevelopment
cachedcachedDevelopment
freefreeDevelopment
used实际使用的虚拟内存(以字节为单位)。[1]Development

[1]: 基于操作系统指标的计算。在 Linux 上,这对应于 /proc/meminfo 中的“MemTotal - MemAvailable”,它比基于 free、cached 和 buffers 的旧公式更准确地反映了应用程序实际使用的内存。如果 MemAvailable 不可用,则可以使用旧公式进行回退。

指标: system.memory.limit

此指标为 opt-in

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.memory.limitUpDownCounter每个调用的最大内存使用量的分布。系统中可用的总虚拟内存。Developmenthost

指标: system.memory.shared

此指标为 opt-in

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.memory.sharedUpDownCounter每个调用的最大内存使用量的分布。使用的共享内存(主要由 tmpfs 使用)。[1]Developmenthost

[1]: 相当于 free 命令shared/proc/meminfoShmem

指标: system.memory.utilization

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.memory.utilizationGauge1已使用内存字节的百分比。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
system.memory.stateDevelopment推荐字符串内存状态free; cached

system.memory.state 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
buffersbuffersDevelopment
cachedcachedDevelopment
freefreeDevelopment
used实际使用的虚拟内存(以字节为单位)。[1]Development

[1]: 基于操作系统指标的计算。在 Linux 上,这对应于 /proc/meminfo 中的“MemTotal - MemAvailable”,它比基于 free、cached 和 buffers 的旧公式更准确地反映了应用程序实际使用的内存。如果 MemAvailable 不可用,则可以使用旧公式进行回退。

分页/交换指标

描述:system.paging 命名空间下捕获的系统级分页/交换内存指标。

指标: system.paging.usage

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.paging.usageUpDownCounter每个调用的最大内存使用量的分布。Unix 交换或 Windows 页面文件使用情况。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
system.deviceDevelopment推荐字符串负责管理分页操作的设备的唯一标识符。/dev/dm-0
system.paging.stateDevelopment推荐字符串内存分页状态free

system.paging.state 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
freefreeDevelopment
usedusedDevelopment

指标: system.paging.utilization

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.paging.utilizationGauge1交换(Unix)或页面文件(Windows)的利用率。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
system.deviceDevelopment推荐字符串负责管理分页操作的设备的唯一标识符。/dev/dm-0
system.paging.stateDevelopment推荐字符串内存分页状态free

system.paging.state 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
freefreeDevelopment
usedusedDevelopment

指标: system.paging.faults

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.paging.faultsCounter{fault}页面错误的数量。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
system.paging.fault.typeDevelopment推荐字符串分页错误类型minor

system.paging.fault.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以(MAY)使用自定义值。

描述Stability
majormajorDevelopment
minorminorDevelopment

指标: system.paging.operations

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.paging.operationsCounter{operation}分页操作的数量。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
system.paging.directionDevelopment推荐字符串分页访问方向in
system.paging.fault.typeDevelopment推荐字符串分页错误类型minor

system.paging.direction 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
ininDevelopment
outoutDevelopment

system.paging.fault.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以(MAY)使用自定义值。

描述Stability
majormajorDevelopment
minorminorDevelopment

磁盘控制器指标

描述:system.disk 命名空间下捕获的系统级磁盘性能指标。

指标: system.disk.io

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.disk.ioCounter每个调用的最大内存使用量的分布。传输的磁盘字节数。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
disk.io.directionDevelopment推荐字符串磁盘 IO 操作方向。read
system.deviceDevelopment推荐字符串设备标识符(identifier)

disk.io.direction 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以(MAY)使用自定义值。

描述Stability
readreadDevelopment
writewriteDevelopment

指标: system.disk.operations

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.disk.operationsCounter{operation}磁盘操作计数。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
disk.io.directionDevelopment推荐字符串磁盘 IO 操作方向。read
system.deviceDevelopment推荐字符串设备标识符(identifier)

disk.io.direction 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以(MAY)使用自定义值。

描述Stability
readreadDevelopment
writewriteDevelopment

指标: system.disk.io_time

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.disk.io_timeCounters磁盘激活时间。[1]Developmenthost

[1]: I/O 路径中使用的实际经过时间(“挂钟时间”)(不计算并行运行的操作时间)。测量方式为:

Attributes

Stability需求级别Value Type描述Example Values
system.deviceDevelopment推荐字符串设备标识符(identifier)

指标: system.disk.operation_time

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.disk.operation_timeCounters每次操作花费的总时间。[1]Developmenthost

[1]: 由于它是每个请求花费时间的总和,因此并行发出的请求都会计入计数器增长。测量方式为:

  • Linux: procfs-diskstats 的第 7 和 11 个字段
  • Windows: “Avg. Disk sec/Read” 性能计数器乘以“Disk Reads/sec”性能计数器(写入操作类似)

Attributes

Stability需求级别Value Type描述Example Values
disk.io.directionDevelopment推荐字符串磁盘 IO 操作方向。read
system.deviceDevelopment推荐字符串设备标识符(identifier)

disk.io.direction 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以(MAY)使用自定义值。

描述Stability
readreadDevelopment
writewriteDevelopment

指标: system.disk.merged

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.disk.mergedCounter{operation}合并为单个物理磁盘访问操作的磁盘读/写次数。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
disk.io.directionDevelopment推荐字符串磁盘 IO 操作方向。read
system.deviceDevelopment推荐字符串设备标识符(identifier)

disk.io.direction 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以(MAY)使用自定义值。

描述Stability
readreadDevelopment
writewriteDevelopment

指标: system.disk.limit

此指标为 opt-in

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.disk.limitUpDownCounter每个调用的最大内存使用量的分布。磁盘的总存储容量。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
system.deviceDevelopment推荐字符串设备标识符(identifier)

文件系统指标

描述:system.filesystem 命名空间下捕获的系统级文件系统指标。

指标: system.filesystem.usage

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.filesystem.usageUpDownCounter每个调用的最大内存使用量的分布。报告文件系统在不同状态下的空间使用情况。[1]Developmenthost

[1]: 所有 system.filesystem.usage 值在不同 system.filesystem.state 属性上的总和应等于文件系统的总存储容量,即 system.filesystem.limit

Attributes

Stability需求级别Value Type描述Example Values
system.deviceDevelopment推荐字符串文件系统所在的设备标识符。/dev/sda; \network-drive
system.filesystem.modeDevelopment推荐字符串文件系统模式rw, ro
system.filesystem.mountpointDevelopment推荐字符串文件系统挂载路径/mnt/data
system.filesystem.stateDevelopment推荐字符串文件系统状态used
system.filesystem.typeDevelopment推荐字符串文件系统类型ext4

system.filesystem.state 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
freefreeDevelopment
reservedreservedDevelopment
usedusedDevelopment

system.filesystem.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
exfatexfatDevelopment
ext4ext4Development
fat32fat32Development
hfsplushfsplusDevelopment
ntfsntfsDevelopment
refsrefsDevelopment

指标: system.filesystem.utilization

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.filesystem.utilizationGauge1已使用的文件系统字节的比例。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
system.deviceDevelopment推荐字符串文件系统所在的设备标识符。/dev/sda; \network-drive
system.filesystem.modeDevelopment推荐字符串文件系统模式rw, ro
system.filesystem.mountpointDevelopment推荐字符串文件系统挂载路径/mnt/data
system.filesystem.stateDevelopment推荐字符串文件系统状态used
system.filesystem.typeDevelopment推荐字符串文件系统类型ext4

system.filesystem.state 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
freefreeDevelopment
reservedreservedDevelopment
usedusedDevelopment

system.filesystem.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
exfatexfatDevelopment
ext4ext4Development
fat32fat32Development
hfsplushfsplusDevelopment
ntfsntfsDevelopment
refsrefsDevelopment

指标: system.filesystem.limit

此指标为 opt-in

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.filesystem.limitUpDownCounter每个调用的最大内存使用量的分布。文件系统的总存储容量。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
system.deviceDevelopment推荐字符串文件系统所在的设备标识符。/dev/sda; \network-drive
system.filesystem.modeDevelopment推荐字符串文件系统模式rw, ro
system.filesystem.mountpointDevelopment推荐字符串文件系统挂载路径/mnt/data
system.filesystem.typeDevelopment推荐字符串文件系统类型ext4

system.filesystem.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
exfatexfatDevelopment
ext4ext4Development
fat32fat32Development
hfsplushfsplusDevelopment
ntfsntfsDevelopment
refsrefsDevelopment

网络指标

描述:system.network 命名空间下捕获的系统级网络指标。

指标: system.network.packet.dropped

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.network.packet.droppedCounter{packet}即使没有错误,被丢弃或丢弃的数据包数量。[1]Developmenthost

[1]: 测量方式为:

Attributes

Stability需求级别Value Type描述Example Values
network.interface.nameDevelopment推荐字符串网络接口名称。lo; eth0
network.io.directionDevelopment推荐字符串网络 IO 操作方向。transmit

network.io.direction 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。

描述Stability
receivereceiveDevelopment
transmittransmitDevelopment

指标: system.network.packet.count

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.network.packet.countCounter{packet}传输的数据包数量。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
network.io.directionDevelopment推荐字符串网络 IO 操作方向。transmit
system.deviceDevelopment推荐字符串设备标识符(identifier)

network.io.direction 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。

描述Stability
receivereceiveDevelopment
transmittransmitDevelopment

指标: system.network.errors

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.network.errorsCounter{error}检测到的网络错误数量。[1]Developmenthost

[1]: 测量方式为:

Attributes

Stability需求级别Value Type描述Example Values
network.interface.nameDevelopment推荐字符串网络接口名称。lo; eth0
network.io.directionDevelopment推荐字符串网络 IO 操作方向。transmit

network.io.direction 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。

描述Stability
receivereceiveDevelopment
transmittransmitDevelopment

指标: system.network.io

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.network.ioCounter每个调用的最大内存使用量的分布。传输和接收的字节数。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
network.interface.nameDevelopment推荐字符串网络接口名称。lo; eth0
network.io.directionDevelopment推荐字符串网络 IO 操作方向。transmit

network.io.direction 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。

描述Stability
receivereceiveDevelopment
transmittransmitDevelopment

指标: system.network.connection.count

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.network.connection.countUpDownCounter{connection}连接数。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
network.connection.stateDevelopment推荐字符串网络连接的状态 [1]close_wait
network.interface.nameDevelopment推荐字符串网络接口名称。lo; eth0
network.transportStable推荐字符串OSI 传输层进程间通信方法。[2]tcpudp

[1] network.connection.state: 连接状态根据 rfc9293 定义。

[2] network.transport: 值应小写标准化。

在设置端口号时,应始终考虑设置传输协议,因为没有传输协议的端口号是模糊的。例如,不同的进程可能正在监听 TCP 端口 12345 和 UDP 端口 12345。


network.connection.state 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
close_waitclose_waitDevelopment
closedclosedDevelopment
closingclosingDevelopment
establishedestablishedDevelopment
fin_wait_1fin_wait_1Development
fin_wait_2fin_wait_2Development
last_acklast_ackDevelopment
listenlistenDevelopment
syn_receivedsyn_receivedDevelopment
syn_sentsyn_sentDevelopment
time_waittime_waitDevelopment

network.transport 具有以下已知值列表。如果其中一个适用,则必须使用相应的_值_;否则,可以_使用_自定义值。

描述Stability
pipe命名或匿名管道。Stable
quicQUICStable
tcpTCPStable
udpUDPStable
unixUnix 域套接字Stable

聚合系统进程指标

描述:system.process 命名空间下捕获的系统级聚合进程指标。对于单个进程级别的指标,请参阅 进程指标

指标: system.process.count

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.process.countUpDownCounter{process}处于每个状态的进程总数。Developmenthost

Attributes

Stability需求级别Value Type描述Example Values
process.stateDevelopment推荐字符串进程状态,例如 Linux 进程状态代码running

process.state 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
defunctdefunctDevelopment
runningrunningDevelopment
sleepingsleepingDevelopment
stoppedstoppedDevelopment

指标: system.process.created

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.process.createdCounter{process}主机运行期间创建的进程总数。Developmenthost

system.{os}. - OS 特定系统指标

具有不同且在多个操作系统上具有冲突含义的系统级指标的仪器名称应以 system.{os}. 作为前缀,并遵循上面列出的不同实体的层次结构,如 CPU、内存和网络。

例如,UNIX 负载平均值在给定时间间隔内并不标准化,并且尽管处于相似的负载下,其在不同类 Unix 系统上的值也可能不同。

在不深入探讨存在的所有类 Unix 操作系统的细微差别的情况下,负载平均值或多或少代表了正在运行(使用 CPU)或可运行(等待 CPU)状态的进程的平均数量。存在一个显着的例外:Linux 包括处于不可中断睡眠状态的进程,通常在等待某些 I/O 活动完成。这可能会显著增加 Linux 系统的负载平均值。

(引用来源, Linux 源代码)

Linux 上 1 分钟的负载平均值的仪器可以命名为 system.linux.cpu.load_1m,重用上面提出的 cpu 名称,并具有 {os} 前缀以在不同操作系统之间区分此指标。

指标: system.linux.memory.available

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.linux.memory.availableUpDownCounter每个调用的最大内存使用量的分布。可用于启动新应用程序而不会导致交换的内存量的估计值。[1]Developmenthost

[1]: 这是 system.memory.usage 指标(状态为 free)的替代方案。Linux 从 3.14 开始导出“可用”内存。它以“free”内存为基准,然后考虑内核特定的值。这应该比仅“free”内存更准确。有关参考,请参阅 此处的计算。另请参阅 /proc/meminfo 中的 MemAvailable

指标: system.linux.memory.slab.usage

此指标是推荐的。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
system.linux.memory.slab.usageUpDownCounter每个调用的最大内存使用量的分布。报告 Linux 内核用于管理常用对象缓存的内存。[1]Developmenthost

[1]: linux.memory.slab.usagereclaimableunreclaimable 状态值的总和应等于系统中可用的总 Slab 内存。请注意,总 Slab 内存不是恒定的,并且可能会随时间变化。另请参阅 Slab 分配器/proc/meminfo 中的 Slab

Attributes

Stability需求级别Value Type描述Example Values
linux.memory.slab.stateDevelopment推荐字符串Linux Slab 内存状态reclaimable; unreclaimable

linux.memory.slab.state 具有以下已知值列表。如果其中一个适用,则必须使用相应的値;否则,可以使用自定义値。

描述Stability
reclaimablereclaimableDevelopment
unreclaimableunreclaimableDevelopment