Skip to content

Commit fb82525

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

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;
@@ -209,6 +210,28 @@ public void allowsCustomProcessorMetricsToBeUsed() {
209210
.hasBean("customProcessorMetrics"));
210211
}
211212

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

@@ -311,4 +334,14 @@ ProcessorMetrics customProcessorMetrics() {
311334

312335
}
313336

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

0 commit comments

Comments
 (0)