Skip to content

Commit ba5dd64

Browse files
authored
Move some metrics over to histograms, tidy up (#121)
* Move some metrics over to histograms, tidy up * Normalize metric naming * More name fixing * Use . for separators * Fix name for Network IO bytes
1 parent 4ea8b34 commit ba5dd64

File tree

10 files changed

+105
-70
lines changed

10 files changed

+105
-70
lines changed

jfr-streaming/src/main/java/io/opentelemetry/contrib/jfr/metrics/internal/Constants.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,24 @@ public final class Constants {
1111
private Constants() {}
1212

1313
public static final String ONE = "1";
14-
public static final String KILOBYTES = "KB";
14+
public static final String KILOBYTES = "kb";
1515
public static final String MILLISECONDS = "ms";
1616
public static final String PERCENTAGE = "%age";
1717
public static final String READ = "read";
1818
public static final String WRITE = "write";
19+
public static final String USER = "user";
20+
public static final String SYSTEM = "system";
21+
public static final String MACHINE = "machine.total";
22+
public static final String G1 = "g1";
23+
public static final String USED = "used";
24+
public static final String COMMITTED = "committed";
25+
1926
public static final AttributeKey<String> ATTR_THREAD_NAME = AttributeKey.stringKey("thread.name");
2027
public static final AttributeKey<String> ATTR_ARENA_NAME = AttributeKey.stringKey("arena");
2128
public static final AttributeKey<String> ATTR_NETWORK_MODE = AttributeKey.stringKey("mode");
29+
public static final AttributeKey<String> ATTR_CPU_USAGE = AttributeKey.stringKey("usage.type");
30+
public static final AttributeKey<String> ATTR_GC_COLLECTOR = AttributeKey.stringKey("name");
31+
public static final AttributeKey<String> ATTR_MEMORY_USAGE = AttributeKey.stringKey("usage.type");
32+
33+
public static final String METRIC_NAME_MEMORY_ALLOCATION = "runtime.jvm.memory.allocation";
2234
}

jfr-streaming/src/main/java/io/opentelemetry/contrib/jfr/metrics/internal/cpu/LongLockHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
public final class LongLockHandler extends AbstractThreadDispatchingHandler {
2020
static final String EVENT_NAME = "jdk.JavaMonitorWait";
2121
private final Meter otelMeter;
22-
private static final String HISTOGRAM_NAME = "runtime.jvm.longlock.time";
22+
private static final String METRIC_NAME = "runtime.jvm.cpu.longlock.time";
2323
private static final String DESCRIPTION = "Long lock times";
2424

2525
public LongLockHandler(Meter otelMeter, ThreadGrouper grouper) {
@@ -35,7 +35,7 @@ public String getEventName() {
3535
@Override
3636
public RecordedEventHandler createPerThreadSummarizer(String threadName) {
3737
var attr = Attributes.of(ATTR_THREAD_NAME, threadName);
38-
var builder = otelMeter.histogramBuilder(HISTOGRAM_NAME);
38+
var builder = otelMeter.histogramBuilder(METRIC_NAME);
3939
builder.setDescription(DESCRIPTION);
4040
builder.setUnit(Constants.MILLISECONDS);
4141
var histogram = builder.build().bind(attr);

jfr-streaming/src/main/java/io/opentelemetry/contrib/jfr/metrics/internal/cpu/OverallCPULoadHandler.java

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,15 @@
55

66
package io.opentelemetry.contrib.jfr.metrics.internal.cpu;
77

8+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.ATTR_CPU_USAGE;
9+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.MACHINE;
10+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.ONE;
11+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.SYSTEM;
12+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.USER;
13+
14+
import io.opentelemetry.api.common.Attributes;
15+
import io.opentelemetry.api.metrics.BoundDoubleHistogram;
816
import io.opentelemetry.api.metrics.Meter;
9-
import io.opentelemetry.contrib.jfr.metrics.internal.Constants;
1017
import io.opentelemetry.contrib.jfr.metrics.internal.RecordedEventHandler;
1118
import java.time.Duration;
1219
import java.util.Optional;
@@ -18,52 +25,52 @@ public final class OverallCPULoadHandler implements RecordedEventHandler {
1825
private static final String JVM_USER = "jvmUser";
1926
private static final String JVM_SYSTEM = "jvmSystem";
2027
private static final String MACHINE_TOTAL = "machineTotal";
21-
private static final String JFR_CPU_LOAD_JVM_USER = "jfr.CPULoad.jvmUser";
22-
private static final String JFR_CPU_LOAD_JVM_SYSTEM = "jfr.CPULoad.jvmSystem";
23-
private static final String JFR_CPU_LOAD_MACHINE_TOTAL = "jfr.CPULoad.machineTotal";
2428

25-
private final Meter otelMeter;
29+
private static final String METRIC_NAME = "runtime.jvm.cpu.utilization";
30+
private static final String DESCRIPTION = "CPU Utilization";
2631

27-
private volatile double userValue = 0;
28-
private volatile double systemValue = 0;
29-
private volatile double machineTotal = 0;
32+
private final Meter otelMeter;
33+
private BoundDoubleHistogram userHistogram;
34+
private BoundDoubleHistogram systemHistogram;
35+
private BoundDoubleHistogram machineHistogram;
3036

3137
public OverallCPULoadHandler(Meter otelMeter) {
3238
this.otelMeter = otelMeter;
3339
}
3440

41+
@Override
3542
public OverallCPULoadHandler init() {
36-
otelMeter
37-
.upDownCounterBuilder(JFR_CPU_LOAD_JVM_USER)
38-
.ofDoubles()
39-
.setUnit(Constants.PERCENTAGE)
40-
.buildWithCallback(codm -> codm.observe(userValue));
43+
var attr = Attributes.of(ATTR_CPU_USAGE, USER);
44+
var builder = otelMeter.histogramBuilder(METRIC_NAME);
45+
builder.setDescription(DESCRIPTION);
46+
builder.setUnit(ONE);
47+
userHistogram = builder.build().bind(attr);
4148

42-
otelMeter
43-
.upDownCounterBuilder(JFR_CPU_LOAD_JVM_SYSTEM)
44-
.ofDoubles()
45-
.setUnit(Constants.PERCENTAGE)
46-
.buildWithCallback(codm -> codm.observe(systemValue));
49+
attr = Attributes.of(ATTR_CPU_USAGE, SYSTEM);
50+
builder = otelMeter.histogramBuilder(METRIC_NAME);
51+
builder.setDescription(DESCRIPTION);
52+
builder.setUnit(ONE);
53+
systemHistogram = builder.build().bind(attr);
4754

48-
otelMeter
49-
.upDownCounterBuilder(JFR_CPU_LOAD_MACHINE_TOTAL)
50-
.ofDoubles()
51-
.setUnit(Constants.PERCENTAGE)
52-
.buildWithCallback(codm -> codm.observe(machineTotal));
55+
attr = Attributes.of(ATTR_CPU_USAGE, MACHINE);
56+
builder = otelMeter.histogramBuilder(METRIC_NAME);
57+
builder.setDescription(DESCRIPTION);
58+
builder.setUnit(ONE);
59+
machineHistogram = builder.build().bind(attr);
5360

5461
return this;
5562
}
5663

5764
@Override
5865
public void accept(RecordedEvent ev) {
5966
if (ev.hasField(JVM_USER)) {
60-
userValue = ev.getDouble(JVM_USER);
67+
userHistogram.record(ev.getDouble(JVM_USER));
6168
}
6269
if (ev.hasField(JVM_SYSTEM)) {
63-
systemValue = ev.getDouble(JVM_SYSTEM);
70+
systemHistogram.record(ev.getDouble(JVM_SYSTEM));
6471
}
6572
if (ev.hasField(MACHINE_TOTAL)) {
66-
machineTotal = ev.getDouble(MACHINE_TOTAL);
73+
machineHistogram.record(ev.getDouble(MACHINE_TOTAL));
6774
}
6875
}
6976

jfr-streaming/src/main/java/io/opentelemetry/contrib/jfr/metrics/internal/memory/G1GarbageCollectionHandler.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55

66
package io.opentelemetry.contrib.jfr.metrics.internal.memory;
77

8-
import io.opentelemetry.api.metrics.DoubleHistogram;
8+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.ATTR_GC_COLLECTOR;
9+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.G1;
10+
11+
import io.opentelemetry.api.common.Attributes;
12+
import io.opentelemetry.api.metrics.BoundDoubleHistogram;
913
import io.opentelemetry.api.metrics.Meter;
1014
import io.opentelemetry.contrib.jfr.metrics.internal.Constants;
1115
import io.opentelemetry.contrib.jfr.metrics.internal.RecordedEventHandler;
@@ -14,21 +18,22 @@
1418
/** This class aggregates the duration of G1 Garbage Collection JFR events */
1519
public final class G1GarbageCollectionHandler implements RecordedEventHandler {
1620
private static final String EVENT_NAME = "jdk.G1GarbageCollection";
17-
private static final String JFR_G1_GARBAGE_COLLECTION_DURATION = "jvm.runtime.gc.time";
18-
private static final String DESCRIPTION = "G1 GC Duration";
21+
private static final String METRIC_NAME = "runtime.jvm.gc.duration";
22+
private static final String DESCRIPTION = "GC Duration";
1923

2024
private final Meter otelMeter;
21-
private DoubleHistogram gcHistogram;
25+
private BoundDoubleHistogram gcHistogram;
2226

2327
public G1GarbageCollectionHandler(Meter otelMeter) {
2428
this.otelMeter = otelMeter;
2529
}
2630

2731
public G1GarbageCollectionHandler init() {
28-
var builder = otelMeter.histogramBuilder(JFR_G1_GARBAGE_COLLECTION_DURATION);
32+
var attr = Attributes.of(ATTR_GC_COLLECTOR, G1);
33+
var builder = otelMeter.histogramBuilder(METRIC_NAME);
2934
builder.setDescription(DESCRIPTION);
3035
builder.setUnit(Constants.MILLISECONDS);
31-
gcHistogram = builder.build();
36+
gcHistogram = builder.build().bind(attr);
3237
return this;
3338
}
3439

jfr-streaming/src/main/java/io/opentelemetry/contrib/jfr/metrics/internal/memory/GCHeapSummaryHandler.java

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@
55

66
package io.opentelemetry.contrib.jfr.metrics.internal.memory;
77

8+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.ATTR_MEMORY_USAGE;
9+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.COMMITTED;
10+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.KILOBYTES;
11+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.USED;
12+
13+
import io.opentelemetry.api.common.Attributes;
14+
import io.opentelemetry.api.metrics.BoundDoubleHistogram;
815
import io.opentelemetry.api.metrics.DoubleHistogram;
916
import io.opentelemetry.api.metrics.Meter;
1017
import io.opentelemetry.contrib.jfr.metrics.internal.Constants;
@@ -17,9 +24,9 @@
1724
/** This class handles GCHeapSummary JFR events. For GC purposes they come in pairs. */
1825
public final class GCHeapSummaryHandler implements RecordedEventHandler {
1926
private static final String SIMPLE_CLASS_NAME = GCHeapSummaryHandler.class.getSimpleName();
20-
private static final String JFR_GC_HEAP_SUMMARY_DURATION = "jfr.GCHeapSummary.duration";
21-
private static final String JFR_GC_HEAP_SUMMARY_HEAP_USED = "jfr.GCHeapSummary.heapUsed";
22-
private static final String JFR_GC_HEAP_SUMMARY_COMMITTED = "jfr.GCHeapSummary.heapCommitted";
27+
private static final String METRIC_NAME_DURATION = "runtime.jvm.gc.duration";
28+
private static final String METRIC_NAME_MEMORY = "runtime.jvm.memory.utilization";
29+
2330
private static final String EVENT_NAME = "jdk.GCHeapSummary";
2431
private static final String BEFORE = "Before GC";
2532
private static final String AFTER = "After GC";
@@ -33,31 +40,31 @@ public final class GCHeapSummaryHandler implements RecordedEventHandler {
3340
private final Map<Long, RecordedEvent> awaitingPairs = new HashMap<>();
3441

3542
private final Meter otelMeter;
36-
private DoubleHistogram gcHistogram;
37-
private volatile long heapUsed = 0;
38-
private volatile long heapCommitted = 0;
43+
private DoubleHistogram durationHistogram;
44+
private BoundDoubleHistogram usedHistogram;
45+
private BoundDoubleHistogram committedHistogram;
3946

4047
public GCHeapSummaryHandler(Meter otelMeter) {
4148
this.otelMeter = otelMeter;
4249
}
4350

4451
public GCHeapSummaryHandler init() {
45-
var builder = otelMeter.histogramBuilder(JFR_GC_HEAP_SUMMARY_DURATION);
52+
var builder = otelMeter.histogramBuilder(METRIC_NAME_DURATION);
4653
builder.setDescription(DESCRIPTION);
4754
builder.setUnit(Constants.MILLISECONDS);
48-
gcHistogram = builder.build();
55+
durationHistogram = builder.build();
4956

50-
otelMeter
51-
.upDownCounterBuilder(JFR_GC_HEAP_SUMMARY_HEAP_USED)
52-
.ofDoubles()
53-
.setUnit(Constants.KILOBYTES)
54-
.buildWithCallback(codm -> codm.observe(heapUsed));
57+
var attr = Attributes.of(ATTR_MEMORY_USAGE, USED);
58+
builder = otelMeter.histogramBuilder(METRIC_NAME_MEMORY);
59+
builder.setDescription(DESCRIPTION);
60+
builder.setUnit(KILOBYTES);
61+
usedHistogram = builder.build().bind(attr);
5562

56-
otelMeter
57-
.upDownCounterBuilder(JFR_GC_HEAP_SUMMARY_COMMITTED)
58-
.ofDoubles()
59-
.setUnit(Constants.KILOBYTES)
60-
.buildWithCallback(codm -> codm.observe(heapCommitted));
63+
attr = Attributes.of(ATTR_MEMORY_USAGE, COMMITTED);
64+
builder = otelMeter.histogramBuilder(METRIC_NAME_MEMORY);
65+
builder.setDescription(DESCRIPTION);
66+
builder.setUnit(KILOBYTES);
67+
committedHistogram = builder.build().bind(attr);
6168

6269
return this;
6370
}
@@ -100,15 +107,16 @@ public void accept(RecordedEvent ev) {
100107
}
101108

102109
private void recordValues(RecordedEvent before, RecordedEvent after) {
103-
gcHistogram.record(after.getStartTime().toEpochMilli() - before.getStartTime().toEpochMilli());
110+
durationHistogram.record(
111+
after.getStartTime().toEpochMilli() - before.getStartTime().toEpochMilli());
104112
if (after.hasField(HEAP_USED)) {
105-
heapUsed = after.getLong(HEAP_USED);
113+
usedHistogram.record(after.getLong(HEAP_USED));
106114
}
107115
if (after.hasField(HEAP_SPACE)) {
108116
after.getValue(HEAP_SPACE);
109117
if (after.getValue(HEAP_SPACE) instanceof RecordedObject) {
110118
RecordedObject ro = after.getValue(HEAP_SPACE);
111-
heapCommitted = ro.getLong(COMMITTED_SIZE);
119+
committedHistogram.record(ro.getLong(COMMITTED_SIZE));
112120
}
113121
}
114122
}

jfr-streaming/src/main/java/io/opentelemetry/contrib/jfr/metrics/internal/memory/PerThreadObjectAllocationInNewTLABHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.ATTR_ARENA_NAME;
99
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.ATTR_THREAD_NAME;
10+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.METRIC_NAME_MEMORY_ALLOCATION;
1011

1112
import io.opentelemetry.api.common.Attributes;
1213
import io.opentelemetry.api.metrics.BoundDoubleHistogram;
@@ -17,7 +18,6 @@
1718

1819
/** This class aggregates all TLAB allocation JFR events for a single thread */
1920
public final class PerThreadObjectAllocationInNewTLABHandler implements RecordedEventHandler {
20-
private static final String METRIC_NAME = "runtime.jvm.tlab.allocations";
2121
private static final String TLAB_SIZE = "tlabSize";
2222
private static final String DESCRIPTION = "Allocation";
2323
private static final String TLAB = "TLAB";
@@ -33,7 +33,7 @@ public PerThreadObjectAllocationInNewTLABHandler(Meter otelMeter, String threadN
3333

3434
public PerThreadObjectAllocationInNewTLABHandler init() {
3535
var attr = Attributes.of(ATTR_THREAD_NAME, threadName, ATTR_ARENA_NAME, TLAB);
36-
var builder = otelMeter.histogramBuilder(METRIC_NAME);
36+
var builder = otelMeter.histogramBuilder(METRIC_NAME_MEMORY_ALLOCATION);
3737
builder.setDescription(DESCRIPTION);
3838
builder.setUnit(Constants.KILOBYTES);
3939
histogram = builder.build().bind(attr);

jfr-streaming/src/main/java/io/opentelemetry/contrib/jfr/metrics/internal/memory/PerThreadObjectAllocationOutsideTLABHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.ATTR_ARENA_NAME;
99
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.ATTR_THREAD_NAME;
10+
import static io.opentelemetry.contrib.jfr.metrics.internal.Constants.METRIC_NAME_MEMORY_ALLOCATION;
1011

1112
import io.opentelemetry.api.common.Attributes;
1213
import io.opentelemetry.api.metrics.BoundDoubleHistogram;
@@ -17,7 +18,6 @@
1718

1819
/** This class aggregates all non-TLAB allocation JFR events for a single thread */
1920
public final class PerThreadObjectAllocationOutsideTLABHandler implements RecordedEventHandler {
20-
private static final String METRIC_NAME = "runtime.jvm.tlab.allocations";
2121
private static final String ALLOCATION_SIZE = "allocationSize";
2222
private static final String DESCRIPTION = "Allocation";
2323
private static final String MAIN = "Main";
@@ -33,7 +33,7 @@ public PerThreadObjectAllocationOutsideTLABHandler(Meter otelMeter, String threa
3333

3434
public PerThreadObjectAllocationOutsideTLABHandler init() {
3535
var attr = Attributes.of(ATTR_THREAD_NAME, threadName, ATTR_ARENA_NAME, MAIN);
36-
var builder = otelMeter.histogramBuilder(METRIC_NAME);
36+
var builder = otelMeter.histogramBuilder(METRIC_NAME_MEMORY_ALLOCATION);
3737
builder.setDescription(DESCRIPTION);
3838
builder.setUnit(Constants.KILOBYTES);
3939
histogram = builder.build().bind(attr);

jfr-streaming/src/main/java/io/opentelemetry/contrib/jfr/metrics/internal/network/PerThreadNetworkReadHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ public final class PerThreadNetworkReadHandler implements RecordedEventHandler {
2121
private static final String DESCRIPTION_DURATION = "Read Duration";
2222
private final String threadName;
2323

24-
private static final String DURATION_METRIC_NAME = "runtime.jvm.network.duration";
25-
private static final String JFR_SOCKET_READ_BYTES_READ = "runtime.jvm.network.io";
24+
private static final String METRIC_NAME_DURATION = "runtime.jvm.network.duration";
25+
private static final String METRIC_NAME_BYTES = "runtime.jvm.network.io";
2626
private static final String BYTES_READ = "bytesRead";
2727
private final Meter otelMeter;
2828
private BoundDoubleHistogram bytesHistogram;
@@ -36,12 +36,12 @@ public PerThreadNetworkReadHandler(Meter otelMeter, String threadName) {
3636
public PerThreadNetworkReadHandler init() {
3737
var attr = Attributes.of(ATTR_THREAD_NAME, threadName, ATTR_NETWORK_MODE, READ);
3838

39-
var builder = otelMeter.histogramBuilder(JFR_SOCKET_READ_BYTES_READ);
39+
var builder = otelMeter.histogramBuilder(METRIC_NAME_BYTES);
4040
builder.setDescription(DESCRIPTION_BYTES);
4141
builder.setUnit(Constants.KILOBYTES);
4242
bytesHistogram = builder.build().bind(attr);
4343

44-
builder = otelMeter.histogramBuilder(DURATION_METRIC_NAME);
44+
builder = otelMeter.histogramBuilder(METRIC_NAME_DURATION);
4545
builder.setDescription(DESCRIPTION_DURATION);
4646
builder.setUnit(Constants.MILLISECONDS);
4747
durationHistogram = builder.build().bind(attr);

jfr-streaming/src/main/java/io/opentelemetry/contrib/jfr/metrics/internal/network/PerThreadNetworkWriteHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public final class PerThreadNetworkWriteHandler implements RecordedEventHandler
2020
private static final String SIMPLE_CLASS_NAME =
2121
PerThreadNetworkWriteHandler.class.getSimpleName();
2222
private static final String BYTES_WRITTEN = "bytesWritten";
23-
private static final String DURATION_METRIC_NAME = "runtime.jvm.network.duration";
24-
private static final String WRITE_METRIC_NAME = "runtime.jvm.network.io";
23+
private static final String METRIC_NAME_DURATION = "runtime.jvm.network.duration";
24+
private static final String METRIC_NAME_BYTES = "runtime.jvm.network.io";
2525

2626
private static final String DESCRIPTION_BYTES = "Bytes Written";
2727
private static final String DESCRIPTION_DURATION = "Write Duration";
@@ -40,12 +40,12 @@ public PerThreadNetworkWriteHandler(Meter otelMeter, String threadName) {
4040
public PerThreadNetworkWriteHandler init() {
4141
var attr = Attributes.of(ATTR_THREAD_NAME, threadName, ATTR_NETWORK_MODE, WRITE);
4242

43-
var builder = otelMeter.histogramBuilder(WRITE_METRIC_NAME);
43+
var builder = otelMeter.histogramBuilder(METRIC_NAME_BYTES);
4444
builder.setDescription(DESCRIPTION_BYTES);
4545
builder.setUnit(Constants.KILOBYTES);
4646
bytesHistogram = builder.build().bind(attr);
4747

48-
builder = otelMeter.histogramBuilder(DURATION_METRIC_NAME);
48+
builder = otelMeter.histogramBuilder(METRIC_NAME_DURATION);
4949
builder.setDescription(DESCRIPTION_DURATION);
5050
builder.setUnit(Constants.MILLISECONDS);
5151
durationHistogram = builder.build().bind(attr);

jfr-streaming/src/test/java/io/opentelemetry/contrib/jfr/metrics/JfrCPUTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@ public void shouldHaveGcAndLockEvents() throws Exception {
2222

2323
waitAndAssertMetrics(
2424
metric ->
25-
metric.hasName("runtime.jvm.longlock.time").hasUnit(MILLISECONDS).hasDoubleHistogram(),
25+
metric
26+
.hasName("runtime.jvm.cpu.longlock.time")
27+
.hasUnit(MILLISECONDS)
28+
.hasDoubleHistogram(),
2629
metric ->
2730
metric
28-
.hasName("jvm.runtime.gc.time")
31+
.hasName("runtime.jvm.gc.duration")
2932
.hasUnit(MILLISECONDS)
3033
.hasDoubleHistogram()
3134
.points()

0 commit comments

Comments
 (0)