|
1 年之前 | |
---|---|---|
.. | ||
src | 1 年之前 | |
README.md | 1 年之前 | |
build.gradle.kts | 1 年之前 |
This module provides JVM runtime metrics as documented in the semantic conventions.
Replace OPENTELEMETRY_VERSION
with the latest
release.
For Maven, add to your pom.xml
dependencies:
<dependencies>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-runtime-telemetry-java8</artifactId>
<version>OPENTELEMETRY_VERSION</version>
</dependency>
</dependencies>
For Gradle, add to your dependencies:
runtimeOnly("io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8:OPENTELEMETRY_VERSION")
Register observers for the desired runtime metrics:
OpenTelemetry openTelemetry = // OpenTelemetry instance configured elsewhere
Classes.registerObservers(openTelemetry);
Cpu.registerObservers(openTelemetry);
MemoryPools.registerObservers(openTelemetry);
Threads.registerObservers(openTelemetry);
GarbageCollector.registerObservers(openTelemetry);
If you want to enable the preview of the stable JVM semantic conventions, you need to set either
the otel.semconv-stability.opt-in
system property or the OTEL_SEMCONV_STABILITY_OPT_IN
environment variable to one of the following values:
jvm
- this will make the runtime metrics emit only the new, stable conventions, and stop
emitting the old experimental conventions that the instrumentation emitted previously.jvm/dup
- emit both the old and the stable JVM conventions, allowing for a seamless transition.Note that the otel.semconv-stability.opt-in
setting is a comma-separated list, and you can specify
more than one value, e.g. -Dotel.semconv-stability.opt-in=http,jvm
.
The attributes reported on the memory metrics (process.runtime.jvm.memory.*
) and gc metrics (process.runtime.jvm.gc.*
) are dependent on the garbage collector used by the application, since each garbage collector organizes memory pools differently and has different strategies for reclaiming memory during garbage collection.
The following lists attributes reported for a variety of garbage collectors. Notice that attributes are not necessarily constant across *.init
, *.usage
, *.committed
, and *.limit
since not all memory pools report a limit.
process.runtime.jvm.memory.init
: {pool=Compressed Class Space,type=non_heap}, {pool=Par Eden Space,type=heap}, {pool=Tenured Gen,type=heap}, {pool=Par Survivor Space,type=heap}, {pool=Code Cache,type=non_heap}, {pool=Metaspace,type=non_heap}process.runtime.jvm.memory.usage
: {pool=Compressed Class Space,type=non_heap}, {pool=Par Eden Space,type=heap}, {pool=Tenured Gen,type=heap}, {pool=Par Survivor Space,type=heap}, {pool=Code Cache,type=non_heap}, {pool=Metaspace,type=non_heap}process.runtime.jvm.memory.committed
: {pool=Compressed Class Space,type=non_heap}, {pool=Par Eden Space,type=heap}, {pool=Tenured Gen,type=heap}, {pool=Par Survivor Space,type=heap}, {pool=Code Cache,type=non_heap}, {pool=Metaspace,type=non_heap}process.runtime.jvm.memory.limit
: {pool=Compressed Class Space,type=non_heap}, {pool=Par Eden Space,type=heap}, {pool=Tenured Gen,type=heap}, {pool=Par Survivor Space,type=heap}, {pool=Code Cache,type=non_heap}process.runtime.jvm.memory.usage_after_last_gc
: {pool=Par Eden Space,type=heap}, {pool=Tenured Gen,type=heap}, {pool=Par Survivor Space,type=heap}process.runtime.jvm.gc.duration
: {action=end of minor GC,gc=ParNew}, {action=end of major GC,gc=MarkSweepCompact}process.runtime.jvm.memory.init
: {pool=G1 Survivor Space,type=heap}, {pool=G1 Eden Space,type=heap}, {pool=CodeCache,type=non_heap}, {pool=G1 Old Gen,type=heap}, {pool=Compressed Class Space,type=non_heap}, {pool=Metaspace,type=non_heap}process.runtime.jvm.memory.usage
: {pool=G1 Survivor Space,type=heap}, {pool=G1 Eden Space,type=heap}, {pool=CodeCache,type=non_heap}, {pool=G1 Old Gen,type=heap}, {pool=Compressed Class Space,type=non_heap}, {pool=Metaspace,type=non_heap}process.runtime.jvm.memory.committed
: {pool=G1 Survivor Space,type=heap}, {pool=G1 Eden Space,type=heap}, {pool=CodeCache,type=non_heap}, {pool=G1 Old Gen,type=heap}, {pool=Compressed Class Space,type=non_heap}, {pool=Metaspace,type=non_heap}process.runtime.jvm.memory.limit
: {pool=CodeCache,type=non_heap}, {pool=G1 Old Gen,type=heap}, {pool=Compressed Class Space,type=non_heap}process.runtime.jvm.memory.usage_after_last_gc
: {pool=G1 Survivor Space,type=heap}, {pool=G1 Eden Space,type=heap}, {pool=G1 Old Gen,type=heap}process.runtime.jvm.gc.duration
: {action=end of minor GC,gc=G1 Young Generation}, {action=end of major GC,gc=G1 Old Generation}process.runtime.jvm.memory.init
: {pool=CodeCache,type=non_heap}, {pool=PS Survivor Space,type=heap}, {pool=PS Old Gen,type=heap}, {pool=PS Eden Space,type=heap}, {pool=Compressed Class Space,type=non_heap}, {pool=Metaspace,type=non_heap}process.runtime.jvm.memory.usage
: {pool=CodeCache,type=non_heap}, {pool=PS Survivor Space,type=heap}, {pool=PS Old Gen,type=heap}, {pool=PS Eden Space,type=heap}, {pool=Compressed Class Space,type=non_heap}, {pool=Metaspace,type=non_heap}process.runtime.jvm.memory.committed
: {pool=CodeCache,type=non_heap}, {pool=PS Survivor Space,type=heap}, {pool=PS Old Gen,type=heap}, {pool=PS Eden Space,type=heap}, {pool=Compressed Class Space,type=non_heap}, {pool=Metaspace,type=non_heap}process.runtime.jvm.memory.limit
: {pool=CodeCache,type=non_heap}, {pool=PS Survivor Space,type=heap}, {pool=PS Old Gen,type=heap}, {pool=PS Eden Space,type=heap}, {pool=Compressed Class Space,type=non_heap}process.runtime.jvm.memory.usage_after_last_gc
: {pool=PS Survivor Space,type=heap}, {pool=PS Old Gen,type=heap}, {pool=PS Eden Space,type=heap}process.runtime.jvm.gc.duration
: {action=end of major GC,gc=PS MarkSweep}, {action=end of minor GC,gc=PS Scavenge}process.runtime.jvm.memory.init
: {pool=CodeCache,type=non_heap}, {pool=Tenured Gen,type=heap}, {pool=Eden Space,type=heap}, {pool=Survivor Space,type=heap}, {pool=Compressed Class Space,type=non_heap}, {pool=Metaspace,type=non_heap}process.runtime.jvm.memory.usage
: {pool=CodeCache,type=non_heap}, {pool=Tenured Gen,type=heap}, {pool=Eden Space,type=heap}, {pool=Survivor Space,type=heap}, {pool=Compressed Class Space,type=non_heap}, {pool=Metaspace,type=non_heap}process.runtime.jvm.memory.committed
: {pool=CodeCache,type=non_heap}, {pool=Tenured Gen,type=heap}, {pool=Eden Space,type=heap}, {pool=Survivor Space,type=heap}, {pool=Compressed Class Space,type=non_heap}, {pool=Metaspace,type=non_heap}process.runtime.jvm.memory.limit
: {pool=CodeCache,type=non_heap}, {pool=Tenured Gen,type=heap}, {pool=Eden Space,type=heap}, {pool=Survivor Space,type=heap}, {pool=Compressed Class Space,type=non_heap}process.runtime.jvm.memory.usage_after_last_gc
: {pool=Tenured Gen,type=heap}, {pool=Eden Space,type=heap}, {pool=Survivor Space,type=heap}process.runtime.jvm.gc.duration
: {action=end of minor GC,gc=Copy}, {action=end of major GC,gc=MarkSweepCompact}process.runtime.jvm.memory.init
: {pool=Metaspace,type=non_heap}, {pool=CodeCache,type=non_heap}, {pool=Shenandoah,type=heap}, {pool=Compressed Class Space,type=non_heap}process.runtime.jvm.memory.usage
: {pool=Metaspace,type=non_heap}, {pool=CodeCache,type=non_heap}, {pool=Shenandoah,type=heap}, {pool=Compressed Class Space,type=non_heap}process.runtime.jvm.memory.committed
: {pool=Metaspace,type=non_heap}, {pool=CodeCache,type=non_heap}, {pool=Shenandoah,type=heap}, {pool=Compressed Class Space,type=non_heap}process.runtime.jvm.memory.limit
: {pool=CodeCache,type=non_heap}, {pool=Shenandoah,type=heap}, {pool=Compressed Class Space,type=non_heap}process.runtime.jvm.memory.usage_after_last_gc
: {pool=Shenandoah,type=heap}process.runtime.jvm.gc.duration
: {action=end of GC cycle,gc=Shenandoah Cycles}, {action=end of GC pause,gc=Shenandoah Pauses}process.runtime.jvm.memory.init
: {pool=Metaspace,type=non_heap}, {pool=CodeCache,type=non_heap}, {pool=ZHeap,type=heap}, {pool=Compressed Class Space,type=non_heap}process.runtime.jvm.memory.usage
: {pool=Metaspace,type=non_heap}, {pool=CodeCache,type=non_heap}, {pool=ZHeap,type=heap}, {pool=Compressed Class Space,type=non_heap}process.runtime.jvm.memory.committed
: {pool=Metaspace,type=non_heap}, {pool=CodeCache,type=non_heap}, {pool=ZHeap,type=heap}, {pool=Compressed Class Space,type=non_heap}process.runtime.jvm.memory.limit
: {pool=CodeCache,type=non_heap}, {pool=ZHeap,type=heap}, {pool=Compressed Class Space,type=non_heap}process.runtime.jvm.memory.usage_after_last_gc
: {pool=ZHeap,type=heap}process.runtime.jvm.gc.duration
: {action=end of GC cycle,gc=ZGC Cycles}, {action=end of GC pause,gc=ZGC Pauses}