Merge pull request #30832 from eddumelendez

* gh-30823:
  Auto-configure Micrometer's JvmInfoMetrics

Closes gh-30832
This commit is contained in:
Andy Wilkinson 2022-04-29 12:35:26 +01:00
commit fd7bb53180
3 changed files with 29 additions and 1 deletions

View File

@ -20,6 +20,7 @@ import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmHeapPressureMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmInfoMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics;
@ -34,6 +35,7 @@ import org.springframework.context.annotation.Bean;
* {@link EnableAutoConfiguration Auto-configuration} for JVM metrics.
*
* @author Stephane Nicoll
* @author Eddú Meléndez
* @since 2.1.0
*/
@AutoConfiguration(after = { MetricsAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class })
@ -71,4 +73,10 @@ public class JvmMetricsAutoConfiguration {
return new ClassLoaderMetrics();
}
@Bean
@ConditionalOnMissingBean
public JvmInfoMetrics jvmInfoMetrics() {
return new JvmInfoMetrics();
}
}

View File

@ -19,6 +19,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics;
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmHeapPressureMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmInfoMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics;
import org.junit.jupiter.api.Test;
@ -38,6 +39,7 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Andy Wilkinson
* @author Stephane Nicoll
* @author Eddú Meléndez
*/
class JvmMetricsAutoConfigurationTests {
@ -79,10 +81,17 @@ class JvmMetricsAutoConfigurationTests {
assertMetricsBeans().andThen((context) -> assertThat(context).hasBean("customClassLoaderMetrics")));
}
@Test
void allowsCustomJvmInfoMetricsToBeUsed() {
this.contextRunner.withUserConfiguration(CustomJvmInfoMetricsConfiguration.class)
.run(assertMetricsBeans().andThen((context) -> assertThat(context).hasBean("customJvmInfoMetrics")));
}
private ContextConsumer<AssertableApplicationContext> assertMetricsBeans() {
return (context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class)
.hasSingleBean(JvmHeapPressureMetrics.class).hasSingleBean(JvmMemoryMetrics.class)
.hasSingleBean(JvmThreadMetrics.class).hasSingleBean(ClassLoaderMetrics.class);
.hasSingleBean(JvmThreadMetrics.class).hasSingleBean(ClassLoaderMetrics.class)
.hasSingleBean(JvmInfoMetrics.class);
}
@Configuration(proxyBeanMethods = false)
@ -135,4 +144,14 @@ class JvmMetricsAutoConfigurationTests {
}
@Configuration(proxyBeanMethods = false)
static class CustomJvmInfoMetricsConfiguration {
@Bean
JvmInfoMetrics customJvmInfoMetrics() {
return new JvmInfoMetrics();
}
}
}

View File

@ -634,6 +634,7 @@ The following JVM metrics are provided:
* Statistics related to garbage collection
* Thread utilization
* The number of classes loaded and unloaded
* JVM version information