From a57c7196490b593f9da85c596aecfbaae9e02d66 Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Fri, 29 Jun 2018 09:30:57 -0400 Subject: [PATCH] Disable servo by default. (#3041) --- docs/src/main/asciidoc/spring-cloud-netflix.adoc | 2 ++ .../cloud/netflix/metrics/atlas/AtlasConfiguration.java | 2 ++ .../netflix/metrics/servo/ServoMetricsAutoConfiguration.java | 2 +- .../metrics/MetricsClientHttpRequestInterceptorTests.java | 2 +- .../metrics/MetricsHandlerInterceptorIntegrationTests.java | 2 +- .../cloud/netflix/metrics/MetricsRestTemplateTests.java | 2 +- .../cloud/netflix/metrics/atlas/AtlasExporterTests.java | 2 +- .../metrics/servo/ServoMetricsAutoConfigurationTests.java | 2 +- .../SpectatorMetricsHandlerInterceptorIntegrationTests.java | 2 +- 9 files changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/src/main/asciidoc/spring-cloud-netflix.adoc b/docs/src/main/asciidoc/spring-cloud-netflix.adoc index 20f106191..186bec520 100644 --- a/docs/src/main/asciidoc/spring-cloud-netflix.adoc +++ b/docs/src/main/asciidoc/spring-cloud-netflix.adoc @@ -2582,6 +2582,8 @@ Spectator and Servo are Netflix's metrics collection libraries. Atlas is a Netfl Servo served Netflix for several years and is still usable, but is gradually being phased out in favor of Spectator, which is only designed to work with Java 8. Spring Cloud Netflix provides support for both, but Java 8 based applications are encouraged to use Spectator. +To enable Servo you must set `spring.metrics.servo.enabled` to `true`. + === Dimensional vs. Hierarchical Metrics Spring Boot Actuator metrics are hierarchical and metrics are separated only by name. These names often follow a naming convention that embeds key/value attribute pairs (dimensions) into the name separated by periods. Consider the following metrics for two endpoints, root and star-star: diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/metrics/atlas/AtlasConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/metrics/atlas/AtlasConfiguration.java index a2f8e4cbf..4fa0630ca 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/metrics/atlas/AtlasConfiguration.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/metrics/atlas/AtlasConfiguration.java @@ -19,6 +19,7 @@ import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.actuate.metrics.export.Exporter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.cloud.netflix.metrics.servo.ServoMetricsAutoConfiguration; @@ -69,6 +70,7 @@ public class AtlasConfiguration { @Bean @ConditionalOnMissingBean + @ConditionalOnBean(MonitorRegistry.class) public Exporter exporter(AtlasMetricObserver observer, MonitorRegistry monitorRegistry) { return new AtlasExporter(observer, new MonitorRegistryMetricPoller(monitorRegistry)); } diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/metrics/servo/ServoMetricsAutoConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/metrics/servo/ServoMetricsAutoConfiguration.java index bfebada09..f26b53bdd 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/metrics/servo/ServoMetricsAutoConfiguration.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/metrics/servo/ServoMetricsAutoConfiguration.java @@ -47,7 +47,7 @@ import com.netflix.servo.monitor.Monitors; @ConditionalOnMissingClass("com.netflix.spectator.api.Registry") @AutoConfigureBefore(MetricRepositoryAutoConfiguration.class) @Import(MetricsInterceptorConfiguration.class) -@ConditionalOnProperty(name = "spring.metrics.servo.enabled", matchIfMissing = true) +@ConditionalOnProperty(name = "spring.metrics.servo.enabled", havingValue = "true") public class ServoMetricsAutoConfiguration { @Bean @ConditionalOnMissingBean diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/MetricsClientHttpRequestInterceptorTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/MetricsClientHttpRequestInterceptorTests.java index 31fcd254b..62f53af74 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/MetricsClientHttpRequestInterceptorTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/MetricsClientHttpRequestInterceptorTests.java @@ -51,7 +51,7 @@ import com.netflix.servo.monitor.MonitorConfig; @ContextConfiguration(classes = { MetricsRestTemplateRestTemplateConfig.class, MetricsRestTemplateTestConfig.class }) @TestPropertySource(properties = { "netflix.metrics.restClient.metricName=metricName", - "spring.aop.proxy-target-class=true" }) + "spring.aop.proxy-target-class=true", "spring.metrics.servo.enabled:true" }) public class MetricsClientHttpRequestInterceptorTests { @Autowired MonitorRegistry registry; diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/MetricsHandlerInterceptorIntegrationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/MetricsHandlerInterceptorIntegrationTests.java index 929d1a7f0..20758ea5d 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/MetricsHandlerInterceptorIntegrationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/MetricsHandlerInterceptorIntegrationTests.java @@ -59,7 +59,7 @@ import com.netflix.servo.monitor.MonitorConfig; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = MetricsTestConfig.class) @WebAppConfiguration -@TestPropertySource(properties = "netflix.metrics.rest.metricName=metricName") +@TestPropertySource(properties = {"netflix.metrics.rest.metricName=metricName", "spring.metrics.servo.enabled:true"}) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) public class MetricsHandlerInterceptorIntegrationTests { @Autowired diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/MetricsRestTemplateTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/MetricsRestTemplateTests.java index 063e454ee..7511ae0db 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/MetricsRestTemplateTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/MetricsRestTemplateTests.java @@ -42,7 +42,7 @@ import org.springframework.test.util.ReflectionTestUtils; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = MetricsRestTemplateTests.App.class, webEnvironment = WebEnvironment.RANDOM_PORT, value = { "spring.application.name=ribbonclienttest", "spring.jmx.enabled=false", - "ribbon.http.client.enabled=true" }) + "ribbon.http.client.enabled=true", "spring.metrics.servo.enabled:true" }) @DirtiesContext public class MetricsRestTemplateTests extends RibbonClientHttpRequestFactoryTests { diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/atlas/AtlasExporterTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/atlas/AtlasExporterTests.java index 644ebcb19..dfd334942 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/atlas/AtlasExporterTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/atlas/AtlasExporterTests.java @@ -37,7 +37,7 @@ import com.netflix.servo.monitor.DynamicCounter; /** * @author Jon Schneider */ -@SpringBootTest(classes = AtlasExporterConfiguration.class) +@SpringBootTest(classes = AtlasExporterConfiguration.class, properties = {"spring.metrics.servo.enabled:true"}) @RunWith(SpringJUnit4ClassRunner.class) public class AtlasExporterTests { @Autowired diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/servo/ServoMetricsAutoConfigurationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/servo/ServoMetricsAutoConfigurationTests.java index 21fa6b89d..775531fd7 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/servo/ServoMetricsAutoConfigurationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/metrics/servo/ServoMetricsAutoConfigurationTests.java @@ -31,7 +31,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * @author Dave Syer */ -@SpringBootTest +@SpringBootTest(properties = {"spring.metrics.servo.enabled:true"}) @RunWith(SpringJUnit4ClassRunner.class) public class ServoMetricsAutoConfigurationTests { diff --git a/spring-cloud-netflix-spectator/src/test/java/org/springframework/cloud/netflix/metrics/spectator/SpectatorMetricsHandlerInterceptorIntegrationTests.java b/spring-cloud-netflix-spectator/src/test/java/org/springframework/cloud/netflix/metrics/spectator/SpectatorMetricsHandlerInterceptorIntegrationTests.java index 9e41ba8cd..788ca2627 100644 --- a/spring-cloud-netflix-spectator/src/test/java/org/springframework/cloud/netflix/metrics/spectator/SpectatorMetricsHandlerInterceptorIntegrationTests.java +++ b/spring-cloud-netflix-spectator/src/test/java/org/springframework/cloud/netflix/metrics/spectator/SpectatorMetricsHandlerInterceptorIntegrationTests.java @@ -58,7 +58,7 @@ import com.netflix.servo.monitor.MonitorConfig; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = SpectatorMetricsTestConfig.class) @WebAppConfiguration -@TestPropertySource(properties = "netflix.metrics.rest.metricName=metricName") +@TestPropertySource(properties = {"netflix.metrics.rest.metricName=metricName", "spring.metrics.servo.enabled:true"}) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) public class SpectatorMetricsHandlerInterceptorIntegrationTests { @Autowired