采样

优质
小牛编辑
143浏览
2023-12-01

在分布式跟踪中,数据量可能非常高,因此采样可能很重要(您通常不需要导出所有spans以获得正在发生的情况)。Spring Cloud Sleuth具有Sampler策略,您可以实现该策略来控制采样算法。采样器不会停止生成跨度(相关)ids,但是它们确实阻止了附加和导出的标签和事件。默认情况下,您将获得一个策略,如果跨度已经处于活动状态,则会继续跟踪,但新策略始终被标记为不可导出。如果您的所有应用程序都使用此采样器运行,您将看到日志中的跟踪,但不会在任何远程存储中。对于测试,默认值通常是足够的,如果您仅使用日志(例如使用ELK聚合器),则可能是您需要的。如果要将span数据导出到Zipkin或Spring Cloud Stream,则还有一个AlwaysSampler导出所有内容,并且PercentageBasedSampler对spans的固定分数进行采样。

注意如果您使用spring-cloud-sleuth-zipkinspring-cloud-sleuth-stream,则默认为PercentageBasedSampler。您可以使用spring.sleuth.sampler.percentage配置导出。通过的价值需要从0.01.0的双倍,所以不是百分比。为了向后兼容性原因,我们不会更改属性名称。

可以通过创建一个bean定义来安装采样器,例如:

@Bean
public Sampler defaultSampler() {
	return new AlwaysSampler();
}
提示您可以将HTTP标头X-B3-Flags设置为1,或者在进行消息传递时,您可以将spanFlags标题设置为1。然后,无论采样决定如何,当前跨度都将被强制输出。