Skip to content

Commit af50cd2

Browse files
author
Tommy Ludwig
committed
Auto-configure FileDescriptorMetrics
Auto-configures the FileDescriptorMetrics from Micrometer.
1 parent e3fc4bb commit af50cd2

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
2424
import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics;
2525
import io.micrometer.core.instrument.binder.logging.LogbackMetrics;
26+
import io.micrometer.core.instrument.binder.system.FileDescriptorMetrics;
2627
import io.micrometer.core.instrument.binder.system.ProcessorMetrics;
2728
import io.micrometer.core.instrument.binder.system.UptimeMetrics;
2829

@@ -126,6 +127,13 @@ public ProcessorMetrics processorMetrics() {
126127
return new ProcessorMetrics();
127128
}
128129

130+
@Bean
131+
@ConditionalOnProperty(name = "management.metrics.binders.fds.enabled", matchIfMissing = true)
132+
@ConditionalOnMissingBean
133+
public FileDescriptorMetrics fileDescriptorMetrics() {
134+
return new FileDescriptorMetrics();
135+
}
136+
129137
}
130138

131139
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfigurationTests.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
2727
import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics;
2828
import io.micrometer.core.instrument.binder.logging.LogbackMetrics;
29+
import io.micrometer.core.instrument.binder.system.FileDescriptorMetrics;
2930
import io.micrometer.core.instrument.binder.system.ProcessorMetrics;
3031
import io.micrometer.core.instrument.binder.system.UptimeMetrics;
3132
import io.micrometer.core.instrument.composite.CompositeMeterRegistry;
@@ -210,6 +211,28 @@ public void allowsCustomProcessorMetricsToBeUsed() {
210211
.hasBean("customProcessorMetrics"));
211212
}
212213

214+
@Test
215+
public void autoConfiguresFileDescriptorMetrics() {
216+
this.runner.run(
217+
(context) -> assertThat(context)
218+
.hasSingleBean(FileDescriptorMetrics.class));
219+
}
220+
221+
@Test
222+
public void allowsFileDescriptorMetricsToBeDisabled() {
223+
this.runner.withPropertyValues("management.metrics.binders.fds.enabled=false")
224+
.run((context) -> assertThat(context)
225+
.doesNotHaveBean(FileDescriptorMetrics.class));
226+
}
227+
228+
@Test
229+
public void allowsCustomFileDescriptorToBeUsed() {
230+
this.runner.withUserConfiguration(CustomFileDescriptorMetricsConfiguration.class)
231+
.run((context) -> assertThat(context)
232+
.hasSingleBean(FileDescriptorMetrics.class)
233+
.hasBean("customFileDescriptorMetrics"));
234+
}
235+
213236
@Configuration
214237
static class CustomClockConfiguration {
215238

@@ -312,4 +335,14 @@ ProcessorMetrics customProcessorMetrics() {
312335

313336
}
314337

338+
@Configuration
339+
static class CustomFileDescriptorMetricsConfiguration {
340+
341+
@Bean
342+
FileDescriptorMetrics customFileDescriptorMetrics() {
343+
return new FileDescriptorMetrics();
344+
}
345+
346+
}
347+
315348
}

0 commit comments

Comments
 (0)