JVM 指标的语义约定

状态: 混合

本文档描述了 OpenTelemetry 中 JVM 指标的语义约定。

JVM 内存

状态: 稳定

描述: Java 虚拟机 (JVM) 指标,捕获在 jvm.memory.* 命名空间下

指标:jvm.memory.used

此指标为 推荐。此指标来自 MemoryPoolMXBean#getUsage()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.memory.usedUpDownCounter每个调用的最大内存使用量的分布。已使用的内存量。Stable

Attributes

Stability需求级别Value Type描述Example Values
jvm.memory.pool.nameStable推荐字符串内存池的名称。[1]G1 Old GenG1 Eden spaceG1 Survivor Space
jvm.memory.typeStable推荐字符串内存的类型。heapnon_heap

[1] jvm.memory.pool.name内存池名称通常通过 MemoryPoolMXBean#getName() 获取。


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

描述Stability
heap堆内存。Stable
non_heap非堆内存Stable

指标:jvm.memory.committed

此指标为 推荐。此指标来自 MemoryPoolMXBean#getUsage()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.memory.committedUpDownCounter每个调用的最大内存使用量的分布。已提交的内存量。Stable

Attributes

Stability需求级别Value Type描述Example Values
jvm.memory.pool.nameStable推荐字符串内存池的名称。[1]G1 Old GenG1 Eden spaceG1 Survivor Space
jvm.memory.typeStable推荐字符串内存的类型。heapnon_heap

[1] jvm.memory.pool.name内存池名称通常通过 MemoryPoolMXBean#getName() 获取。


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

描述Stability
heap堆内存。Stable
non_heap非堆内存Stable

指标:jvm.memory.limit

此指标为 推荐。此指标来自 MemoryPoolMXBean#getUsage()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.memory.limitUpDownCounter每个调用的最大内存使用量的分布。可获得的最大内存量。Stable

Attributes

Stability需求级别Value Type描述Example Values
jvm.memory.pool.nameStable推荐字符串内存池的名称。[1]G1 Old GenG1 Eden spaceG1 Survivor Space
jvm.memory.typeStable推荐字符串内存的类型。heapnon_heap

[1] jvm.memory.pool.name内存池名称通常通过 MemoryPoolMXBean#getName() 获取。


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

描述Stability
heap堆内存。Stable
non_heap非堆内存Stable

指标:jvm.memory.used_after_last_gc

此指标为 推荐。此指标来自 MemoryPoolMXBean#getCollectionUsage()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.memory.used_after_last_gcUpDownCounter每个调用的最大内存使用量的分布。在最近一次垃圾回收事件后测得的已使用的内存量。Stable

Attributes

Stability需求级别Value Type描述Example Values
jvm.memory.pool.nameStable推荐字符串内存池的名称。[1]G1 Old GenG1 Eden spaceG1 Survivor Space
jvm.memory.typeStable推荐字符串内存的类型。heapnon_heap

[1] jvm.memory.pool.name内存池名称通常通过 MemoryPoolMXBean#getName() 获取。


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

描述Stability
heap堆内存。Stable
non_heap非堆内存Stable

JVM 垃圾回收

状态: 稳定

描述: Java 虚拟机 (JVM) 指标,捕获在 jvm.gc.* 命名空间下

指标:jvm.gc.duration

此指标为 推荐。此指标通过订阅 GarbageCollectionNotificationInfo 事件获得,这些事件由 GarbageCollectorMXBean 提供。持续时间值来自 GcInfo

此指标应使用 ExplicitBucketBoundaries [ 0.01, 0.1, 1, 10 ] 指定。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.gc.durationHistogramsJVM 垃圾回收操作的持续时间。Stable

Attributes

Stability需求级别Value Type描述Example Values
jvm.gc.actionStable推荐字符串垃圾收集器操作的名称。[1]end of minor GCend of major GC
jvm.gc.nameStable推荐字符串垃圾收集器的名称。[2]G1 Young GenerationG1 Old Generation
jvm.gc.causeDevelopment选择加入字符串垃圾收集器原因的名称。[3]System.gc()Allocation Failure

[1] jvm.gc.action垃圾收集器操作通常通过 GarbageCollectionNotificationInfo#getGcAction() 获取。

[2] jvm.gc.name垃圾收集器名称通常通过 GarbageCollectionNotificationInfo#getGcName() 获取。

[3] jvm.gc.cause垃圾收集器原因通常通过 GarbageCollectionNotificationInfo#getGcCause() 获取。

JVM 线程

状态: 稳定

描述: Java 虚拟机 (JVM) 指标,捕获在 jvm.thread.* 命名空间下

指标:jvm.thread.count

此指标为 推荐。此指标通过组合以下内容获得:

请注意,这是平台线程(相对于虚拟线程)的数量。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.thread.countUpDownCounter{thread}正在执行的平台线程数。Stable

Attributes

Stability需求级别Value Type描述Example Values
jvm.thread.daemonStable推荐布尔值线程是否为守护线程。
jvm.thread.stateStable推荐字符串线程的状态。runnableblocked

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

描述Stability
blocked正在等待监视器锁而阻塞的线程处于此状态。Stable
new尚未启动的线程处于此状态。Stable
runnable在 Java 虚拟机中执行的线程处于此状态。Stable
terminated已退出的线程处于此状态。Stable
timed_waiting在指定等待时间内等待另一线程执行某个操作的线程处于此状态。Stable
waiting无限期等待另一线程执行特定操作的线程处于此状态。Stable

JVM 类

状态: 稳定

描述: Java 虚拟机 (JVM) 指标,捕获在 jvm.class.* 命名空间下

指标:jvm.class.loaded

此指标为 推荐。此指标来自 ClassLoadingMXBean#getTotalLoadedClassCount()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.class.loadedCounter{class}自 JVM 启动以来加载的类数。Stable

指标:jvm.class.unloaded

此指标为 推荐。此指标来自 ClassLoadingMXBean#getUnloadedClassCount()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.class.unloadedCounter{class}自 JVM 启动以来卸载的类数。Stable

指标:jvm.class.count

此指标为 推荐。此指标来自 ClassLoadingMXBean#getLoadedClassCount()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.class.countUpDownCounter{class}当前加载的类数。Stable

JVM CPU

状态: 稳定

描述: Java 虚拟机 (JVM) 指标,捕获在 jvm.cpu.* 命名空间下

指标:jvm.cpu.time

此指标是推荐的。

此指标来自 HotSpot 上的 com.sun.management.OperatingSystemMXBean#getProcessCpuTime() 和 OpenJ9 上的 com.ibm.lang.management.OperatingSystemMXBean#getProcessCpuTime()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.cpu.timeCountersJVM 报告的进程使用的 CPU 时间。Stable

指标:jvm.cpu.count

此指标为 推荐。此指标来自 Runtime#availableProcessors()。请注意,这始终是一个整数值(即不表示小数或毫核)。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.cpu.countUpDownCounter{cpu}Java 虚拟机可用的处理器数量。Stable

指标:jvm.cpu.recent_utilization

此指标为 推荐。此指标来自 HotSpot 上的 com.sun.management.OperatingSystemMXBean#getProcessCpuLoad() 和 OpenJ9 上的 com.ibm.lang.management.OperatingSystemMXBean#getProcessCpuLoad()。请注意,JVM 未定义“近期”的含义。

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.cpu.recent_utilizationGauge1JVM 报告的进程的近期 CPU 利用率。[1]Stable

[1]:值范围为 [0.0, 1.0]。此利用率不定义为自上次测量以来的特定时间间隔(与 system.cpu.utilization 不同)。参考

开发中

状态: 开发中

描述:开发中的 Java 虚拟机 (JVM) 指标,捕获在 jvm.

指标:jvm.memory.init

此指标为 推荐。此指标来自 MemoryPoolMXBean#getUsage()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.memory.initUpDownCounter每个调用的最大内存使用量的分布。请求的初始内存量。Development

Attributes

Stability需求级别Value Type描述Example Values
jvm.memory.pool.nameStable推荐字符串内存池的名称。[1]G1 Old GenG1 Eden spaceG1 Survivor Space
jvm.memory.typeStable推荐字符串内存的类型。heapnon_heap

[1] jvm.memory.pool.name内存池名称通常通过 MemoryPoolMXBean#getName() 获取。


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

描述Stability
heap堆内存。Stable
non_heap非堆内存Stable

指标:jvm.system.cpu.utilization

此指标为 Opt-In。此指标来自 Java 版本 8..13 上的 com.sun.management.OperatingSystemMXBean#getSystemCpuLoad(),Java 版本 14+ 上的 com.sun.management.OperatingSystemMXBean#getCpuLoad(),以及 OpenJ9 上的 com.ibm.lang.management.OperatingSystemMXBean#getSystemCpuLoad()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.system.cpu.utilizationGauge1JVM 报告的整个系统的近期 CPU 利用率。[1]Development

[1]:值范围为 [0.0, 1.0]。此利用率不定义为自上次测量以来的特定时间间隔(与 system.cpu.utilization 不同)。参考

指标:jvm.system.cpu.load_1m

此指标为 Opt-In。此指标来自 OperatingSystemMXBean#getSystemLoadAverage()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.system.cpu.load_1mGauge{run_queue_item}JVM 报告的过去一分钟内整个系统的平均 CPU 负载。[1]Development

[1]:值范围为 [0, n],其中 n 是 CPU 核心数 - 如果值不可用,则为负数。此利用率不定义为自上次测量以来的特定时间间隔(与 system.cpu.utilization 不同)。参考

指标:jvm.buffer.memory.used

此指标为 推荐。此指标来自 BufferPoolMXBean#getMemoryUsed()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.buffer.memory.usedUpDownCounter每个调用的最大内存使用量的分布。使用的缓冲区内存量。Development

Attributes

Stability需求级别Value Type描述Example Values
jvm.buffer.pool.nameDevelopment推荐字符串缓冲区池的名称。[1]mappeddirect

[1] jvm.buffer.pool.name缓冲区池名称通常通过 BufferPoolMXBean#getName() 获取。

指标:jvm.buffer.memory.limit

此指标为 推荐。此指标来自 BufferPoolMXBean#getTotalCapacity()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.buffer.memory.limitUpDownCounter每个调用的最大内存使用量的分布。缓冲区的总内存容量。Development

Attributes

Stability需求级别Value Type描述Example Values
jvm.buffer.pool.nameDevelopment推荐字符串缓冲区池的名称。[1]mappeddirect

[1] jvm.buffer.pool.name缓冲区池名称通常通过 BufferPoolMXBean#getName() 获取。

指标:jvm.buffer.count

此指标为 推荐。此指标来自 BufferPoolMXBean#getCount()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.buffer.countUpDownCounter{buffer}池中的缓冲区数量。Development

Attributes

Stability需求级别Value Type描述Example Values
jvm.buffer.pool.nameDevelopment推荐字符串缓冲区池的名称。[1]mappeddirect

[1] jvm.buffer.pool.name缓冲区池名称通常通过 BufferPoolMXBean#getName() 获取。

指标:jvm.file_descriptor.count

此指标为 Opt-In。此指标来自 UnixOperatingSystemMXBean#getOpenFileDescriptorCount()

名称Instrument TypeUnit (UCUM)描述Stability实体关联
jvm.file_descriptor.countUpDownCounter{file_descriptor}JVM 报告的已打开文件描述符的数量。Development