@Override public Tracer getTracer(StagemonitorPlugin.InitArguments initArguments) { final B3TextMapCodec b3TextMapCodec = new B3TextMapCodec.Builder().build(); final JaegerTracer.Builder builder = new JaegerTracer.Builder( initArguments.getMeasurementSession().getApplicationName()) .withReporter(new NoopReporter()) .withSampler(new ConstSampler(true)) .registerInjector(B3HeaderFormat.INSTANCE, b3TextMapCodec) .registerInjector(Format.Builtin.HTTP_HEADERS, b3TextMapCodec) .registerExtractor(Format.Builtin.HTTP_HEADERS, b3TextMapCodec); return builder.build(); }
Sampler createSampler(String serviceName, Metrics metrics) { String samplerType = stringOrDefault(this.getType(), RemoteControlledSampler.TYPE); Number samplerParam = numberOrDefault(this.getParam(), ProbabilisticSampler.DEFAULT_SAMPLING_PROBABILITY); String hostPort = stringOrDefault(this.getManagerHostPort(), HttpSamplingManager.DEFAULT_HOST_PORT); if (samplerType.equals(ConstSampler.TYPE)) { return new ConstSampler(samplerParam.intValue() != 0); } if (samplerType.equals(ProbabilisticSampler.TYPE)) { return new ProbabilisticSampler(samplerParam.doubleValue()); } if (samplerType.equals(RateLimitingSampler.TYPE)) { return new RateLimitingSampler(samplerParam.intValue()); } if (samplerType.equals(RemoteControlledSampler.TYPE)) { return new RemoteControlledSampler.Builder(serviceName) .withSamplingManager(new HttpSamplingManager(hostPort)) .withInitialSampler(new ProbabilisticSampler(samplerParam.doubleValue())) .withMetrics(metrics) .build(); } throw new IllegalStateException(String.format("Invalid sampling strategy %s", samplerType)); }
@Override public Tracer getTracer(StagemonitorPlugin.InitArguments initArguments) { final B3TextMapCodec b3TextMapCodec = new B3TextMapCodec.Builder().build(); final JaegerTracer.Builder builder = new JaegerTracer.Builder( initArguments.getMeasurementSession().getApplicationName()) .withReporter(new NoopReporter()) .withSampler(new ConstSampler(true)) .registerInjector(B3HeaderFormat.INSTANCE, b3TextMapCodec) .registerInjector(Format.Builtin.HTTP_HEADERS, b3TextMapCodec) .registerExtractor(Format.Builtin.HTTP_HEADERS, b3TextMapCodec); return builder.build(); }
/** * Decide on what Sampler to use based on the various configuration options in * JaegerConfigurationProperties Fallback to ConstSampler(true) when no Sampler is configured */ @ConditionalOnMissingBean @Bean public Sampler sampler(JaegerConfigurationProperties properties, Metrics metrics) { if (properties.getConstSampler().getDecision() != null) { return new ConstSampler(properties.getConstSampler().getDecision()); } if (properties.getProbabilisticSampler().getSamplingRate() != null) { return new ProbabilisticSampler(properties.getProbabilisticSampler().getSamplingRate()); } if (properties.getRateLimitingSampler().getMaxTracesPerSecond() != null) { return new RateLimitingSampler(properties.getRateLimitingSampler().getMaxTracesPerSecond()); } if (!StringUtils.isEmpty(properties.getRemoteControlledSampler().getHostPort())) { JaegerConfigurationProperties.RemoteControlledSampler samplerProperties = properties.getRemoteControlledSampler(); return new RemoteControlledSampler.Builder(serviceName) .withSamplingManager(new HttpSamplingManager(samplerProperties.getHostPort())) .withInitialSampler( new ProbabilisticSampler(samplerProperties.getSamplingRate())) .withMetrics(metrics) .build(); } //fallback to sampling every trace return new ConstSampler(true); }