diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/CompositeMeterRegistryPostProcessor.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/CompositeMeterRegistryPostProcessor.java similarity index 98% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/CompositeMeterRegistryPostProcessor.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/CompositeMeterRegistryPostProcessor.java index 87838424d9..032eae5097 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/CompositeMeterRegistryPostProcessor.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/CompositeMeterRegistryPostProcessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.autoconfigure.metrics.export; +package org.springframework.boot.actuate.autoconfigure.metrics; import java.util.Arrays; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistriesConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistriesConfiguration.java deleted file mode 100644 index f189d39f7a..0000000000 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistriesConfiguration.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2012-2018 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.actuate.autoconfigure.metrics; - -import org.springframework.boot.actuate.autoconfigure.metrics.export.atlas.AtlasExportConfiguration; -import org.springframework.boot.actuate.autoconfigure.metrics.export.datadog.DatadogExportConfiguration; -import org.springframework.boot.actuate.autoconfigure.metrics.export.ganglia.GangliaExportConfiguration; -import org.springframework.boot.actuate.autoconfigure.metrics.export.graphite.GraphiteExportConfiguration; -import org.springframework.boot.actuate.autoconfigure.metrics.export.influx.InfluxExportConfiguration; -import org.springframework.boot.actuate.autoconfigure.metrics.export.jmx.JmxExportConfiguration; -import org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus.PrometheusExportConfiguration; -import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleExportConfiguration; -import org.springframework.boot.actuate.autoconfigure.metrics.export.statsd.StatsdExportConfiguration; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -/** - * Imports for registry configurations. - * - * @author Jon Schneider - */ -@Configuration -@Import({ AtlasExportConfiguration.class, DatadogExportConfiguration.class, - GangliaExportConfiguration.class, GraphiteExportConfiguration.class, - InfluxExportConfiguration.class, JmxExportConfiguration.class, - PrometheusExportConfiguration.class, SimpleExportConfiguration.class, - StatsdExportConfiguration.class }) -class MeterRegistriesConfiguration { - -} diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.java index 07783b95c8..8fb56173a8 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.java @@ -19,27 +19,21 @@ package org.springframework.boot.actuate.autoconfigure.metrics; import java.util.Collection; import io.micrometer.core.annotation.Timed; -import io.micrometer.core.instrument.Clock; -import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.binder.MeterBinder; import io.micrometer.core.instrument.config.MeterFilter; import org.springframework.beans.factory.ObjectProvider; -import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint; import org.springframework.boot.actuate.autoconfigure.metrics.amqp.RabbitMetricsConfiguration; import org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsConfiguration; -import org.springframework.boot.actuate.autoconfigure.metrics.export.CompositeMeterRegistryConfiguration; import org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsConfiguration; import org.springframework.boot.actuate.autoconfigure.metrics.reactive.server.WebFluxMetricsConfiguration; import org.springframework.boot.actuate.autoconfigure.metrics.web.client.RestTemplateMetricsConfiguration; import org.springframework.boot.actuate.autoconfigure.metrics.web.servlet.WebMvcMetricsConfiguration; -import org.springframework.boot.actuate.metrics.MetricsEndpoint; import org.springframework.boot.actuate.metrics.integration.SpringIntegrationMetrics; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.SearchStrategy; @@ -66,12 +60,16 @@ import org.springframework.integration.support.management.IntegrationManagementC @Import({ MeterBindersConfiguration.class, WebMvcMetricsConfiguration.class, WebFluxMetricsConfiguration.class, RestTemplateMetricsConfiguration.class, CacheMetricsConfiguration.class, DataSourcePoolMetricsConfiguration.class, - RabbitMetricsConfiguration.class, MeterRegistriesConfiguration.class, - CompositeMeterRegistryConfiguration.class }) + RabbitMetricsConfiguration.class }) @AutoConfigureAfter({ CacheAutoConfiguration.class, DataSourceAutoConfiguration.class, RabbitAutoConfiguration.class, RestTemplateAutoConfiguration.class }) public class MetricsAutoConfiguration { + @Bean + public static CompositeMeterRegistryPostProcessor compositeMeterRegistryPostProcessor() { + return new CompositeMeterRegistryPostProcessor(); + } + @Bean public static MeterRegistryPostProcessor meterRegistryPostProcessor( ObjectProvider> binders, @@ -83,20 +81,6 @@ public class MetricsAutoConfiguration { properties.isUseGlobalRegistry()); } - @Bean - @ConditionalOnBean(MeterRegistry.class) - @ConditionalOnMissingBean - @ConditionalOnEnabledEndpoint - public MetricsEndpoint metricsEndpoint(MeterRegistry registry) { - return new MetricsEndpoint(registry); - } - - @Bean - @ConditionalOnMissingBean - public Clock micrometerClock() { - return Clock.SYSTEM; - } - @Bean @Order(0) public PropertiesMeterFilter propertiesMeterFilter(MetricsProperties properties) { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsEndpointAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsEndpointAutoConfiguration.java new file mode 100644 index 0000000000..49f155fc56 --- /dev/null +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsEndpointAutoConfiguration.java @@ -0,0 +1,51 @@ +/* + * Copyright 2012-2018 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.actuate.autoconfigure.metrics; + +import io.micrometer.core.annotation.Timed; +import io.micrometer.core.instrument.MeterRegistry; + +import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint; +import org.springframework.boot.actuate.metrics.MetricsEndpoint; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * {@link EnableAutoConfiguration Auto-configuration} for {@link MetricsEndpoint}. + * + * @author Phillip Webb + * @since 2.0.0 + */ +@Configuration +@ConditionalOnClass(Timed.class) +@ConditionalOnBean(MeterRegistry.class) +@AutoConfigureAfter(MetricsAutoConfiguration.class) +public class MetricsEndpointAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + @ConditionalOnEnabledEndpoint + public MetricsEndpoint metricsEndpoint(MeterRegistry registry) { + return new MetricsEndpoint(registry); + } + +} diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/CompositeMeterRegistryConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/CompositeMeterRegistryConfiguration.java deleted file mode 100644 index babed24cd0..0000000000 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/CompositeMeterRegistryConfiguration.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2012-2018 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.actuate.autoconfigure.metrics.export; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * Conditionally build a composite registry when more than one registry present. - * - * @author Jon Schneider - * @since 2.0.0 - */ -@Configuration -public class CompositeMeterRegistryConfiguration { - - @Bean - public static CompositeMeterRegistryPostProcessor compositeMeterRegistryPostProcessor() { - return new CompositeMeterRegistryPostProcessor(); - } - -} diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasExportConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasMetricsExportAutoConfiguration.java similarity index 76% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasExportConfiguration.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasMetricsExportAutoConfiguration.java index 62f61645ba..1ced72749a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasExportConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasMetricsExportAutoConfiguration.java @@ -20,24 +20,33 @@ import com.netflix.spectator.atlas.AtlasConfig; import io.micrometer.atlas.AtlasMeterRegistry; import io.micrometer.core.instrument.Clock; +import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * Configuration for exporting metrics to Atlas. + * {@link EnableAutoConfiguration Auto-configuration} for exporting metrics to Atlas. * * @author Jon Schneider * @author Andy Wilkinson * @since 2.0.0 */ @Configuration +@AutoConfigureBefore(MetricsAutoConfiguration.class) @ConditionalOnClass(AtlasMeterRegistry.class) @EnableConfigurationProperties(AtlasProperties.class) -public class AtlasExportConfiguration { +public class AtlasMetricsExportAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public Clock micrometerClock() { + return Clock.SYSTEM; + } @Bean @ConditionalOnMissingBean(AtlasConfig.class) @@ -46,7 +55,7 @@ public class AtlasExportConfiguration { } @Bean - @ConditionalOnProperty(value = "management.metrics.export.atlas.enabled", matchIfMissing = true) + @ConditionalOnMissingBean public AtlasMeterRegistry atlasMeterRegistry(AtlasConfig atlasConfig, Clock clock) { return new AtlasMeterRegistry(atlasConfig, clock); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasProperties.java index 2a3a6ca76e..8edede82a7 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasProperties.java @@ -18,7 +18,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.atlas; import java.time.Duration; -import org.springframework.boot.actuate.autoconfigure.metrics.export.StepRegistryProperties; +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryProperties; import org.springframework.boot.context.properties.ConfigurationProperties; /** diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasPropertiesConfigAdapter.java index 2116ff62e7..ea6146d568 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasPropertiesConfigAdapter.java @@ -20,7 +20,7 @@ import java.time.Duration; import com.netflix.spectator.atlas.AtlasConfig; -import org.springframework.boot.actuate.autoconfigure.metrics.export.PropertiesConfigAdapter; +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter; /** * Adapter to convert {@link AtlasProperties} to an {@link AtlasConfig}. diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogExportConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogMetricsExportAutoConfiguration.java similarity index 77% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogExportConfiguration.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogMetricsExportAutoConfiguration.java index f692d7faaa..7fd0b28818 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogExportConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogMetricsExportAutoConfiguration.java @@ -20,6 +20,9 @@ import io.micrometer.core.instrument.Clock; import io.micrometer.datadog.DatadogConfig; import io.micrometer.datadog.DatadogMeterRegistry; +import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -28,16 +31,23 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * Configuration for exporting metrics to Datadog. + * {@link EnableAutoConfiguration Auto-configuration} for exporting metrics to Datadog. * * @author Jon Schneider * @since 2.0.0 */ @Configuration +@AutoConfigureBefore(MetricsAutoConfiguration.class) @ConditionalOnClass(DatadogMeterRegistry.class) @ConditionalOnProperty("management.metrics.export.datadog.api-key") @EnableConfigurationProperties(DatadogProperties.class) -public class DatadogExportConfiguration { +public class DatadogMetricsExportAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public Clock micrometerClock() { + return Clock.SYSTEM; + } @Bean @ConditionalOnMissingBean @@ -46,7 +56,7 @@ public class DatadogExportConfiguration { } @Bean - @ConditionalOnProperty(value = "management.metrics.export.datadog.enabled", matchIfMissing = true) + @ConditionalOnMissingBean public DatadogMeterRegistry datadogMeterRegistry(DatadogConfig datadogConfig, Clock clock) { return new DatadogMeterRegistry(datadogConfig, clock); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogProperties.java index 55d4c704aa..ff96bef510 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogProperties.java @@ -16,7 +16,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.datadog; -import org.springframework.boot.actuate.autoconfigure.metrics.export.StepRegistryProperties; +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryProperties; import org.springframework.boot.context.properties.ConfigurationProperties; /** diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapter.java index 36fb28c0d0..52132991c0 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapter.java @@ -18,7 +18,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.datadog; import io.micrometer.datadog.DatadogConfig; -import org.springframework.boot.actuate.autoconfigure.metrics.export.StepRegistryPropertiesConfigAdapter; +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapter; /** * Adapter to convert {@link DatadogProperties} to a {@link DatadogConfig}. diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaExportConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaMetricsExportAutoConfiguration.java similarity index 78% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaExportConfiguration.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaMetricsExportAutoConfiguration.java index 45714feafd..17db9aac0a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaExportConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaMetricsExportAutoConfiguration.java @@ -21,23 +21,32 @@ import io.micrometer.core.instrument.util.HierarchicalNameMapper; import io.micrometer.ganglia.GangliaConfig; import io.micrometer.ganglia.GangliaMeterRegistry; +import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * Configuration for exporting metrics to Ganglia. + * {@link EnableAutoConfiguration Auto-configuration} for exporting metrics to Ganglia. * * @author Jon Schneider * @since 2.0.0 */ @Configuration +@AutoConfigureBefore(MetricsAutoConfiguration.class) @ConditionalOnClass(GangliaMeterRegistry.class) @EnableConfigurationProperties(GangliaProperties.class) -public class GangliaExportConfiguration { +public class GangliaMetricsExportAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public Clock micrometerClock() { + return Clock.SYSTEM; + } @Bean @ConditionalOnMissingBean @@ -46,7 +55,7 @@ public class GangliaExportConfiguration { } @Bean - @ConditionalOnProperty(value = "management.metrics.export.ganglia.enabled", matchIfMissing = true) + @ConditionalOnMissingBean public GangliaMeterRegistry gangliaMeterRegistry(GangliaConfig gangliaConfig, HierarchicalNameMapper nameMapper, Clock clock) { return new GangliaMeterRegistry(gangliaConfig, clock, nameMapper); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapter.java index f1e7868235..8bd7ecc1d8 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapter.java @@ -22,7 +22,7 @@ import java.util.concurrent.TimeUnit; import info.ganglia.gmetric4j.gmetric.GMetric; import io.micrometer.ganglia.GangliaConfig; -import org.springframework.boot.actuate.autoconfigure.metrics.export.PropertiesConfigAdapter; +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter; /** * Adapter to convert {@link GangliaProperties} to a {@link GangliaConfig}. diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphiteExportConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphiteMetricsExportAutoConfiguration.java similarity index 78% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphiteExportConfiguration.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphiteMetricsExportAutoConfiguration.java index ab9c6b8364..860a47b7e3 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphiteExportConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphiteMetricsExportAutoConfiguration.java @@ -21,23 +21,32 @@ import io.micrometer.core.instrument.util.HierarchicalNameMapper; import io.micrometer.graphite.GraphiteConfig; import io.micrometer.graphite.GraphiteMeterRegistry; +import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * Configuration for exporting metrics to Graphite. + * {@link EnableAutoConfiguration Auto-configuration} for exporting metrics to Graphite. * * @author Jon Schneider * @since 2.0.0 */ @Configuration +@AutoConfigureBefore(MetricsAutoConfiguration.class) @ConditionalOnClass(GraphiteMeterRegistry.class) @EnableConfigurationProperties(GraphiteProperties.class) -public class GraphiteExportConfiguration { +public class GraphiteMetricsExportAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public Clock micrometerClock() { + return Clock.SYSTEM; + } @Bean @ConditionalOnMissingBean @@ -46,7 +55,7 @@ public class GraphiteExportConfiguration { } @Bean - @ConditionalOnProperty(value = "management.metrics.export.graphite.enabled", matchIfMissing = true) + @ConditionalOnMissingBean public GraphiteMeterRegistry graphiteMeterRegistry(GraphiteConfig graphiteConfig, HierarchicalNameMapper nameMapper, Clock clock) { return new GraphiteMeterRegistry(graphiteConfig, clock, nameMapper); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapter.java index af1b88599f..62ef4a7516 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapter.java @@ -22,7 +22,7 @@ import java.util.concurrent.TimeUnit; import io.micrometer.graphite.GraphiteConfig; import io.micrometer.graphite.GraphiteProtocol; -import org.springframework.boot.actuate.autoconfigure.metrics.export.PropertiesConfigAdapter; +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter; /** * Adapter to convert {@link GraphiteProperties} to a {@link GraphiteConfig}. diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxExportConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxMetricsExportAutoConfiguration.java similarity index 76% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxExportConfiguration.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxMetricsExportAutoConfiguration.java index b1afbf54ab..c298662f3a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxExportConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxMetricsExportAutoConfiguration.java @@ -20,23 +20,32 @@ import io.micrometer.core.instrument.Clock; import io.micrometer.influx.InfluxConfig; import io.micrometer.influx.InfluxMeterRegistry; +import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * Configuration for exporting metrics to Influx. + * {@link EnableAutoConfiguration Auto-configuration} for exporting metrics to Influx. * * @author Jon Schneider * @since 2.0.0 */ @Configuration +@AutoConfigureBefore(MetricsAutoConfiguration.class) @ConditionalOnClass(InfluxMeterRegistry.class) @EnableConfigurationProperties(InfluxProperties.class) -public class InfluxExportConfiguration { +public class InfluxMetricsExportAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public Clock micrometerClock() { + return Clock.SYSTEM; + } @Bean @ConditionalOnMissingBean(InfluxConfig.class) @@ -45,7 +54,7 @@ public class InfluxExportConfiguration { } @Bean - @ConditionalOnProperty(value = "management.metrics.export.influx.enabled", matchIfMissing = true) + @ConditionalOnMissingBean public InfluxMeterRegistry influxMeterRegistry(InfluxConfig influxConfig, Clock clock) { return new InfluxMeterRegistry(influxConfig, clock); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxProperties.java index 1bc883a544..39131b9e51 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxProperties.java @@ -18,7 +18,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.influx; import io.micrometer.influx.InfluxConsistency; -import org.springframework.boot.actuate.autoconfigure.metrics.export.StepRegistryProperties; +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryProperties; import org.springframework.boot.context.properties.ConfigurationProperties; /** diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapter.java index 1df1c3bbec..0036002a3d 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapter.java @@ -19,7 +19,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.influx; import io.micrometer.influx.InfluxConfig; import io.micrometer.influx.InfluxConsistency; -import org.springframework.boot.actuate.autoconfigure.metrics.export.StepRegistryPropertiesConfigAdapter; +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapter; /** * Adapter to convert {@link InfluxProperties} to an {@link InfluxConfig}. diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxExportConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxMetricsExportAutoConfiguration.java similarity index 77% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxExportConfiguration.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxMetricsExportAutoConfiguration.java index 655dea9a06..e80f84f8ec 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxExportConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxMetricsExportAutoConfiguration.java @@ -21,23 +21,32 @@ import io.micrometer.core.instrument.util.HierarchicalNameMapper; import io.micrometer.jmx.JmxConfig; import io.micrometer.jmx.JmxMeterRegistry; +import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * Configuration for exporting metrics to JMX. + * {@link EnableAutoConfiguration Auto-configuration} for exporting metrics to JMX. * * @author Jon Schneider * @since 2.0.0 */ @Configuration +@AutoConfigureBefore(MetricsAutoConfiguration.class) @ConditionalOnClass(JmxMeterRegistry.class) @EnableConfigurationProperties(JmxProperties.class) -public class JmxExportConfiguration { +public class JmxMetricsExportAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public Clock micrometerClock() { + return Clock.SYSTEM; + } @Bean @ConditionalOnMissingBean @@ -46,7 +55,7 @@ public class JmxExportConfiguration { } @Bean - @ConditionalOnProperty(value = "management.metrics.export.jmx.enabled", matchIfMissing = true) + @ConditionalOnMissingBean public JmxMeterRegistry jmxMeterRegistry(JmxConfig config, HierarchicalNameMapper nameMapper, Clock clock) { return new JmxMeterRegistry(config, clock, nameMapper); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxPropertiesConfigAdapter.java index db39ef2824..b42a3f6761 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxPropertiesConfigAdapter.java @@ -20,7 +20,7 @@ import java.time.Duration; import io.micrometer.jmx.JmxConfig; -import org.springframework.boot.actuate.autoconfigure.metrics.export.PropertiesConfigAdapter; +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter; /** * Adapter to convert {@link JmxProperties} to a {@link JmxConfig}. diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusExportConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfiguration.java similarity index 81% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusExportConfiguration.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfiguration.java index b9f0f680d6..8f9689dbc2 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusExportConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfiguration.java @@ -21,25 +21,34 @@ import io.micrometer.prometheus.PrometheusConfig; import io.micrometer.prometheus.PrometheusMeterRegistry; import io.prometheus.client.CollectorRegistry; +import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration; import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * Configuration for exporting metrics to Prometheus. + * {@link EnableAutoConfiguration Auto-configuration} for exporting metrics to Prometheus. * * @since 2.0.0 * @author Jon Schneider */ @Configuration +@AutoConfigureBefore(MetricsAutoConfiguration.class) @ConditionalOnClass(PrometheusMeterRegistry.class) @EnableConfigurationProperties(PrometheusProperties.class) -public class PrometheusExportConfiguration { +public class PrometheusMetricsExportAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public Clock micrometerClock() { + return Clock.SYSTEM; + } @Bean @ConditionalOnMissingBean @@ -48,7 +57,7 @@ public class PrometheusExportConfiguration { } @Bean - @ConditionalOnProperty(value = "management.metrics.export.prometheus.enabled", matchIfMissing = true) + @ConditionalOnMissingBean public PrometheusMeterRegistry prometheusMeterRegistry( PrometheusConfig prometheusConfig, CollectorRegistry collectorRegistry, Clock clock) { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapter.java index c9af83c62a..4f7615bde2 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapter.java @@ -20,7 +20,7 @@ import java.time.Duration; import io.micrometer.prometheus.PrometheusConfig; -import org.springframework.boot.actuate.autoconfigure.metrics.export.PropertiesConfigAdapter; +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter; /** * Adapter to convert {@link PrometheusProperties} to a {@link PrometheusConfig}. diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/PropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/PropertiesConfigAdapter.java similarity index 98% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/PropertiesConfigAdapter.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/PropertiesConfigAdapter.java index 5ca634b6cc..e5c239d893 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/PropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/PropertiesConfigAdapter.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.autoconfigure.metrics.export; +package org.springframework.boot.actuate.autoconfigure.metrics.export.properties; import java.util.function.Function; import java.util.function.Supplier; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/StepRegistryProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/StepRegistryProperties.java similarity index 99% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/StepRegistryProperties.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/StepRegistryProperties.java index 8488b1e769..bc04abf3df 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/StepRegistryProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/StepRegistryProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.autoconfigure.metrics.export; +package org.springframework.boot.actuate.autoconfigure.metrics.export.properties; import java.time.Duration; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/StepRegistryPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/StepRegistryPropertiesConfigAdapter.java similarity index 99% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/StepRegistryPropertiesConfigAdapter.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/StepRegistryPropertiesConfigAdapter.java index bef5260247..eb9de5f020 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/StepRegistryPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/StepRegistryPropertiesConfigAdapter.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.autoconfigure.metrics.export; +package org.springframework.boot.actuate.autoconfigure.metrics.export.properties; import java.time.Duration; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/package-info.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/package-info.java similarity index 81% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/package-info.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/package-info.java index 25d5b52c5c..48a9f61578 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/package-info.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2017 the original author or authors. + * Copyright 2012-2018 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. @@ -15,6 +15,6 @@ */ /** - * Core classes for exporting actuator metrics. + * Base properties and adapters used when exporting actuator metrics. */ -package org.springframework.boot.actuate.autoconfigure.metrics.export; +package org.springframework.boot.actuate.autoconfigure.metrics.export.properties; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimpleExportConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimpleMetricsExportAutoConfiguration.java similarity index 67% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimpleExportConfiguration.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimpleMetricsExportAutoConfiguration.java index 522df44e06..08dd39ba3a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimpleExportConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimpleMetricsExportAutoConfiguration.java @@ -21,25 +21,37 @@ import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.simple.SimpleConfig; import io.micrometer.core.instrument.simple.SimpleMeterRegistry; +import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * Configuration for exporting metrics to a {@link SimpleMeterRegistry}. + * {@link EnableAutoConfiguration Auto-configuration} for exporting metrics to a + * {@link SimpleMeterRegistry}. * * @author Jon Schneider * @since 2.0.0 */ @Configuration +@AutoConfigureAfter(MetricsAutoConfiguration.class) +@AutoConfigureBefore(MetricsEndpointAutoConfiguration.class) @EnableConfigurationProperties(SimpleProperties.class) -public class SimpleExportConfiguration { +@ConditionalOnMissingBean(MeterRegistry.class) +public class SimpleMetricsExportAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public Clock micrometerClock() { + return Clock.SYSTEM; + } @Bean - @ConditionalOnProperty(value = "management.metrics.export.simple.enabled", matchIfMissing = true) - @ConditionalOnMissingBean(MeterRegistry.class) public SimpleMeterRegistry simpleMeterRegistry(SimpleConfig config, Clock clock) { return new SimpleMeterRegistry(config, clock); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimplePropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimplePropertiesConfigAdapter.java index d51c5f48c4..c46efe95d9 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimplePropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimplePropertiesConfigAdapter.java @@ -21,7 +21,7 @@ import java.time.Duration; import io.micrometer.core.instrument.simple.CountingMode; import io.micrometer.core.instrument.simple.SimpleConfig; -import org.springframework.boot.actuate.autoconfigure.metrics.export.PropertiesConfigAdapter; +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter; /** * Adapter to convert {@link SimpleProperties} to a {@link SimpleConfig}. diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdExportConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdMetricsExportAutoConfiguration.java similarity index 79% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdExportConfiguration.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdMetricsExportAutoConfiguration.java index b265b23d8e..38065ffb3e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdExportConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdMetricsExportAutoConfiguration.java @@ -21,23 +21,32 @@ import io.micrometer.core.instrument.util.HierarchicalNameMapper; import io.micrometer.statsd.StatsdConfig; import io.micrometer.statsd.StatsdMeterRegistry; +import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * Configuration for exporting metrics to StatsD. + * {@link EnableAutoConfiguration Auto-configuration} for exporting metrics to StatsD. * * @author Jon Schneider * @since 2.0.0 */ @Configuration +@AutoConfigureBefore(MetricsAutoConfiguration.class) @ConditionalOnClass(StatsdMeterRegistry.class) @EnableConfigurationProperties(StatsdProperties.class) -public class StatsdExportConfiguration { +public class StatsdMetricsExportAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public Clock micrometerClock() { + return Clock.SYSTEM; + } @Bean @ConditionalOnMissingBean(StatsdConfig.class) @@ -46,7 +55,6 @@ public class StatsdExportConfiguration { } @Bean - @ConditionalOnProperty(value = "management.metrics.export.statsd.enabled", matchIfMissing = true) public StatsdMeterRegistry statsdMeterRegistry(StatsdConfig statsdConfig, HierarchicalNameMapper hierarchicalNameMapper, Clock clock) { return new StatsdMeterRegistry(statsdConfig, hierarchicalNameMapper, clock); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java index 839705173f..3c48bbea21 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java @@ -21,7 +21,7 @@ import java.time.Duration; import io.micrometer.statsd.StatsdConfig; import io.micrometer.statsd.StatsdFlavor; -import org.springframework.boot.actuate.autoconfigure.metrics.export.PropertiesConfigAdapter; +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter; /** * Adapter to convert {@link StatsdProperties} to a {@link StatsdConfig}. diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 195b51d52f..192146c0d9 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -203,12 +203,6 @@ "description": "Instrument all available caches.", "defaultValue": true }, - { - "name": "management.metrics.export.jmx.enabled", - "type": "java.lang.Boolean", - "description": "Whether exporting of metrics to JMX is enabled.", - "defaultValue": true - }, { "name": "management.metrics.jdbc.instrument", "type": "java.lang.Boolean", diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories index 16075d078d..962f19e19e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories @@ -32,6 +32,16 @@ org.springframework.boot.actuate.autoconfigure.mail.MailHealthIndicatorAutoConfi org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration,\ +org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration,\ +org.springframework.boot.actuate.autoconfigure.metrics.export.atlas.AtlasMetricsExportAutoConfiguration,\ +org.springframework.boot.actuate.autoconfigure.metrics.export.datadog.DatadogMetricsExportAutoConfiguration,\ +org.springframework.boot.actuate.autoconfigure.metrics.export.ganglia.GangliaMetricsExportAutoConfiguration,\ +org.springframework.boot.actuate.autoconfigure.metrics.export.graphite.GraphiteMetricsExportAutoConfiguration,\ +org.springframework.boot.actuate.autoconfigure.metrics.export.influx.InfluxMetricsExportAutoConfiguration,\ +org.springframework.boot.actuate.autoconfigure.metrics.export.jmx.JmxMetricsExportAutoConfiguration,\ +org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus.PrometheusMetricsExportAutoConfiguration,\ +org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration,\ +org.springframework.boot.actuate.autoconfigure.metrics.export.statsd.StatsdMetricsExportAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.mongo.MongoHealthIndicatorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.neo4j.Neo4jHealthIndicatorAutoConfiguration,\ org.springframework.boot.actuate.autoconfigure.redis.RedisHealthIndicatorAutoConfiguration,\ diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/SpringApplicationHierarchyTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/SpringApplicationHierarchyTests.java index 2099341639..0e761b6954 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/SpringApplicationHierarchyTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/SpringApplicationHierarchyTests.java @@ -19,7 +19,7 @@ package org.springframework.boot.actuate.autoconfigure; import org.junit.After; import org.junit.Test; -import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.export.jmx.JmxMetricsExportAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration; import org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration; @@ -30,6 +30,7 @@ import org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfigurat import org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration; +import org.springframework.boot.autoconfigure.elasticsearch.jest.JestAutoConfiguration; import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.test.util.ApplicationContextTestUtils; @@ -53,14 +54,16 @@ public class SpringApplicationHierarchyTests { public void testParent() { SpringApplicationBuilder builder = new SpringApplicationBuilder(Child.class); builder.parent(Parent.class); - this.context = builder.run("--server.port=0"); + this.context = builder.run("--server.port=0", + "--management.metrics.use-global-registry=false"); } @Test public void testChild() { SpringApplicationBuilder builder = new SpringApplicationBuilder(Parent.class); builder.child(Child.class); - this.context = builder.run("--server.port=0"); + this.context = builder.run("--server.port=0", + "--management.metrics.use-global-registry=false"); } @EnableAutoConfiguration(exclude = { ElasticsearchDataAutoConfiguration.class, @@ -69,7 +72,8 @@ public class SpringApplicationHierarchyTests { MongoDataAutoConfiguration.class, Neo4jDataAutoConfiguration.class, Neo4jRepositoriesAutoConfiguration.class, RedisAutoConfiguration.class, RedisRepositoriesAutoConfiguration.class, FlywayAutoConfiguration.class, - MetricsAutoConfiguration.class }, excludeName = { + JestAutoConfiguration.class, + JmxMetricsExportAutoConfiguration.class }, excludeName = { "org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration" }) public static class Child { @@ -81,7 +85,8 @@ public class SpringApplicationHierarchyTests { MongoDataAutoConfiguration.class, Neo4jDataAutoConfiguration.class, Neo4jRepositoriesAutoConfiguration.class, RedisAutoConfiguration.class, RedisRepositoriesAutoConfiguration.class, FlywayAutoConfiguration.class, - MetricsAutoConfiguration.class }, excludeName = { + JestAutoConfiguration.class, + JmxMetricsExportAutoConfiguration.class }, excludeName = { "org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration" }) public static class Parent { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/CompositeMeterRegistryPostProcessorTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/CompositeMeterRegistryPostProcessorTests.java similarity index 98% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/CompositeMeterRegistryPostProcessorTests.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/CompositeMeterRegistryPostProcessorTests.java index 9e26fad7f6..91c371f2fb 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/CompositeMeterRegistryPostProcessorTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/CompositeMeterRegistryPostProcessorTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.autoconfigure.metrics.export; +package org.springframework.boot.actuate.autoconfigure.metrics; import io.micrometer.core.instrument.Clock; import io.micrometer.core.instrument.MeterRegistry; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryCustomizerTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryCustomizerTests.java index f0253652c6..e21ad0c620 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryCustomizerTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryCustomizerTests.java @@ -20,6 +20,7 @@ import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.MeterRegistry.Config; import org.junit.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfigurationTests.java index 2806662a55..6790ca2754 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfigurationTests.java @@ -21,14 +21,24 @@ import java.util.UUID; import javax.sql.DataSource; import io.micrometer.core.instrument.MeterRegistry; +import io.micrometer.core.instrument.MockClock; +import io.micrometer.core.instrument.composite.CompositeMeterRegistry; +import io.micrometer.core.instrument.simple.SimpleConfig; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; +import io.micrometer.graphite.GraphiteMeterRegistry; +import io.micrometer.jmx.JmxMeterRegistry; import org.junit.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.graphite.GraphiteMetricsExportAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.export.jmx.JmxMetricsExportAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; import static org.assertj.core.api.Assertions.assertThat; @@ -114,6 +124,73 @@ public class MetricsAutoConfigurationTests { }); } + /** + * The simple registry is off by default UNLESS there is no other registry + * implementation on the classpath, in which case it is on. + */ + @Test + public void simpleWithNoCompositeCreated() { + this.contextRunner + .run((context) -> assertThat(context.getBean(MeterRegistry.class)) + .isInstanceOf(SimpleMeterRegistry.class)); + } + + /** + * An empty composite is created in the absence of any other registry implementation. + * This effectively no-ops instrumentation code throughout the application. + */ + @Test + public void emptyCompositeCreated() { + new ApplicationContextRunner().with(MetricsRun.limitedTo()).run((context) -> { + MeterRegistry registry = context.getBean(MeterRegistry.class); + assertThat(registry).isInstanceOf(CompositeMeterRegistry.class); + assertThat(((CompositeMeterRegistry) registry).getRegistries()).isEmpty(); + }); + } + + @Test + public void noCompositeCreatedWhenSingleImplementationIsEnabled() { + new ApplicationContextRunner() + .with(MetricsRun.limitedTo(GraphiteMetricsExportAutoConfiguration.class)) + .run((context) -> assertThat(context.getBean(MeterRegistry.class)) + .isInstanceOf(GraphiteMeterRegistry.class)); + } + + @Test + public void noCompositeCreatedWhenMultipleRegistriesButOneMarkedAsPrimary() { + new ApplicationContextRunner() + .with(MetricsRun.limitedTo(GraphiteMetricsExportAutoConfiguration.class, + JmxMetricsExportAutoConfiguration.class)) + .withUserConfiguration(PrimarySimpleMeterRegistryConfiguration.class) + .run((context) -> assertThat(context.getBean(MeterRegistry.class)) + .isInstanceOf(SimpleMeterRegistry.class)); + } + + @Test + public void compositeCreatedWhenMultipleImplementationsAreEnabled() { + new ApplicationContextRunner() + .with(MetricsRun.limitedTo(GraphiteMetricsExportAutoConfiguration.class, + JmxMetricsExportAutoConfiguration.class)) + .run((context) -> { + MeterRegistry registry = context.getBean(MeterRegistry.class); + assertThat(registry).isInstanceOf(CompositeMeterRegistry.class); + assertThat(((CompositeMeterRegistry) registry).getRegistries()) + .hasAtLeastOneElementOfType(GraphiteMeterRegistry.class) + .hasAtLeastOneElementOfType(JmxMeterRegistry.class); + }); + } + + @Configuration + static class PrimarySimpleMeterRegistryConfiguration { + + @Primary + @Bean + public MeterRegistry simpleMeterRegistry() { + return new SimpleMeterRegistry(SimpleConfig.DEFAULT, new MockClock()); + } + + } + @Configuration static class TwoDataSourcesConfiguration { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsRun.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsRun.java deleted file mode 100644 index d83017a729..0000000000 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsRun.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2012-2018 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.actuate.autoconfigure.metrics; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; -import java.util.function.Function; - -import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; - -/** - * Additional metrics configuration and settings that can be applied to a - * {@link ApplicationContextRunner} when running a metrics test. - * - * @author Jon Schneider - * @author Phillip Webb - */ -public final class MetricsRun { - - private static final Set IMPLEMENTATIONS = Collections - .unmodifiableSet(new LinkedHashSet<>(Arrays.asList("atlas", "datadog", - "ganglia", "graphite", "influx", "jmx", "prometheus", "statsd", - "newrelic", "signalfx", "wavefront", "simple"))); - - private MetricsRun() { - } - - /** - * Return a function that configures the run to be limited to the {@code simple} - * implementation. - * @return the function to apply - */ - public static Function simple() { - return limitedTo("simple"); - } - - /** - * Return a function that configures the run to be limited to the specified - * implementations. - * @param implementations the implementations to include - * @return the function to apply - */ - public static Function limitedTo( - String... implementations) { - return (contextRunner) -> apply(contextRunner, implementations); - } - - private static ApplicationContextRunner apply(ApplicationContextRunner contextRunner, - String[] implementations) { - return contextRunner.withPropertyValues(getPropertyValues(implementations)) - .withConfiguration(AutoConfigurations.of(MetricsAutoConfiguration.class)); - } - - private static String[] getPropertyValues(String[] implementations) { - List propertyValues = new ArrayList<>(); - propertyValues.add("management.metrics.use-global-registry=false"); - List keep = Arrays.asList(implementations); - IMPLEMENTATIONS.stream() - .filter((implementation) -> !keep.contains(implementation)) - .map(MetricsRun::disableExport).forEach(propertyValues::add); - return propertyValues.toArray(new String[0]); - } - - private static String disableExport(String implementation) { - return "management.metrics.export." + implementation + ".enabled=false"; - } - -} diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsConfigurationTests.java index 6c101c12e0..4a32aeb763 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsConfigurationTests.java @@ -19,7 +19,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics.amqp; import io.micrometer.core.instrument.MeterRegistry; import org.junit.Test; -import org.springframework.boot.actuate.autoconfigure.metrics.MetricsRun; +import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/cache/CacheMetricsConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/cache/CacheMetricsConfigurationTests.java index a57ce95484..b71ac47248 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/cache/CacheMetricsConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/cache/CacheMetricsConfigurationTests.java @@ -19,7 +19,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics.cache; import io.micrometer.core.instrument.MeterRegistry; import org.junit.Test; -import org.springframework.boot.actuate.autoconfigure.metrics.MetricsRun; +import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/CompositeMeterRegistryConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/CompositeMeterRegistryConfigurationTests.java deleted file mode 100644 index 50c3bf6225..0000000000 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/CompositeMeterRegistryConfigurationTests.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2012-2018 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.actuate.autoconfigure.metrics.export; - -import io.micrometer.core.instrument.MeterRegistry; -import io.micrometer.core.instrument.MockClock; -import io.micrometer.core.instrument.composite.CompositeMeterRegistry; -import io.micrometer.core.instrument.simple.SimpleConfig; -import io.micrometer.core.instrument.simple.SimpleMeterRegistry; -import io.micrometer.graphite.GraphiteMeterRegistry; -import io.micrometer.jmx.JmxMeterRegistry; -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.springframework.boot.actuate.autoconfigure.metrics.MetricsRun; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; -import org.springframework.test.context.junit4.SpringRunner; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Tests for {@link CompositeMeterRegistryConfiguration}. - * - * @author Jon Schneider - */ -@RunWith(SpringRunner.class) -public class CompositeMeterRegistryConfigurationTests { - - private ApplicationContextRunner contextRunner = new ApplicationContextRunner() - .with(MetricsRun.simple()); - - /** - * The simple registry is off by default UNLESS there is no other registry - * implementation on the classpath, in which case it is on. - */ - @Test - public void simpleWithNoCompositeCreated() { - this.contextRunner - .run((context) -> assertThat(context.getBean(MeterRegistry.class)) - .isInstanceOf(SimpleMeterRegistry.class)); - } - - /** - * An empty composite is created in the absence of any other registry implementation. - * This effectively no-ops instrumentation code throughout the application. - */ - @Test - public void emptyCompositeCreated() { - new ApplicationContextRunner().with(MetricsRun.limitedTo()).run((context) -> { - MeterRegistry registry = context.getBean(MeterRegistry.class); - assertThat(registry).isInstanceOf(CompositeMeterRegistry.class); - assertThat(((CompositeMeterRegistry) registry).getRegistries()).isEmpty(); - }); - } - - @Test - public void noCompositeCreatedWhenSingleImplementationIsEnabled() { - new ApplicationContextRunner().with(MetricsRun.limitedTo("graphite")) - .run((context) -> assertThat(context.getBean(MeterRegistry.class)) - .isInstanceOf(GraphiteMeterRegistry.class)); - } - - @Test - public void noCompositeCreatedWhenMultipleRegistriesButOneMarkedAsPrimary() { - new ApplicationContextRunner().with(MetricsRun.limitedTo("graphite", "jmx")) - .withUserConfiguration(PrimarySimpleMeterRegistryConfiguration.class) - .run((context) -> assertThat(context.getBean(MeterRegistry.class)) - .isInstanceOf(SimpleMeterRegistry.class)); - } - - @Test - public void compositeCreatedWhenMultipleImplementationsAreEnabled() { - new ApplicationContextRunner().with(MetricsRun.limitedTo("graphite", "jmx")) - .run((context) -> { - MeterRegistry registry = context.getBean(MeterRegistry.class); - assertThat(registry).isInstanceOf(CompositeMeterRegistry.class); - assertThat(((CompositeMeterRegistry) registry).getRegistries()) - .hasAtLeastOneElementOfType(GraphiteMeterRegistry.class) - .hasAtLeastOneElementOfType(JmxMeterRegistry.class); - }); - } - - @Configuration - static class PrimarySimpleMeterRegistryConfiguration { - - @Primary - @Bean - public MeterRegistry simpleMeterRegistry() { - return new SimpleMeterRegistry(SimpleConfig.DEFAULT, new MockClock()); - } - - } - -} diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsRun.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsRun.java new file mode 100644 index 0000000000..0e3295f944 --- /dev/null +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsRun.java @@ -0,0 +1,98 @@ +/* + * Copyright 2012-2018 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.actuate.autoconfigure.metrics.test; + +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.Set; +import java.util.function.Function; + +import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.export.atlas.AtlasMetricsExportAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.export.datadog.DatadogMetricsExportAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.export.ganglia.GangliaMetricsExportAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.export.graphite.GraphiteMetricsExportAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.export.influx.InfluxMetricsExportAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.export.jmx.JmxMetricsExportAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus.PrometheusMetricsExportAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.metrics.export.statsd.StatsdMetricsExportAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.util.Assert; + +/** + * Additional metrics configuration and settings that can be applied to a + * {@link ApplicationContextRunner} when running a metrics test. + * + * @author Jon Schneider + * @author Phillip Webb + */ +public final class MetricsRun { + + private static final Set> IMPLEMENTATIONS; + + static { + Set> implementations = new LinkedHashSet<>(); + implementations.add(AtlasMetricsExportAutoConfiguration.class); + implementations.add(DatadogMetricsExportAutoConfiguration.class); + implementations.add(GangliaMetricsExportAutoConfiguration.class); + implementations.add(GraphiteMetricsExportAutoConfiguration.class); + implementations.add(InfluxMetricsExportAutoConfiguration.class); + implementations.add(JmxMetricsExportAutoConfiguration.class); + implementations.add(PrometheusMetricsExportAutoConfiguration.class); + implementations.add(SimpleMetricsExportAutoConfiguration.class); + implementations.add(StatsdMetricsExportAutoConfiguration.class); + IMPLEMENTATIONS = Collections.unmodifiableSet(implementations); + } + + private MetricsRun() { + } + + /** + * Return a function that configures the run to be limited to the {@code simple} + * implementation. + * @return the function to apply + */ + public static Function simple() { + return limitedTo(SimpleMetricsExportAutoConfiguration.class); + } + + /** + * Return a function that configures the run to be limited to the specified + * implementations. + * @param implementations the implementations to include + * @return the function to apply + */ + public static Function limitedTo( + Class... implementations) { + return (contextRunner) -> apply(contextRunner, implementations); + } + + private static ApplicationContextRunner apply(ApplicationContextRunner contextRunner, + Class[] implementations) { + for (Class implementation : implementations) { + Assert.state(IMPLEMENTATIONS.contains(implementation), + "Unknown implementation " + implementation.getName()); + } + return contextRunner + .withPropertyValues("management.metrics.use-global-registry=false") + .withConfiguration(AutoConfigurations.of(MetricsAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(implementations)); + } + +} diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateMetricsConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateMetricsConfigurationTests.java index ed047c6591..d8e11a9b1e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateMetricsConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateMetricsConfigurationTests.java @@ -21,7 +21,7 @@ import org.junit.Rule; import org.junit.Test; import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties; -import org.springframework.boot.actuate.autoconfigure.metrics.MetricsRun; +import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.actuate.metrics.web.client.MetricsRestTemplateCustomizer; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration; diff --git a/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc index 7dee414b63..e9b2f2c782 100644 --- a/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc +++ b/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc @@ -1307,7 +1307,6 @@ content into your application. Rather, pick only the properties that you need. management.metrics.export.atlas.config-time-to-live= # Time to live for subscriptions from the LWC service. management.metrics.export.atlas.config-uri= # URI for the Atlas LWC endpoint to retrieve current subscriptions. management.metrics.export.atlas.connect-timeout= # Connection timeout for requests to the backend. - management.metrics.export.atlas.enabled=true # Whether exporting of metrics to this backend is enabled. management.metrics.export.atlas.eval-uri= # URI for the Atlas LWC endpoint to evaluate the data for a subscription. management.metrics.export.atlas.lwc-enabled= # Enable streaming to Atlas LWC. management.metrics.export.atlas.meter-time-to-live= # Time to live for meters that do not have any activity. After this period the meter will be considered expired and will not get reported. @@ -1328,7 +1327,6 @@ content into your application. Rather, pick only the properties that you need. management.metrics.export.datadog.uri= # URI to ship metrics to. If you need to publish metrics to an internal proxy en-route to Datadog, you can define the location of the proxy with this. management.metrics.export.ganglia.addressing-mode= # UDP addressing mode, either unicast or multicast. management.metrics.export.ganglia.duration-units= # Base time unit used to report durations. - management.metrics.export.ganglia.enabled=true # Whether exporting of metrics to Ganglia is enabled. management.metrics.export.ganglia.host= # Host of the Ganglia server to receive exported metrics. management.metrics.export.ganglia.port= # Port of the Ganglia server to receive exported metrics. management.metrics.export.ganglia.protocol-version= # Ganglia protocol version. Must be either 3.1 or 3.0. @@ -1336,7 +1334,6 @@ content into your application. Rather, pick only the properties that you need. management.metrics.export.ganglia.step= # Step size (i.e. reporting frequency) to use. management.metrics.export.ganglia.time-to-live= # Time to live for metrics on Ganglia. management.metrics.export.graphite.duration-units= # Base time unit used to report durations. - management.metrics.export.graphite.enabled=true # Whether exporting of metrics to Graphite is enabled. management.metrics.export.graphite.host= # Host of the Graphite server to receive exported metrics. management.metrics.export.graphite.port= # Port of the Graphite server to receive exported metrics. management.metrics.export.graphite.protocol= # Protocol to use while shipping data to Graphite. @@ -1348,7 +1345,6 @@ content into your application. Rather, pick only the properties that you need. management.metrics.export.influx.connect-timeout= # Connection timeout for requests to the backend. management.metrics.export.influx.consistency= # Write consistency for each point. management.metrics.export.influx.db= # Tag that will be mapped to "host" when shipping metrics to Influx. Can be omitted if host should be omitted on publishing. - management.metrics.export.influx.enabled=true # Whether exporting of metrics to this backend is enabled. management.metrics.export.influx.num-threads= # Number of threads to use with the metrics publishing scheduler. management.metrics.export.influx.password= # Login password of the Influx server. management.metrics.export.influx.read-timeout= # Read timeout for requests to the backend. @@ -1356,15 +1352,12 @@ content into your application. Rather, pick only the properties that you need. management.metrics.export.influx.step=1m # Step size (i.e. reporting frequency) to use. management.metrics.export.influx.uri= # URI of the Influx server. management.metrics.export.influx.user-name= # Login user of the Influx server. - management.metrics.export.jmx.enabled=true # Whether exporting of metrics to JMX is enabled. management.metrics.export.jmx.step= # Step size (i.e. reporting frequency) to use. management.metrics.export.prometheus.descriptions= # Enable publishing descriptions as part of the scrape payload to Prometheus. Turn this off to minimize the amount of data sent on each scrape. management.metrics.export.prometheus.enabled=true # Whether exporting of metrics to Prometheus is enabled. management.metrics.export.prometheus.step= # Step size (i.e. reporting frequency) to use. - management.metrics.export.simple.enabled=true # Whether exporting of metrics to a simple in-memory store is enabled. management.metrics.export.simple.mode=cumulative # Counting mode. management.metrics.export.simple.step=10s # Step size (i.e. reporting frequency) to use. - management.metrics.export.statsd.enabled=true # Export metrics to StatsD. management.metrics.export.statsd.flavor=datadog # StatsD line protocol to use. management.metrics.export.statsd.host=localhost # Host of the StatsD server to receive exported metrics. management.metrics.export.statsd.max-packet-length=1400 # Total length of a single payload should be kept within your network's MTU.