JVM 指标的语义约定
状态: 混合
本文档描述了 OpenTelemetry 中 JVM 指标的语义约定。
JVM 内存
状态: 稳定
描述: Java 虚拟机 (JVM) 指标,捕获在 jvm.memory.* 命名空间下
指标:jvm.memory.used
此指标为 推荐。此指标来自 MemoryPoolMXBean#getUsage()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.memory.used | UpDownCounter | 每个调用的最大内存使用量的分布。 | 已使用的内存量。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
jvm.memory.pool.name | 推荐 | 字符串 | 内存池的名称。[1] | G1 Old Gen;G1 Eden space;G1 Survivor Space | |
jvm.memory.type | 推荐 | 字符串 | 内存的类型。 | heap;non_heap |
[1] jvm.memory.pool.name:内存池名称通常通过 MemoryPoolMXBean#getName() 获取。
jvm.memory.type 具有以下已知值列表。如果适用其中一个,则必须使用相应的 值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
heap | 堆内存。 | |
non_heap | 非堆内存 |
指标:jvm.memory.committed
此指标为 推荐。此指标来自 MemoryPoolMXBean#getUsage()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.memory.committed | UpDownCounter | 每个调用的最大内存使用量的分布。 | 已提交的内存量。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
jvm.memory.pool.name | 推荐 | 字符串 | 内存池的名称。[1] | G1 Old Gen;G1 Eden space;G1 Survivor Space | |
jvm.memory.type | 推荐 | 字符串 | 内存的类型。 | heap;non_heap |
[1] jvm.memory.pool.name:内存池名称通常通过 MemoryPoolMXBean#getName() 获取。
jvm.memory.type 具有以下已知值列表。如果适用其中一个,则必须使用相应的 值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
heap | 堆内存。 | |
non_heap | 非堆内存 |
指标:jvm.memory.limit
此指标为 推荐。此指标来自 MemoryPoolMXBean#getUsage()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.memory.limit | UpDownCounter | 每个调用的最大内存使用量的分布。 | 可获得的最大内存量。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
jvm.memory.pool.name | 推荐 | 字符串 | 内存池的名称。[1] | G1 Old Gen;G1 Eden space;G1 Survivor Space | |
jvm.memory.type | 推荐 | 字符串 | 内存的类型。 | heap;non_heap |
[1] jvm.memory.pool.name:内存池名称通常通过 MemoryPoolMXBean#getName() 获取。
jvm.memory.type 具有以下已知值列表。如果适用其中一个,则必须使用相应的 值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
heap | 堆内存。 | |
non_heap | 非堆内存 |
指标:jvm.memory.used_after_last_gc
此指标为 推荐。此指标来自 MemoryPoolMXBean#getCollectionUsage()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.memory.used_after_last_gc | UpDownCounter | 每个调用的最大内存使用量的分布。 | 在最近一次垃圾回收事件后测得的已使用的内存量。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
jvm.memory.pool.name | 推荐 | 字符串 | 内存池的名称。[1] | G1 Old Gen;G1 Eden space;G1 Survivor Space | |
jvm.memory.type | 推荐 | 字符串 | 内存的类型。 | heap;non_heap |
[1] jvm.memory.pool.name:内存池名称通常通过 MemoryPoolMXBean#getName() 获取。
jvm.memory.type 具有以下已知值列表。如果适用其中一个,则必须使用相应的 值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
heap | 堆内存。 | |
non_heap | 非堆内存 |
JVM 垃圾回收
状态: 稳定
描述: Java 虚拟机 (JVM) 指标,捕获在 jvm.gc.* 命名空间下
指标:jvm.gc.duration
此指标为 推荐。此指标通过订阅 GarbageCollectionNotificationInfo 事件获得,这些事件由 GarbageCollectorMXBean 提供。持续时间值来自 GcInfo
此指标应使用 ExplicitBucketBoundaries [ 0.01, 0.1, 1, 10 ] 指定。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.gc.duration | Histogram | s | JVM 垃圾回收操作的持续时间。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
jvm.gc.action | 推荐 | 字符串 | 垃圾收集器操作的名称。[1] | end of minor GC;end of major GC | |
jvm.gc.name | 推荐 | 字符串 | 垃圾收集器的名称。[2] | G1 Young Generation;G1 Old Generation | |
jvm.gc.cause | 选择加入 | 字符串 | 垃圾收集器原因的名称。[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
此指标为 推荐。此指标通过组合以下内容获得:
ThreadMXBean#getAllThreadIds()ThreadMXBean#getThreadInfo()ThreadInfo#getThreadState()ThreadInfo#isDaemon()(需要 Java 9+)
请注意,这是平台线程(相对于虚拟线程)的数量。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.thread.count | UpDownCounter | {thread} | 正在执行的平台线程数。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
jvm.thread.daemon | 推荐 | 布尔值 | 线程是否为守护线程。 | ||
jvm.thread.state | 推荐 | 字符串 | 线程的状态。 | runnable;blocked |
jvm.thread.state 具有以下已知值列表。如果适用其中一个,则必须使用相应的 值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
blocked | 正在等待监视器锁而阻塞的线程处于此状态。 | |
new | 尚未启动的线程处于此状态。 | |
runnable | 在 Java 虚拟机中执行的线程处于此状态。 | |
terminated | 已退出的线程处于此状态。 | |
timed_waiting | 在指定等待时间内等待另一线程执行某个操作的线程处于此状态。 | |
waiting | 无限期等待另一线程执行特定操作的线程处于此状态。 |
JVM 类
状态: 稳定
描述: Java 虚拟机 (JVM) 指标,捕获在 jvm.class.* 命名空间下
指标:jvm.class.loaded
此指标为 推荐。此指标来自 ClassLoadingMXBean#getTotalLoadedClassCount()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.class.loaded | Counter | {class} | 自 JVM 启动以来加载的类数。 |
指标:jvm.class.unloaded
此指标为 推荐。此指标来自 ClassLoadingMXBean#getUnloadedClassCount()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.class.unloaded | Counter | {class} | 自 JVM 启动以来卸载的类数。 |
指标:jvm.class.count
此指标为 推荐。此指标来自 ClassLoadingMXBean#getLoadedClassCount()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.class.count | UpDownCounter | {class} | 当前加载的类数。 |
JVM CPU
状态: 稳定
描述: Java 虚拟机 (JVM) 指标,捕获在 jvm.cpu.* 命名空间下
指标:jvm.cpu.time
此指标是推荐的。
此指标来自 HotSpot 上的 com.sun.management.OperatingSystemMXBean#getProcessCpuTime() 和 OpenJ9 上的 com.ibm.lang.management.OperatingSystemMXBean#getProcessCpuTime()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.cpu.time | Counter | s | JVM 报告的进程使用的 CPU 时间。 |
指标:jvm.cpu.count
此指标为 推荐。此指标来自 Runtime#availableProcessors()。请注意,这始终是一个整数值(即不表示小数或毫核)。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.cpu.count | UpDownCounter | {cpu} | Java 虚拟机可用的处理器数量。 |
指标:jvm.cpu.recent_utilization
此指标为 推荐。此指标来自 HotSpot 上的 com.sun.management.OperatingSystemMXBean#getProcessCpuLoad() 和 OpenJ9 上的 com.ibm.lang.management.OperatingSystemMXBean#getProcessCpuLoad()。请注意,JVM 未定义“近期”的含义。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.cpu.recent_utilization | Gauge | 1 | JVM 报告的进程的近期 CPU 利用率。[1] |
[1]:值范围为 [0.0, 1.0]。此利用率不定义为自上次测量以来的特定时间间隔(与 system.cpu.utilization 不同)。参考。
开发中
状态: 开发中
描述:开发中的 Java 虚拟机 (JVM) 指标,捕获在 jvm. 下
指标:jvm.memory.init
此指标为 推荐。此指标来自 MemoryPoolMXBean#getUsage()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.memory.init | UpDownCounter | 每个调用的最大内存使用量的分布。 | 请求的初始内存量。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
jvm.memory.pool.name | 推荐 | 字符串 | 内存池的名称。[1] | G1 Old Gen;G1 Eden space;G1 Survivor Space | |
jvm.memory.type | 推荐 | 字符串 | 内存的类型。 | heap;non_heap |
[1] jvm.memory.pool.name:内存池名称通常通过 MemoryPoolMXBean#getName() 获取。
jvm.memory.type 具有以下已知值列表。如果适用其中一个,则必须使用相应的 值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
heap | 堆内存。 | |
non_heap | 非堆内存 |
指标: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 Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.system.cpu.utilization | Gauge | 1 | JVM 报告的整个系统的近期 CPU 利用率。[1] |
[1]:值范围为 [0.0, 1.0]。此利用率不定义为自上次测量以来的特定时间间隔(与 system.cpu.utilization 不同)。参考。
指标:jvm.system.cpu.load_1m
此指标为 Opt-In。此指标来自 OperatingSystemMXBean#getSystemLoadAverage()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.system.cpu.load_1m | Gauge | {run_queue_item} | JVM 报告的过去一分钟内整个系统的平均 CPU 负载。[1] |
[1]:值范围为 [0, n],其中 n 是 CPU 核心数 - 如果值不可用,则为负数。此利用率不定义为自上次测量以来的特定时间间隔(与 system.cpu.utilization 不同)。参考。
指标:jvm.buffer.memory.used
此指标为 推荐。此指标来自 BufferPoolMXBean#getMemoryUsed()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.buffer.memory.used | UpDownCounter | 每个调用的最大内存使用量的分布。 | 使用的缓冲区内存量。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
jvm.buffer.pool.name | 推荐 | 字符串 | 缓冲区池的名称。[1] | mapped;direct |
[1] jvm.buffer.pool.name:缓冲区池名称通常通过 BufferPoolMXBean#getName() 获取。
指标:jvm.buffer.memory.limit
此指标为 推荐。此指标来自 BufferPoolMXBean#getTotalCapacity()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.buffer.memory.limit | UpDownCounter | 每个调用的最大内存使用量的分布。 | 缓冲区的总内存容量。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
jvm.buffer.pool.name | 推荐 | 字符串 | 缓冲区池的名称。[1] | mapped;direct |
[1] jvm.buffer.pool.name:缓冲区池名称通常通过 BufferPoolMXBean#getName() 获取。
指标:jvm.buffer.count
此指标为 推荐。此指标来自 BufferPoolMXBean#getCount()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.buffer.count | UpDownCounter | {buffer} | 池中的缓冲区数量。 |
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
jvm.buffer.pool.name | 推荐 | 字符串 | 缓冲区池的名称。[1] | mapped;direct |
[1] jvm.buffer.pool.name:缓冲区池名称通常通过 BufferPoolMXBean#getName() 获取。
指标:jvm.file_descriptor.count
此指标为 Opt-In。此指标来自 UnixOperatingSystemMXBean#getOpenFileDescriptorCount()。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
jvm.file_descriptor.count | UpDownCounter | {file_descriptor} | JVM 报告的已打开文件描述符的数量。 |