Merge pull request #26001 from bono007
* pr/26001: Polish "Add auto-configuration for DiskSpaceMetrics" Add auto-configuration for DiskSpaceMetrics Closes gh-26001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,8 +16,11 @@
|
||||
|
||||
package org.springframework.boot.actuate.autoconfigure.metrics;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import io.micrometer.core.instrument.MeterRegistry;
|
||||
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.DiskSpaceMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics;
|
||||
@@ -66,4 +69,10 @@ public class JvmMetricsAutoConfiguration {
|
||||
return new ClassLoaderMetrics();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public DiskSpaceMetrics diskSpaceMetrics() {
|
||||
return new DiskSpaceMetrics(new File("."));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,7 +16,10 @@
|
||||
|
||||
package org.springframework.boot.actuate.autoconfigure.metrics;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.DiskSpaceMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics;
|
||||
@@ -24,7 +27,9 @@ import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.boot.test.context.runner.ContextConsumer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -35,6 +40,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
*
|
||||
* @author Andy Wilkinson
|
||||
* @author Stephane Nicoll
|
||||
* @author Chris Bono
|
||||
*/
|
||||
class JvmMetricsAutoConfigurationTests {
|
||||
|
||||
@@ -43,41 +49,43 @@ class JvmMetricsAutoConfigurationTests {
|
||||
|
||||
@Test
|
||||
void autoConfiguresJvmMetrics() {
|
||||
this.contextRunner.run(
|
||||
(context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class).hasSingleBean(JvmMemoryMetrics.class)
|
||||
.hasSingleBean(JvmThreadMetrics.class).hasSingleBean(ClassLoaderMetrics.class));
|
||||
this.contextRunner.run(assertMetricsBeans());
|
||||
}
|
||||
|
||||
@Test
|
||||
void allowsCustomJvmGcMetricsToBeUsed() {
|
||||
this.contextRunner.withUserConfiguration(CustomJvmGcMetricsConfiguration.class)
|
||||
.run((context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class).hasBean("customJvmGcMetrics")
|
||||
.hasSingleBean(JvmMemoryMetrics.class).hasSingleBean(JvmThreadMetrics.class)
|
||||
.hasSingleBean(ClassLoaderMetrics.class));
|
||||
.run(assertMetricsBeans().andThen((context) -> assertThat(context).hasBean("customJvmGcMetrics")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void allowsCustomJvmMemoryMetricsToBeUsed() {
|
||||
this.contextRunner.withUserConfiguration(CustomJvmMemoryMetricsConfiguration.class)
|
||||
.run((context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class)
|
||||
.hasSingleBean(JvmMemoryMetrics.class).hasBean("customJvmMemoryMetrics")
|
||||
.hasSingleBean(JvmThreadMetrics.class).hasSingleBean(ClassLoaderMetrics.class));
|
||||
.run(assertMetricsBeans().andThen((context) -> assertThat(context).hasBean("customJvmMemoryMetrics")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void allowsCustomJvmThreadMetricsToBeUsed() {
|
||||
this.contextRunner.withUserConfiguration(CustomJvmThreadMetricsConfiguration.class)
|
||||
.run((context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class)
|
||||
.hasSingleBean(JvmMemoryMetrics.class).hasSingleBean(JvmThreadMetrics.class)
|
||||
.hasSingleBean(ClassLoaderMetrics.class).hasBean("customJvmThreadMetrics"));
|
||||
.run(assertMetricsBeans().andThen((context) -> assertThat(context).hasBean("customJvmThreadMetrics")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void allowsCustomClassLoaderMetricsToBeUsed() {
|
||||
this.contextRunner.withUserConfiguration(CustomClassLoaderMetricsConfiguration.class)
|
||||
.run((context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class)
|
||||
.hasSingleBean(JvmMemoryMetrics.class).hasSingleBean(JvmThreadMetrics.class)
|
||||
.hasSingleBean(ClassLoaderMetrics.class).hasBean("customClassLoaderMetrics"));
|
||||
this.contextRunner.withUserConfiguration(CustomClassLoaderMetricsConfiguration.class).run(
|
||||
assertMetricsBeans().andThen((context) -> assertThat(context).hasBean("customClassLoaderMetrics")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void allowsCustomDiskSpaceMetricsToBeUsed() {
|
||||
this.contextRunner.withUserConfiguration(CustomDiskSpaceMetricsConfiguration.class)
|
||||
.run(assertMetricsBeans().andThen((context) -> assertThat(context).hasBean("customDiskSpaceMetrics")));
|
||||
}
|
||||
|
||||
private ContextConsumer<AssertableApplicationContext> assertMetricsBeans() {
|
||||
return (context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class).hasSingleBean(JvmMemoryMetrics.class)
|
||||
.hasSingleBean(JvmThreadMetrics.class).hasSingleBean(ClassLoaderMetrics.class)
|
||||
.hasSingleBean(DiskSpaceMetrics.class);
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@@ -120,4 +128,14 @@ class JvmMetricsAutoConfigurationTests {
|
||||
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
static class CustomDiskSpaceMetricsConfiguration {
|
||||
|
||||
@Bean
|
||||
DiskSpaceMetrics customDiskSpaceMetrics() {
|
||||
return new DiskSpaceMetrics(new File(System.getProperty("user.dir")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -554,7 +554,7 @@ In most situations, the out-of-the-box defaults will provide sensible metrics th
|
||||
[[actuator.metrics.supported.jvm]]
|
||||
==== JVM Metrics
|
||||
Auto-configuration will enable JVM Metrics using core Micrometer classes.
|
||||
JVM metrics are published under the `jvm.` meter name.
|
||||
JVM metrics are published under the `jvm.` and `disk.` meter names.
|
||||
|
||||
The following JVM metrics are provided:
|
||||
|
||||
@@ -562,6 +562,7 @@ The following JVM metrics are provided:
|
||||
* Statistics related to garbage collection
|
||||
* Threads utilization
|
||||
* The Number of classes loaded/unloaded
|
||||
* Disk space available
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user