diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Sampler.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Sampler.java
index 6febeefde..5c723db0b 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Sampler.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Sampler.java
@@ -17,8 +17,11 @@
package org.springframework.cloud.sleuth;
/**
- * Extremely simple callback to determine the frequency that an action should be
+ * Extremely simple callback to determine the frequency that an action should be traced.
*/
public interface Sampler {
- boolean isSampled();
+ /**
+ * @param span the current span (or null if there is none)
+ */
+ boolean isSampled(Span span);
}
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/AlwaysSampler.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/AlwaysSampler.java
index 59765a56d..90851b08c 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/AlwaysSampler.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/AlwaysSampler.java
@@ -17,13 +17,14 @@
package org.springframework.cloud.sleuth.sampler;
import org.springframework.cloud.sleuth.Sampler;
+import org.springframework.cloud.sleuth.Span;
/**
* @author Spencer Gibb
*/
public class AlwaysSampler implements Sampler {
@Override
- public boolean isSampled() {
+ public boolean isSampled(Span span) {
return true;
}
}
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/IsTracingSampler.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/IsTracingSampler.java
index 26d19dac9..836a50ded 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/IsTracingSampler.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/IsTracingSampler.java
@@ -17,6 +17,7 @@
package org.springframework.cloud.sleuth.sampler;
import org.springframework.cloud.sleuth.Sampler;
+import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.trace.SpanContextHolder;
/**
@@ -27,7 +28,7 @@ public class IsTracingSampler implements Sampler {
public static IsTracingSampler INSTANCE = new IsTracingSampler();
@Override
- public boolean isSampled() {
+ public boolean isSampled(Span span) {
return SpanContextHolder.isTracing();
}
}
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/PercentageBasedSampler.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/PercentageBasedSampler.java
index dcc33055c..1aeffa3a7 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/PercentageBasedSampler.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/PercentageBasedSampler.java
@@ -2,7 +2,6 @@ package org.springframework.cloud.sleuth.sampler;
import org.springframework.cloud.sleuth.Sampler;
import org.springframework.cloud.sleuth.Span;
-import org.springframework.cloud.sleuth.SpanAccessor;
/**
* Sampler that based on the given percentage rate will allow sampling.
@@ -23,16 +22,13 @@ import org.springframework.cloud.sleuth.SpanAccessor;
public class PercentageBasedSampler implements Sampler {
private final SamplerConfiguration configuration;
- private final SpanAccessor spanAccessor;
- public PercentageBasedSampler(SamplerConfiguration configuration, SpanAccessor spanAccessor) {
+ public PercentageBasedSampler(SamplerConfiguration configuration) {
this.configuration = configuration;
- this.spanAccessor = spanAccessor;
}
@Override
- public boolean isSampled() {
- Span currentSpan = this.spanAccessor.getCurrentSpan();
+ public boolean isSampled(Span currentSpan) {
long threshold = Math.abs(Long.MAX_VALUE * (int) (this.configuration.getPercentage() * 100)); // drops fractional percentage.
if (currentSpan == null || threshold == 0L) {
return false;
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerConfiguration.java
index 9c3ecc20e..ce06c250b 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerConfiguration.java
@@ -13,15 +13,9 @@ import lombok.Data;
public class SamplerConfiguration {
/**
- * Percentage of requests that should be sampled.
- * E.g.
- *
- * - 1.0 - 100% requests should be sampled
- * - 0.8 - 80% of requests should be sampled
- * - 0.0 - 0% requests should be sampled
- *
- *
- * The precision is whole-numbers only. We don't support 0.1% of the trace rate.
+ * Percentage of requests that should be sampled. E.g. 1.0 - 100% requests should be
+ * sampled. The precision is whole-numbers only (i.e. there's no support for 0.1% of
+ * the traces).
*/
private float percentage = 0.1f;
}
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTracer.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTracer.java
index e780f0a06..7e3ec691f 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTracer.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTracer.java
@@ -71,7 +71,7 @@ public class DefaultTracer implements Tracer {
@Override
public Span startTrace(String name, Sampler sampler) {
Span span;
- if (isTracing() || sampler.isSampled()) {
+ if (isTracing() || sampler.isSampled(getCurrentSpan())) {
span = createChild(getCurrentSpan(), name);
}
else {
diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterTests.java
index 6655a23ae..e48742bcf 100644
--- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterTests.java
+++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterTests.java
@@ -16,7 +16,16 @@
package org.springframework.cloud.sleuth.instrument.web;
-import lombok.SneakyThrows;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.entry;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.mockito.MockitoAnnotations.initMocks;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+
+import java.util.Random;
+
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
@@ -37,15 +46,7 @@ import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
-import java.util.Random;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.entry;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.mockito.MockitoAnnotations.initMocks;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import lombok.SneakyThrows;
/**
* @author Spencer Gibb
@@ -216,8 +217,8 @@ public class TraceFilterTests {
private class DelegateSampler implements Sampler {
@Override
- public boolean isSampled() {
- return TraceFilterTests.this.sampler.isSampled();
+ public boolean isSampled(Span span) {
+ return TraceFilterTests.this.sampler.isSampled(span);
}
}
}
diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/sampler/PercentageBasedSamplerTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/sampler/PercentageBasedSamplerTests.java
index ddf7366d3..2e4fb5331 100644
--- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/sampler/PercentageBasedSamplerTests.java
+++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/sampler/PercentageBasedSamplerTests.java
@@ -1,18 +1,18 @@
package org.springframework.cloud.sleuth.sampler;
-import org.junit.Test;
-import org.springframework.cloud.sleuth.Span;
-import org.springframework.cloud.sleuth.SpanAccessor;
-
-import java.util.Random;
-
import static org.assertj.core.api.BDDAssertions.then;
import static org.assertj.core.data.Percentage.withPercentage;
+import java.util.Random;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.cloud.sleuth.Span;
+
public class PercentageBasedSamplerTests {
SamplerConfiguration samplerConfiguration = new SamplerConfiguration();
- SpanAccessor spanAccessor = traceReturningSpanWithUuid();
+ private Span span;
private static Random RANDOM = new Random();
@Test
@@ -20,17 +20,20 @@ public class PercentageBasedSamplerTests {
this.samplerConfiguration.setPercentage(1f);
for (int i = 0; i < 10; i++) {
- then(new PercentageBasedSampler(this.samplerConfiguration, this.spanAccessor).isSampled()).isTrue();
+ then(new PercentageBasedSampler(this.samplerConfiguration).isSampled(this.span))
+ .isTrue();
}
}
@Test
- public void should_reject_all_samples_when_config_has_0_percentage() throws Exception {
+ public void should_reject_all_samples_when_config_has_0_percentage()
+ throws Exception {
this.samplerConfiguration.setPercentage(0f);
for (int i = 0; i < 10; i++) {
- then(new PercentageBasedSampler(this.samplerConfiguration, this.spanAccessor).isSampled()).isFalse();
+ then(new PercentageBasedSampler(this.samplerConfiguration).isSampled(this.span))
+ .isFalse();
}
}
@@ -42,30 +45,23 @@ public class PercentageBasedSamplerTests {
int numberOfSampledElements = countNumberOfSampledElements(numberOfIterations);
- then(numberOfSampledElements).isCloseTo((int) (numberOfIterations * percentage), withPercentage(3));
+ then(numberOfSampledElements).isCloseTo((int) (numberOfIterations * percentage),
+ withPercentage(3));
}
private int countNumberOfSampledElements(int numberOfIterations) {
int passedCounter = 0;
for (int i = 0; i < numberOfIterations; i++) {
- boolean passed = new PercentageBasedSampler(this.samplerConfiguration, traceReturningSpanWithUuid()).isSampled();
+ boolean passed = new PercentageBasedSampler(this.samplerConfiguration)
+ .isSampled(this.span);
passedCounter = passedCounter + (passed ? 1 : 0);
}
return passedCounter;
}
- private SpanAccessor traceReturningSpanWithUuid() {
- return new SpanAccessor() {
- @Override
- public Span getCurrentSpan() {
- return Span.builder().traceId(RANDOM.nextLong()).build();
- }
-
- @Override
- public boolean isTracing() {
- return true;
- }
- };
+ @Before
+ public void setupSpan() {
+ this.span = Span.builder().traceId(RANDOM.nextLong()).build();
}
}
\ No newline at end of file
diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/src/main/java/sample/SampleMessagingApplication.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/src/main/java/sample/SampleMessagingApplication.java
index dd8251d65..d4972b174 100644
--- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/src/main/java/sample/SampleMessagingApplication.java
+++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/src/main/java/sample/SampleMessagingApplication.java
@@ -20,8 +20,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.cloud.sleuth.Sampler;
-import org.springframework.cloud.sleuth.sampler.AlwaysSampler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.integration.annotation.IntegrationComponentScan;
@@ -48,11 +46,6 @@ public class SampleMessagingApplication {
@Autowired
private SampleRequestResponse transformer;
- @Bean
- public Sampler defaultSampler() {
- return new AlwaysSampler();
- }
-
@RequestMapping("/")
public String home() {
String msg = "Hello";
diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/src/main/java/sample/SampleRibbonApplication.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/src/main/java/sample/SampleRibbonApplication.java
index 21be87a57..30111353b 100644
--- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/src/main/java/sample/SampleRibbonApplication.java
+++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/src/main/java/sample/SampleRibbonApplication.java
@@ -20,8 +20,6 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
-import org.springframework.cloud.sleuth.Sampler;
-import org.springframework.cloud.sleuth.sampler.AlwaysSampler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync;
@@ -38,11 +36,6 @@ import com.github.kristofa.brave.SpanCollector;
@EnableZuulProxy
public class SampleRibbonApplication {
- @Bean
- public Sampler defaultSampler() {
- return new AlwaysSampler();
- }
-
public static void main(String[] args) {
SpringApplication.run(SampleRibbonApplication.class, args);
}
diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleSleuthApplication.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleSleuthApplication.java
index 0dea467c7..75a425370 100644
--- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleSleuthApplication.java
+++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleSleuthApplication.java
@@ -18,8 +18,6 @@ package sample;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.sleuth.Sampler;
-import org.springframework.cloud.sleuth.sampler.AlwaysSampler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync;
@@ -34,11 +32,6 @@ public class SampleSleuthApplication {
public static final String CLIENT_NAME = "testApp";
- @Bean
- public Sampler defaultSampler() {
- return new AlwaysSampler();
- }
-
@Bean
public SampleController sampleController() {
return new SampleController();
diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/java/sample/SampleZipkinApplication.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/java/sample/SampleZipkinApplication.java
index 903b5eda1..cfdcf3000 100644
--- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/java/sample/SampleZipkinApplication.java
+++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/java/sample/SampleZipkinApplication.java
@@ -16,17 +16,16 @@
package sample;
-import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.cloud.sleuth.Sampler;
-import org.springframework.cloud.sleuth.sampler.AlwaysSampler;
import org.springframework.cloud.sleuth.zipkin.ZipkinSpanReporter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync;
+import lombok.extern.slf4j.Slf4j;
+
/**
* @author Spencer Gibb
*/
@@ -36,14 +35,6 @@ import org.springframework.scheduling.annotation.EnableAsync;
@Slf4j
public class SampleZipkinApplication {
- /**
- * Sleuth will not report trace data unless you define a sampler like below.
- */
- @Bean
- public Sampler defaultSampler() {
- return new AlwaysSampler();
- }
-
public static void main(String[] args) {
SpringApplication.run(SampleZipkinApplication.class, args);
}
diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/resources/application.yml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/resources/application.yml
index d85ebd920..50322230f 100644
--- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/resources/application.yml
+++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/resources/application.yml
@@ -12,4 +12,4 @@ spring:
sample:
zipkin:
# When enabled=false, traces log to the console. Comment to send to zipkin
- enabled: true
+ enabled: false
diff --git a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthStreamAutoConfiguration.java b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthStreamAutoConfiguration.java
index fafa8d8fe..72af18f12 100644
--- a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthStreamAutoConfiguration.java
+++ b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthStreamAutoConfiguration.java
@@ -20,13 +20,17 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
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.autoconfigure.web.ServerProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.cloud.sleuth.Sampler;
import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.metric.SpanReporterService;
+import org.springframework.cloud.sleuth.sampler.PercentageBasedSampler;
+import org.springframework.cloud.sleuth.sampler.SamplerConfiguration;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.config.ChannelBindingAutoConfiguration;
import org.springframework.context.annotation.Bean;
@@ -48,12 +52,18 @@ import org.springframework.messaging.support.ChannelInterceptorAdapter;
* @author Dave Syer
*/
@Configuration
-@EnableConfigurationProperties(SleuthStreamProperties.class)
+@EnableConfigurationProperties({SleuthStreamProperties.class, SamplerConfiguration.class})
@AutoConfigureBefore(ChannelBindingAutoConfiguration.class)
@EnableBinding(SleuthSource.class)
@ConditionalOnProperty(value = "spring.sleuth.stream.enabled", matchIfMissing = true)
public class SleuthStreamAutoConfiguration {
+ @Bean
+ @ConditionalOnMissingBean
+ public Sampler defaultTraceSampler(SamplerConfiguration config) {
+ return new PercentageBasedSampler(config);
+ }
+
@Bean
@GlobalChannelInterceptor(patterns = SleuthSource.OUTPUT, order = Ordered.HIGHEST_PRECEDENCE)
public ChannelInterceptor zipkinChannelInterceptor(final SpanReporterService spanReporterService) {
diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java
index 4fec778d2..28635ba40 100644
--- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java
+++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java
@@ -18,6 +18,7 @@ package org.springframework.cloud.sleuth.zipkin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
@@ -25,7 +26,11 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.cloud.sleuth.Sampler;
+import org.springframework.cloud.sleuth.autoconfig.TraceAutoConfiguration;
import org.springframework.cloud.sleuth.metric.SpanReporterService;
+import org.springframework.cloud.sleuth.sampler.PercentageBasedSampler;
+import org.springframework.cloud.sleuth.sampler.SamplerConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -34,21 +39,22 @@ import org.springframework.context.annotation.Configuration;
* @author Spencer Gibb
*/
@Configuration
-@EnableConfigurationProperties
+@EnableConfigurationProperties({ZipkinProperties.class, SamplerConfiguration.class})
@ConditionalOnProperty(value = "spring.zipkin.enabled", matchIfMissing = true)
+@AutoConfigureBefore(TraceAutoConfiguration.class)
public class ZipkinAutoConfiguration {
@Bean
@ConditionalOnMissingBean(ZipkinSpanReporter.class)
- public ZipkinSpanReporter reporter(SpanReporterService spanReporterService) {
- ZipkinProperties zipkin = zipkinProperties();
+ public ZipkinSpanReporter reporter(SpanReporterService spanReporterService, ZipkinProperties zipkin) {
return new HttpZipkinSpanReporter(zipkin.getBaseUrl(), zipkin.getFlushInterval(),
spanReporterService);
}
@Bean
- public ZipkinProperties zipkinProperties() {
- return new ZipkinProperties();
+ @ConditionalOnMissingBean
+ public Sampler defaultTraceSampler(SamplerConfiguration config) {
+ return new PercentageBasedSampler(config);
}
@Bean
diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinProperties.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinProperties.java
index c879bd1f7..8f54f292d 100644
--- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinProperties.java
+++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinProperties.java
@@ -26,8 +26,6 @@ import lombok.Data;
@ConfigurationProperties("spring.zipkin")
@Data
public class ZipkinProperties {
- // Sample rate = 1.0 means 100% of requests will get traced.
- private float fixedSampleRate = 1.0f;
/** URL of the zipkin query server instance. */
private String baseUrl = "http://localhost:9411/";
private boolean enabled = true;