JVM Runtime Telemetry
OpenTelemetry Java agent instrumentation
This instrumentation enables JVM runtime metrics using JMX (Java 8+) and JFR (Java 17+) to monitor classes, CPU, garbage collection, memory, and threads.
- Name:
runtime-telemetry - Scope:
io.opentelemetry.runtime-telemetry - Library: https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/runtime-telemetry
Telemetry
- Metrics:
jvm.buffer.count,jvm.buffer.memory.limit,jvm.buffer.memory.used,jvm.class.count,jvm.class.loaded,jvm.class.unloaded,jvm.cpu.count,jvm.cpu.longlock,jvm.cpu.recent_utilization,jvm.cpu.time,jvm.gc.duration,jvm.memory.committed,jvm.memory.init,jvm.memory.limit,jvm.memory.used,jvm.memory.used_after_last_gc,jvm.system.cpu.utilization,jvm.thread.count,jvm.thread.virtual.pinned,jvm.file_descriptor.count,jvm.file_descriptor.limit,jvm.system.cpu.load_1m
Configuration
| Option | Type | Default | Description |
|---|---|---|---|
otel.instrumentation.runtime-telemetry.emit-experimental-jfr-metrics | boolean | false | Enables the capture of experimental JFR-based JVM runtime metrics on Java 17+. |
otel.instrumentation.runtime-telemetry.emit-experimental-metrics | boolean | false | Enables the capture of experimental JMX-based JVM runtime metrics. |
otel.instrumentation.runtime-telemetry.experimental.package-emitter.enabled | boolean | false | Enables creating events for JAR libraries used by the application. |
otel.instrumentation.runtime-telemetry.experimental.package-emitter.jars-per-second | int | 10 | The number of JAR files processed per second by the package emitter. |
otel.instrumentation.runtime-telemetry.experimental.prefer-jfr | boolean | false | Prefer JFR over JMX for metrics available from both sources, on Java 17+. When enabled, overlapping metrics are collected via JFR and the corresponding JMX metrics are suppressed. |