diff --git a/docs/src/main/asciidoc/spring-cloud-sleuth.adoc b/docs/src/main/asciidoc/spring-cloud-sleuth.adoc index 5d13386c1..6c17853e2 100644 --- a/docs/src/main/asciidoc/spring-cloud-sleuth.adoc +++ b/docs/src/main/asciidoc/spring-cloud-sleuth.adoc @@ -864,6 +864,19 @@ If you want to find Zipkin through service discovery, you can pass the Zipkin's spring.zipkin.baseUrl: http://zipkinserver/ ---- +To disable this feature just set `spring.zipkin.discoveryClientEnabled` to `false. + +When the Discovery Client feature is enabled, Sleuth uses +`LoadBalancerClient` to find the URL of the Zipkin Server. It means +that you can set up the load balancing configuration e.g. via Ribbon. + +[source,yaml] +---- +zipkinserver: + ribbon: + ListOfServers: host1,host2 +---- + If you have web, rabbit, or kafka together on the classpath, you might need to pick the means by which you would like to send spans to zipkin. To do so, set `web`, `rabbit`, or `kafka` to the `spring.zipkin.sender.type` property. The following example shows setting the sender type for `web`: diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinProperties.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinProperties.java index 25838c813..0988772f5 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinProperties.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinProperties.java @@ -28,11 +28,19 @@ import zipkin2.codec.SpanBytesEncoder; */ @ConfigurationProperties("spring.zipkin") public class ZipkinProperties { - /** URL of the zipkin query server instance. You can also provide + /** + * URL of the zipkin query server instance. You can also provide * the service id of the Zipkin server if Zipkin's registered in * service discovery (e.g. http://zipkinserver/) */ private String baseUrl = "http://localhost:9411/"; + + /** + * If set to {@code false}, will treat the {@link ZipkinProperties#baseUrl} + * as a URL always + */ + private Boolean discoveryClientEnabled; + /** * Enables sending spans to Zipkin */ @@ -68,6 +76,14 @@ public class ZipkinProperties { return this.enabled; } + public Boolean getDiscoveryClientEnabled() { + return this.discoveryClientEnabled; + } + + public void setDiscoveryClientEnabled(Boolean discoveryClientEnabled) { + this.discoveryClientEnabled = discoveryClientEnabled; + } + public int getMessageTimeout() { return this.messageTimeout; } diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/sender/ZipkinRestTemplateSenderConfiguration.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/sender/ZipkinRestTemplateSenderConfiguration.java index cb2f2fda6..6cb257029 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/sender/ZipkinRestTemplateSenderConfiguration.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/sender/ZipkinRestTemplateSenderConfiguration.java @@ -25,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; import org.springframework.cloud.sleuth.zipkin2.ZipkinLoadBalancer; @@ -58,6 +59,7 @@ class ZipkinRestTemplateSenderConfiguration { @Configuration @ConditionalOnMissingClass("org.springframework.cloud.client.loadbalancer.LoadBalancerClient") + @ConditionalOnProperty(value = "spring.zipkin.discoveryClientEnabled", havingValue = "false") static class DefaultZipkinUrlExtractorConfiguration { @Autowired(required = false) LoadBalancerClient client; @@ -74,6 +76,7 @@ class ZipkinRestTemplateSenderConfiguration { @Configuration @ConditionalOnClass(LoadBalancerClient.class) + @ConditionalOnProperty(value = "spring.zipkin.discoveryClientEnabled", havingValue = "true", matchIfMissing = true) static class DiscoveryClientZipkinUrlExtractorConfiguration { @Autowired(required = false) LoadBalancerClient client;