From bcaab02b7d79d7312d8ef7a3c3b5446a1d3041cd Mon Sep 17 00:00:00 2001 From: Felix Barnsteiner Date: Mon, 22 Mar 2021 16:04:22 +0100 Subject: [PATCH] Add runtime.jvm.gc.collection.count metric --- .../runtimemetrics/RuntimeMetricsTest.groovy | 1 + .../runtimemetrics/GarbageCollector.java | 13 +++++++++++++ .../smoketest/SpringBootSmokeTest.groovy | 1 + 3 files changed, 15 insertions(+) diff --git a/instrumentation/runtime-metrics/javaagent/src/test/groovy/io/opentelemetry/instrumentation/javaagent/runtimemetrics/RuntimeMetricsTest.groovy b/instrumentation/runtime-metrics/javaagent/src/test/groovy/io/opentelemetry/instrumentation/javaagent/runtimemetrics/RuntimeMetricsTest.groovy index a7a823471ba0..8a7277b5ebb1 100644 --- a/instrumentation/runtime-metrics/javaagent/src/test/groovy/io/opentelemetry/instrumentation/javaagent/runtimemetrics/RuntimeMetricsTest.groovy +++ b/instrumentation/runtime-metrics/javaagent/src/test/groovy/io/opentelemetry/instrumentation/javaagent/runtimemetrics/RuntimeMetricsTest.groovy @@ -17,6 +17,7 @@ class RuntimeMetricsTest extends AgentInstrumentationSpecification { then: conditions.eventually { assert getMetrics().any { it.name == "runtime.jvm.gc.collection" } + assert getMetrics().any { it.name == "runtime.jvm.gc.collection.count" } assert getMetrics().any { it.name == "runtime.jvm.memory.area" } assert getMetrics().any { it.name == "runtime.jvm.memory.pool" } } diff --git a/instrumentation/runtime-metrics/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/GarbageCollector.java b/instrumentation/runtime-metrics/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/GarbageCollector.java index 7c2029ce459d..42ec73452801 100644 --- a/instrumentation/runtime-metrics/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/GarbageCollector.java +++ b/instrumentation/runtime-metrics/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/GarbageCollector.java @@ -26,6 +26,7 @@ * *
  *   runtime.jvm.gc.collection{gc="PS1"} 6.7
+ *   runtime.jvm.gc.collection.count{gc="PS1"} 1
  * 
*/ public final class GarbageCollector { @@ -51,6 +52,18 @@ public static void registerObservers() { } }) .build(); + meter + .longSumObserverBuilder("runtime.jvm.gc.collection.count") + .setDescription("The number of collections that have occurred for a given JVM garbage collector.") + .setUnit("collections") + .setUpdater( + resultLongObserver -> { + for (int i = 0; i < garbageCollectors.size(); i++) { + resultLongObserver.observe( + garbageCollectors.get(i).getCollectionCount(), labelSets.get(i)); + } + }) + .build(); } private GarbageCollector() {} diff --git a/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/SpringBootSmokeTest.groovy b/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/SpringBootSmokeTest.groovy index 4f1b981d805f..fa948384ed25 100644 --- a/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/SpringBootSmokeTest.groovy +++ b/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/SpringBootSmokeTest.groovy @@ -63,6 +63,7 @@ class SpringBootSmokeTest extends SmokeTest { then: "JVM metrics are exported" def metrics = new MetricsInspector(waitForMetrics()) metrics.hasMetricsNamed("runtime.jvm.gc.collection") + metrics.hasMetricsNamed("runtime.jvm.gc.collection.count") metrics.hasMetricsNamed("runtime.jvm.memory.area") metrics.hasMetricsNamed("runtime.jvm.memory.pool")