From f720b65dfc6a1d8968dd5625221ace58b0df5b12 Mon Sep 17 00:00:00 2001 From: izeye Date: Mon, 23 May 2022 19:49:54 +0900 Subject: [PATCH 1/2] Auto-configure JvmCompilationMetrics See gh-31151 --- .../metrics/JvmMetricsAutoConfiguration.java | 7 +++++++ .../JvmMetricsAutoConfigurationTests.java | 19 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.java index 7522d5d114..1ac29acea7 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.java @@ -18,6 +18,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics; +import io.micrometer.core.instrument.binder.jvm.JvmCompilationMetrics; import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics; import io.micrometer.core.instrument.binder.jvm.JvmHeapPressureMetrics; import io.micrometer.core.instrument.binder.jvm.JvmInfoMetrics; @@ -79,4 +80,10 @@ public class JvmMetricsAutoConfiguration { return new JvmInfoMetrics(); } + @Bean + @ConditionalOnMissingBean + public JvmCompilationMetrics jvmCompilationMetrics() { + return new JvmCompilationMetrics(); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfigurationTests.java index 95318dc5d8..8b2599863c 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfigurationTests.java @@ -17,6 +17,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics; import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics; +import io.micrometer.core.instrument.binder.jvm.JvmCompilationMetrics; import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics; import io.micrometer.core.instrument.binder.jvm.JvmHeapPressureMetrics; import io.micrometer.core.instrument.binder.jvm.JvmInfoMetrics; @@ -87,11 +88,17 @@ class JvmMetricsAutoConfigurationTests { .run(assertMetricsBeans().andThen((context) -> assertThat(context).hasBean("customJvmInfoMetrics"))); } + @Test + void allowsCustomJvmCompilationMetricsToBeUsed() { + this.contextRunner.withUserConfiguration(CustomJvmCompilationMetricsConfiguration.class).run( + assertMetricsBeans().andThen((context) -> assertThat(context).hasBean("customJvmCompilationMetrics"))); + } + private ContextConsumer assertMetricsBeans() { return (context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class) .hasSingleBean(JvmHeapPressureMetrics.class).hasSingleBean(JvmMemoryMetrics.class) .hasSingleBean(JvmThreadMetrics.class).hasSingleBean(ClassLoaderMetrics.class) - .hasSingleBean(JvmInfoMetrics.class); + .hasSingleBean(JvmInfoMetrics.class).hasSingleBean(JvmCompilationMetrics.class); } @Configuration(proxyBeanMethods = false) @@ -154,4 +161,14 @@ class JvmMetricsAutoConfigurationTests { } + @Configuration(proxyBeanMethods = false) + static class CustomJvmCompilationMetricsConfiguration { + + @Bean + JvmCompilationMetrics customJvmCompilationMetrics() { + return new JvmCompilationMetrics(); + } + + } + } From 90752e559a8df99b28b76a367e2cb6a6897eac2e Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Fri, 27 May 2022 10:18:31 +0100 Subject: [PATCH 2/2] Polish "Auto-configure JvmCompilationMetrics" See gh-31151 --- .../spring-boot-docs/src/docs/asciidoc/actuator/metrics.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/actuator/metrics.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/actuator/metrics.adoc index 49d75cc52a..4f617f2fbd 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/actuator/metrics.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/actuator/metrics.adoc @@ -676,6 +676,7 @@ The following JVM metrics are provided: * Thread utilization * The number of classes loaded and unloaded * JVM version information +* JIT compilation time