Skip to content

Commit

Permalink
Use stable semconv for Java17 (#11914)
Browse files Browse the repository at this point in the history
Co-authored-by: Lauri Tulmin <ltulmin@splunk.com>
  • Loading branch information
robsunday and laurit committed Aug 15, 2024
1 parent c9a9f57 commit 5d8b4f7
Show file tree
Hide file tree
Showing 28 changed files with 169 additions and 135 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ void shouldHaveDefaultMetrics() {

testing.waitAndAssertMetrics(
"io.opentelemetry.runtime-telemetry-java17",
metric -> metric.hasName("process.runtime.jvm.cpu.longlock"),
metric -> metric.hasName("process.runtime.jvm.cpu.limit"),
metric -> metric.hasName("process.runtime.jvm.cpu.context_switch"));
metric -> metric.hasName("jvm.cpu.longlock"),
metric -> metric.hasName("jvm.cpu.limit"),
metric -> metric.hasName("jvm.cpu.context_switch"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,16 @@ default, and the telemetry each produces:
<!-- DO NOT MANUALLY EDIT. Regenerate table following changes to instrumentation using ./gradlew generateDocs -->
<!-- generateDocsStart -->

| JfrFeature | Default Enabled | Metrics |
| ------------------------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| BUFFER_METRICS | `false` | `process.runtime.jvm.buffer.count`, `process.runtime.jvm.buffer.limit`, `process.runtime.jvm.buffer.usage` |
| CLASS_LOAD_METRICS | `false` | `process.runtime.jvm.classes.current_loaded`, `process.runtime.jvm.classes.loaded`, `process.runtime.jvm.classes.unloaded` |
| CONTEXT_SWITCH_METRICS | `true` | `process.runtime.jvm.cpu.context_switch` |
| CPU_COUNT_METRICS | `true` | `process.runtime.jvm.cpu.limit` |
| CPU_UTILIZATION_METRICS | `false` | `process.runtime.jvm.cpu.utilization`, `process.runtime.jvm.system.cpu.utilization` |
| GC_DURATION_METRICS | `false` | `process.runtime.jvm.gc.duration` |
| LOCK_METRICS | `true` | `process.runtime.jvm.cpu.longlock` |
| MEMORY_ALLOCATION_METRICS | `true` | `process.runtime.jvm.memory.allocation` |
| MEMORY_POOL_METRICS | `false` | `process.runtime.jvm.memory.committed`, `process.runtime.jvm.memory.init`, `process.runtime.jvm.memory.limit`, `process.runtime.jvm.memory.usage`, `process.runtime.jvm.memory.usage_after_last_gc` |
| NETWORK_IO_METRICS | `true` | `process.runtime.jvm.network.io`, `process.runtime.jvm.network.time` |
| THREAD_METRICS | `false` | `process.runtime.jvm.threads.count` |
| JfrFeature | Default Enabled | Metrics |
|---------------------------|-----------------|-------------------------------------------------------------------------------------------------------------------|
| BUFFER_METRICS | `false` | `jvm.buffer.count`, `jvm.buffer.memory.limit`, `jvm.buffer.memory.usage` |
| CLASS_LOAD_METRICS | `false` | `jvm.class.count`, `jvm.class.loaded`, `jvm.class.unloaded` |
| CONTEXT_SWITCH_METRICS | `true` | `jvm.cpu.context_switch` |
| CPU_COUNT_METRICS | `true` | `jvm.cpu.limit` |
| CPU_UTILIZATION_METRICS | `false` | `jvm.cpu.recent_utilization`, `jvm.system.cpu.utilization` |
| GC_DURATION_METRICS | `false` | `jvm.gc.duration` |
| LOCK_METRICS | `true` | `jvm.cpu.longlock` |
| MEMORY_ALLOCATION_METRICS | `true` | `jvm.memory.allocation` |
| MEMORY_POOL_METRICS | `false` | `jvm.memory.committed`, `jvm.memory.init`, `jvm.memory.limit`, `jvm.memory.used`, `jvm.memory.used_after_last_gc` |
| NETWORK_IO_METRICS | `true` | `jvm.network.io`, `jvm.network.time` |
| THREAD_METRICS | `false` | `jvm.thread.count` |
Original file line number Diff line number Diff line change
Expand Up @@ -26,65 +26,67 @@ private Constants() {}
public static final String COMMITTED_SIZE = "committedSize";
public static final String RESERVED_SIZE = "reservedSize";

public static final String DAEMON = "daemon";
public static final String HEAP = "heap";
public static final String NON_HEAP = "nonheap";
public static final String NON_HEAP = "non_heap";
public static final String NETWORK_MODE_READ = "read";
public static final String NETWORK_MODE_WRITE = "write";
public static final String DURATION = "duration";
public static final String END_OF_MINOR_GC = "end of minor GC";
public static final String END_OF_MAJOR_GC = "end of major GC";

public static final String METRIC_NAME_NETWORK_BYTES = "process.runtime.jvm.network.io";
public static final String METRIC_DESCRIPTION_NETWORK_BYTES = "Network read/write bytes";
public static final String METRIC_NAME_NETWORK_DURATION = "process.runtime.jvm.network.time";
public static final String METRIC_DESCRIPTION_NETWORK_DURATION = "Network read/write duration";
public static final String METRIC_NAME_COMMITTED = "process.runtime.jvm.memory.committed";
public static final String METRIC_DESCRIPTION_COMMITTED = "Measure of memory committed";
public static final String METRIC_NAME_MEMORY = "process.runtime.jvm.memory.usage";
public static final String METRIC_DESCRIPTION_MEMORY = "Measure of memory used";
public static final String METRIC_NAME_MEMORY_AFTER =
"process.runtime.jvm.memory.usage_after_last_gc";
public static final String METRIC_NAME_NETWORK_BYTES = "jvm.network.io";
public static final String METRIC_DESCRIPTION_NETWORK_BYTES = "Network read/write bytes.";
public static final String METRIC_NAME_NETWORK_DURATION = "jvm.network.time";
public static final String METRIC_DESCRIPTION_NETWORK_DURATION = "Network read/write duration.";
public static final String METRIC_NAME_COMMITTED = "jvm.memory.committed";
public static final String METRIC_DESCRIPTION_COMMITTED = "Measure of memory committed.";
public static final String METRIC_NAME_MEMORY = "jvm.memory.used";
public static final String METRIC_DESCRIPTION_MEMORY = "Measure of memory used.";
public static final String METRIC_NAME_MEMORY_AFTER = "jvm.memory.used_after_last_gc";
public static final String METRIC_DESCRIPTION_MEMORY_AFTER =
"Measure of memory used, as measured after the most recent garbage collection event on this pool";
public static final String METRIC_NAME_MEMORY_ALLOCATION =
"process.runtime.jvm.memory.allocation";
public static final String METRIC_DESCRIPTION_MEMORY_ALLOCATION = "Allocation";
public static final String METRIC_NAME_MEMORY_INIT = "process.runtime.jvm.memory.init";
public static final String METRIC_DESCRIPTION_MEMORY_INIT = "Measure of initial memory requested";
public static final String METRIC_NAME_MEMORY_LIMIT = "process.runtime.jvm.memory.limit";
public static final String METRIC_DESCRIPTION_MEMORY_LIMIT = "Measure of max obtainable memory";
public static final String METRIC_NAME_GC_DURATION = "process.runtime.jvm.gc.duration";
"Measure of memory used, as measured after the most recent garbage collection event on this pool.";
public static final String METRIC_NAME_MEMORY_ALLOCATION = "jvm.memory.allocation";
public static final String METRIC_DESCRIPTION_MEMORY_ALLOCATION =
"Measure of memory allocations.";
public static final String METRIC_NAME_MEMORY_INIT = "jvm.memory.init";
public static final String METRIC_DESCRIPTION_MEMORY_INIT =
"Measure of initial memory requested.";
public static final String METRIC_NAME_MEMORY_LIMIT = "jvm.memory.limit";
public static final String METRIC_DESCRIPTION_MEMORY_LIMIT = "Measure of max obtainable memory.";
public static final String METRIC_NAME_GC_DURATION = "jvm.gc.duration";
public static final String METRIC_DESCRIPTION_GC_DURATION =
"Duration of JVM garbage collection actions";
"Duration of JVM garbage collection actions.";

public static final AttributeKey<String> ATTR_THREAD_NAME = AttributeKey.stringKey("thread.name");
public static final AttributeKey<String> ATTR_ARENA_NAME = AttributeKey.stringKey("arena");
public static final AttributeKey<String> ATTR_NETWORK_MODE = AttributeKey.stringKey("mode");
public static final AttributeKey<String> ATTR_TYPE = AttributeKey.stringKey("type");
public static final AttributeKey<String> ATTR_POOL = AttributeKey.stringKey("pool");
public static final AttributeKey<String> ATTR_GC = AttributeKey.stringKey("pool");
public static final AttributeKey<String> ATTR_ACTION = AttributeKey.stringKey("action");
public static final AttributeKey<Boolean> ATTR_DAEMON = AttributeKey.booleanKey(DAEMON);
public static final AttributeKey<String> ATTR_MEMORY_TYPE =
AttributeKey.stringKey("jvm.memory.type");
public static final AttributeKey<String> ATTR_MEMORY_POOL =
AttributeKey.stringKey("jvm.memory.pool.name");
public static final AttributeKey<String> ATTR_GC_NAME = AttributeKey.stringKey("jvm.gc.name");
public static final AttributeKey<String> ATTR_GC_ACTION = AttributeKey.stringKey("jvm.gc.action");
public static final AttributeKey<Boolean> ATTR_DAEMON =
AttributeKey.booleanKey("jvm.thread.daemon");
public static final Attributes ATTR_PS_EDEN_SPACE =
Attributes.of(ATTR_TYPE, HEAP, ATTR_POOL, "PS Eden Space");
Attributes.of(ATTR_MEMORY_TYPE, HEAP, ATTR_MEMORY_POOL, "PS Eden Space");
public static final Attributes ATTR_PS_SURVIVOR_SPACE =
Attributes.of(ATTR_TYPE, HEAP, ATTR_POOL, "PS Survivor Space");
Attributes.of(ATTR_MEMORY_TYPE, HEAP, ATTR_MEMORY_POOL, "PS Survivor Space");
public static final Attributes ATTR_PS_OLD_GEN =
Attributes.of(ATTR_TYPE, HEAP, ATTR_POOL, "PS Old Gen");
Attributes.of(ATTR_MEMORY_TYPE, HEAP, ATTR_MEMORY_POOL, "PS Old Gen");
public static final Attributes ATTR_G1_SURVIVOR_SPACE =
Attributes.of(ATTR_TYPE, HEAP, ATTR_POOL, "G1 Survivor Space");
Attributes.of(ATTR_MEMORY_TYPE, HEAP, ATTR_MEMORY_POOL, "G1 Survivor Space");
public static final Attributes ATTR_G1_EDEN_SPACE =
Attributes.of(ATTR_TYPE, HEAP, ATTR_POOL, "G1 Eden Space");
Attributes.of(ATTR_MEMORY_TYPE, HEAP, ATTR_MEMORY_POOL, "G1 Eden Space");
public static final Attributes ATTR_METASPACE =
Attributes.of(ATTR_TYPE, NON_HEAP, ATTR_POOL, "Metaspace");
Attributes.of(ATTR_MEMORY_TYPE, NON_HEAP, ATTR_MEMORY_POOL, "Metaspace");
public static final Attributes ATTR_COMPRESSED_CLASS_SPACE =
Attributes.of(ATTR_TYPE, NON_HEAP, ATTR_POOL, "Compressed Class Space");
Attributes.of(ATTR_MEMORY_TYPE, NON_HEAP, ATTR_MEMORY_POOL, "Compressed Class Space");
public static final Attributes ATTR_CODE_CACHE =
Attributes.of(ATTR_TYPE, NON_HEAP, ATTR_POOL, "CodeCache");
Attributes.of(ATTR_MEMORY_TYPE, NON_HEAP, ATTR_MEMORY_POOL, "CodeCache");

public static final String UNIT_CLASSES = "{classes}";
public static final String UNIT_THREADS = "{threads}";
public static final String UNIT_BUFFERS = "{buffers}";
public static final String UNIT_CLASSES = "{class}";
public static final String UNIT_THREADS = "{thread}";
public static final String UNIT_BUFFERS = "{buffer}";
public static final String UNIT_UTILIZATION = "1";
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

package io.opentelemetry.instrumentation.runtimemetrics.java17.internal.buffer;

import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.instrumentation.runtimemetrics.java17.JfrFeature;
Expand All @@ -21,19 +22,21 @@
* any time.
*/
public final class DirectBufferStatisticsHandler implements RecordedEventHandler {
private static final String METRIC_NAME_USAGE = "process.runtime.jvm.buffer.usage";
private static final String METRIC_NAME_LIMIT = "process.runtime.jvm.buffer.limit";
private static final String METRIC_NAME_COUNT = "process.runtime.jvm.buffer.count";
private static final String METRIC_DESCRIPTION_USAGE = "Measure of memory used by buffers";
private static final String METRIC_NAME_USAGE = "jvm.buffer.memory.usage";
private static final String METRIC_NAME_LIMIT = "jvm.buffer.memory.limit";
private static final String METRIC_NAME_COUNT = "jvm.buffer.count";
private static final String METRIC_DESCRIPTION_USAGE = "Measure of memory used by buffers.";
private static final String METRIC_DESCRIPTION_LIMIT =
"Measure of total memory capacity of buffers";
private static final String METRIC_DESCRIPTION_COUNT = "Number of buffers in the pool";
"Measure of total memory capacity of buffers.";
private static final String METRIC_DESCRIPTION_COUNT = "Number of buffers in the pool.";
private static final String COUNT = "count";
private static final String MAX_CAPACITY = "maxCapacity";
private static final String MEMORY_USED = "memoryUsed";

private static final String EVENT_NAME = "jdk.DirectBufferStatistics";
private static final Attributes ATTR = Attributes.of(Constants.ATTR_POOL, "direct");
public static final AttributeKey<String> ATTR_BUFFER_POOL =
AttributeKey.stringKey("jvm.buffer.pool.name");
private static final Attributes ATTR = Attributes.of(ATTR_BUFFER_POOL, "direct");

private final List<AutoCloseable> observables = new ArrayList<>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,25 +21,25 @@
*/
public final class ClassesLoadedHandler implements RecordedEventHandler {
/**
* process.runtime.jvm.classes.loaded is the total number of classes loaded since JVM start. See:
* jvm.class.loaded is the total number of classes loaded since JVM start. See:
* https://github.com/open-telemetry/semantic-conventions/blob/main/docs/runtime/jvm-metrics.md
*/
private static final String METRIC_NAME_LOADED = "process.runtime.jvm.classes.loaded";
private static final String METRIC_NAME_LOADED = "jvm.class.loaded";

private static final String METRIC_NAME_UNLOADED = "process.runtime.jvm.classes.unloaded";
private static final String METRIC_NAME_UNLOADED = "jvm.class.unloaded";

/**
* process.runtime.jvm.classes.current_loaded is the number of classes loaded at the time of
* jdk.ClassLoadingStatistics event emission.
* jvm.class.count is the number of classes loaded at the time of jdk.ClassLoadingStatistics event
* emission.
*/
private static final String METRIC_NAME_CURRENT = "process.runtime.jvm.classes.current_loaded";
private static final String METRIC_NAME_CURRENT = "jvm.class.count";

private static final String EVENT_NAME = "jdk.ClassLoadingStatistics";
private static final String METRIC_DESCRIPTION_CURRENT = "Number of classes currently loaded";
private static final String METRIC_DESCRIPTION_CURRENT = "Number of classes currently loaded.";
private static final String METRIC_DESCRIPTION_LOADED =
"Number of classes loaded since JVM start";
"Number of classes loaded since JVM start.";
private static final String METRIC_DESCRIPTION_UNLOADED =
"Number of classes unloaded since JVM start";
"Number of classes unloaded since JVM start.";

private final List<AutoCloseable> observables = new ArrayList<>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
* any time.
*/
public final class ContainerConfigurationHandler implements RecordedEventHandler {
private static final String METRIC_NAME = "process.runtime.jvm.cpu.limit";
private static final String METRIC_NAME = "jvm.cpu.limit";
private static final String EVENT_NAME = "jdk.ContainerConfiguration";
private static final String EFFECTIVE_CPU_COUNT = "effectiveCpuCount";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* any time.
*/
public final class ContextSwitchRateHandler implements RecordedEventHandler {
private static final String METRIC_NAME = "process.runtime.jvm.cpu.context_switch";
private static final String METRIC_NAME = "jvm.cpu.context_switch";
private static final String EVENT_NAME = "jdk.ThreadContextSwitchRate";

private final List<AutoCloseable> observables = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
* any time.
*/
public final class LongLockHandler extends AbstractThreadDispatchingHandler {
private static final String METRIC_NAME = "process.runtime.jvm.cpu.longlock";
private static final String METRIC_NAME = "jvm.cpu.longlock";
private static final String METRIC_DESCRIPTION = "Long lock times";
private static final String EVENT_NAME = "jdk.JavaMonitorWait";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@
* any time.
*/
public final class OverallCpuLoadHandler implements RecordedEventHandler {
private static final String METRIC_NAME_PROCESS = "process.runtime.jvm.cpu.utilization";
private static final String METRIC_NAME_MACHINE = "process.runtime.jvm.system.cpu.utilization";
private static final String METRIC_DESCRIPTION_PROCESS = "Recent CPU utilization for the process";
private static final String METRIC_NAME_PROCESS = "jvm.cpu.recent_utilization";
private static final String METRIC_NAME_MACHINE = "jvm.system.cpu.utilization";
private static final String METRIC_DESCRIPTION_PROCESS =
"Recent CPU utilization for the process as reported by the JVM.";
private static final String METRIC_DESCRIPTION_MACHINE =
"Recent CPU utilization for the whole system";
"Recent CPU utilization for the whole system as reported by the JVM.";

private static final String EVENT_NAME = "jdk.CPULoad";
private static final String JVM_USER = "jvmUser";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ public final class G1GarbageCollectionHandler implements RecordedEventHandler {
private static final String EVENT_NAME = "jdk.G1GarbageCollection";
private static final Attributes ATTR =
Attributes.of(
Constants.ATTR_GC,
Constants.ATTR_GC_NAME,
"G1 Young Generation",
Constants.ATTR_ACTION,
Constants.ATTR_GC_ACTION,
Constants.END_OF_MINOR_GC);
private final LongHistogram histogram;

Expand Down
Loading

0 comments on commit 5d8b4f7

Please sign in to comment.