Merge pull request #12022 from Tommy Ludwig
* gh-12022: Polish “Auto-configure FileDescriptorMetrics” Auto-configure FileDescriptorMetrics Auto-configure ClassLoaderMetrics
This commit is contained in:
commit
42896823a2
|
@ -18,10 +18,12 @@ package org.springframework.boot.actuate.autoconfigure.metrics;
|
|||
|
||||
import io.micrometer.core.annotation.Timed;
|
||||
import io.micrometer.core.instrument.Clock;
|
||||
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics;
|
||||
import io.micrometer.core.instrument.binder.logging.LogbackMetrics;
|
||||
import io.micrometer.core.instrument.binder.system.FileDescriptorMetrics;
|
||||
import io.micrometer.core.instrument.binder.system.ProcessorMetrics;
|
||||
import io.micrometer.core.instrument.binder.system.UptimeMetrics;
|
||||
|
||||
|
@ -92,6 +94,12 @@ public class MetricsAutoConfiguration {
|
|||
return new JvmThreadMetrics();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public ClassLoaderMetrics classLoaderMetrics() {
|
||||
return new ClassLoaderMetrics();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
|
@ -119,6 +127,13 @@ public class MetricsAutoConfiguration {
|
|||
return new ProcessorMetrics();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnProperty(name = "management.metrics.binders.files.enabled", matchIfMissing = true)
|
||||
@ConditionalOnMissingBean
|
||||
public FileDescriptorMetrics fileDescriptorMetrics() {
|
||||
return new FileDescriptorMetrics();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -179,7 +179,13 @@
|
|||
"name": "management.info.git.mode",
|
||||
"defaultValue": "simple"
|
||||
},
|
||||
{
|
||||
{
|
||||
"name": "management.metrics.binders.files.enabled",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether to enable files metrics.",
|
||||
"defaultValue": true
|
||||
},
|
||||
{
|
||||
"name": "management.metrics.binders.integration.enabled",
|
||||
"type": "java.lang.Boolean",
|
||||
"description": "Whether to enable Spring Integration metrics.",
|
||||
|
|
|
@ -21,10 +21,12 @@ import java.util.List;
|
|||
import io.micrometer.core.instrument.Clock;
|
||||
import io.micrometer.core.instrument.MeterRegistry;
|
||||
import io.micrometer.core.instrument.binder.MeterBinder;
|
||||
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
|
||||
import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics;
|
||||
import io.micrometer.core.instrument.binder.logging.LogbackMetrics;
|
||||
import io.micrometer.core.instrument.binder.system.FileDescriptorMetrics;
|
||||
import io.micrometer.core.instrument.binder.system.ProcessorMetrics;
|
||||
import io.micrometer.core.instrument.binder.system.UptimeMetrics;
|
||||
import io.micrometer.core.instrument.composite.CompositeMeterRegistry;
|
||||
|
@ -94,7 +96,8 @@ public class MetricsAutoConfigurationTests {
|
|||
public void autoConfiguresJvmMetrics() {
|
||||
this.runner.run((context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class)
|
||||
.hasSingleBean(JvmMemoryMetrics.class)
|
||||
.hasSingleBean(JvmThreadMetrics.class));
|
||||
.hasSingleBean(JvmThreadMetrics.class)
|
||||
.hasSingleBean(ClassLoaderMetrics.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -102,7 +105,8 @@ public class MetricsAutoConfigurationTests {
|
|||
this.runner.withPropertyValues("management.metrics.binders.jvm.enabled=false")
|
||||
.run((context) -> assertThat(context).doesNotHaveBean(JvmGcMetrics.class)
|
||||
.doesNotHaveBean(JvmMemoryMetrics.class)
|
||||
.doesNotHaveBean(JvmThreadMetrics.class));
|
||||
.doesNotHaveBean(JvmThreadMetrics.class)
|
||||
.doesNotHaveBean(ClassLoaderMetrics.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -111,7 +115,8 @@ public class MetricsAutoConfigurationTests {
|
|||
.run((context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class)
|
||||
.hasBean("customJvmGcMetrics")
|
||||
.hasSingleBean(JvmMemoryMetrics.class)
|
||||
.hasSingleBean(JvmThreadMetrics.class));
|
||||
.hasSingleBean(JvmThreadMetrics.class)
|
||||
.hasSingleBean(ClassLoaderMetrics.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -120,7 +125,8 @@ public class MetricsAutoConfigurationTests {
|
|||
.run((context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class)
|
||||
.hasSingleBean(JvmMemoryMetrics.class)
|
||||
.hasBean("customJvmMemoryMetrics")
|
||||
.hasSingleBean(JvmThreadMetrics.class));
|
||||
.hasSingleBean(JvmThreadMetrics.class)
|
||||
.hasSingleBean(ClassLoaderMetrics.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -129,9 +135,20 @@ public class MetricsAutoConfigurationTests {
|
|||
.run((context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class)
|
||||
.hasSingleBean(JvmMemoryMetrics.class)
|
||||
.hasSingleBean(JvmThreadMetrics.class)
|
||||
.hasSingleBean(ClassLoaderMetrics.class)
|
||||
.hasBean("customJvmThreadMetrics"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void allowsCustomClassLoaderMetricsToBeUsed() {
|
||||
this.runner.withUserConfiguration(CustomClassLoaderMetricsConfiguration.class)
|
||||
.run((context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class)
|
||||
.hasSingleBean(JvmMemoryMetrics.class)
|
||||
.hasSingleBean(JvmThreadMetrics.class)
|
||||
.hasSingleBean(ClassLoaderMetrics.class)
|
||||
.hasBean("customClassLoaderMetrics"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void autoConfiguresLogbackMetrics() {
|
||||
this.runner.run(
|
||||
|
@ -194,6 +211,27 @@ public class MetricsAutoConfigurationTests {
|
|||
.hasBean("customProcessorMetrics"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void autoConfiguresFileDescriptorMetrics() {
|
||||
this.runner.run((context) -> assertThat(context)
|
||||
.hasSingleBean(FileDescriptorMetrics.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void allowsFileDescriptorMetricsToBeDisabled() {
|
||||
this.runner.withPropertyValues("management.metrics.binders.files.enabled=false")
|
||||
.run((context) -> assertThat(context)
|
||||
.doesNotHaveBean(FileDescriptorMetrics.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void allowsCustomFileDescriptorMetricsToBeUsed() {
|
||||
this.runner.withUserConfiguration(CustomFileDescriptorMetricsConfiguration.class)
|
||||
.run((context) -> assertThat(context)
|
||||
.hasSingleBean(FileDescriptorMetrics.class)
|
||||
.hasBean("customFileDescriptorMetrics"));
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class CustomClockConfiguration {
|
||||
|
||||
|
@ -256,6 +294,16 @@ public class MetricsAutoConfigurationTests {
|
|||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class CustomClassLoaderMetricsConfiguration {
|
||||
|
||||
@Bean
|
||||
ClassLoaderMetrics customClassLoaderMetrics() {
|
||||
return new ClassLoaderMetrics();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class CustomLogbackMetricsConfiguration {
|
||||
|
||||
|
@ -286,4 +334,14 @@ public class MetricsAutoConfigurationTests {
|
|||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class CustomFileDescriptorMetricsConfiguration {
|
||||
|
||||
@Bean
|
||||
FileDescriptorMetrics customFileDescriptorMetrics() {
|
||||
return new FileDescriptorMetrics();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1295,6 +1295,7 @@ content into your application. Rather, pick only the properties that you need.
|
|||
management.info.git.mode=simple # Mode to use to expose git information.
|
||||
|
||||
# METRICS
|
||||
management.metrics.binders.files.enabled=true # Whether to enable files metrics.
|
||||
management.metrics.binders.integration.enabled=true # Whether to enable Spring Integration metrics.
|
||||
management.metrics.binders.jvm.enabled=true # Whether to enable JVM metrics.
|
||||
management.metrics.binders.logback.enabled=true # Whether to enable Logback metrics.
|
||||
|
|
Loading…
Reference in New Issue