# JVM Runtime Telemetry

<!-- llms-txt-link: /llms.txt -->

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

## Data

- **JSON**: [/data/javaagent/instrumentations/runtime-telemetry/runtime-telemetry-7bf020b26be1.json](/data/javaagent/instrumentations/runtime-telemetry/runtime-telemetry-7bf020b26be1.json)
- **Explore**: [/java-agent/instrumentation/runtime-telemetry](/java-agent/instrumentation/runtime-telemetry)
