Skip to content

Commit

Permalink
Relocate DiskSpace metrics to SystemMetricsAutoConfiguration
Browse files Browse the repository at this point in the history
Closes gh-27688
  • Loading branch information
snicoll committed Aug 16, 2021
1 parent 0d67a1a commit b65cc4d
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,8 @@

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;
Expand Down Expand Up @@ -69,10 +66,4 @@ public ClassLoaderMetrics classLoaderMetrics() {
return new ClassLoaderMetrics();
}

@Bean
@ConditionalOnMissingBean
public DiskSpaceMetrics diskSpaceMetrics() {
return new DiskSpaceMetrics(new File("."));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@

package org.springframework.boot.actuate.autoconfigure.metrics;

import java.io.File;

import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.binder.jvm.DiskSpaceMetrics;
import io.micrometer.core.instrument.binder.system.FileDescriptorMetrics;
import io.micrometer.core.instrument.binder.system.ProcessorMetrics;
import io.micrometer.core.instrument.binder.system.UptimeMetrics;
Expand Down Expand Up @@ -59,4 +62,10 @@ public FileDescriptorMetrics fileDescriptorMetrics() {
return new FileDescriptorMetrics();
}

@Bean
@ConditionalOnMissingBean
public DiskSpaceMetrics diskSpaceMetrics() {
return new DiskSpaceMetrics(new File("."));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@

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;
Expand All @@ -40,7 +37,6 @@
*
* @author Andy Wilkinson
* @author Stephane Nicoll
* @author Chris Bono
*/
class JvmMetricsAutoConfigurationTests {

Expand Down Expand Up @@ -76,16 +72,9 @@ void allowsCustomClassLoaderMetricsToBeUsed() {
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);
.hasSingleBean(JvmThreadMetrics.class).hasSingleBean(ClassLoaderMetrics.class);
}

@Configuration(proxyBeanMethods = false)
Expand Down Expand Up @@ -128,14 +117,4 @@ ClassLoaderMetrics customClassLoaderMetrics() {

}

@Configuration(proxyBeanMethods = false)
static class CustomDiskSpaceMetricsConfiguration {

@Bean
DiskSpaceMetrics customDiskSpaceMetrics() {
return new DiskSpaceMetrics(new File(System.getProperty("user.dir")));
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@

package org.springframework.boot.actuate.autoconfigure.metrics;

import java.io.File;

import io.micrometer.core.instrument.binder.jvm.DiskSpaceMetrics;
import io.micrometer.core.instrument.binder.system.FileDescriptorMetrics;
import io.micrometer.core.instrument.binder.system.ProcessorMetrics;
import io.micrometer.core.instrument.binder.system.UptimeMetrics;
Expand All @@ -34,6 +37,7 @@
*
* @author Andy Wilkinson
* @author Stephane Nicoll
* @author Chris Bono
*/
class SystemMetricsAutoConfigurationTests {

Expand Down Expand Up @@ -75,6 +79,18 @@ void allowsCustomFileDescriptorMetricsToBeUsed() {
.hasBean("customFileDescriptorMetrics"));
}

@Test
void autoConfiguresDiskSpaceMetrics() {
this.contextRunner.run((context) -> assertThat(context).hasSingleBean(DiskSpaceMetrics.class));
}

@Test
void allowsCustomDiskSpaceMetricsToBeUsed() {
this.contextRunner.withUserConfiguration(CustomDiskSpaceMetricsConfiguration.class)
.run((context) -> assertThat(context).hasSingleBean(DiskSpaceMetrics.class)
.hasBean("customDiskSpaceMetrics"));
}

@Configuration(proxyBeanMethods = false)
static class CustomUptimeMetricsConfiguration {

Expand Down Expand Up @@ -105,4 +121,14 @@ FileDescriptorMetrics customFileDescriptorMetrics() {

}

@Configuration(proxyBeanMethods = false)
static class CustomDiskSpaceMetricsConfiguration {

@Bean
DiskSpaceMetrics customDiskSpaceMetrics() {
return new DiskSpaceMetrics(new File(System.getProperty("user.dir")));
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -624,28 +624,28 @@ 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.` and `disk.` meter names.
JVM metrics are published under the `jvm.` meter name.

The following JVM metrics are provided:

* Various memory and buffer pool details
* Statistics related to garbage collection
* Threads utilization
* The Number of classes loaded/unloaded
* Disk space available



[[actuator.metrics.supported.system]]
==== System Metrics
Auto-configuration will enable system metrics using core Micrometer classes.
System metrics are published under the `system.` and `process.` meter names.
System metrics are published under the `system.`, `process.`, and `disk.` meter names.

The following system metrics are provided:

* CPU metrics
* File descriptor metrics
* Uptime metrics (both the amount of time the application has been running as well as a fixed gauge of the absolute start time)
* Disk space available



Expand Down

0 comments on commit b65cc4d

Please sign in to comment.