使用注释或使用 Spring Cloud Sleuth 以编程方式指定采样器概率?

Specify sampler probability using annotations or programmatically using Spring Cloud Sleuth?

我们在 GCP 中使用 Spring Boot 2.7.0,Spring cloud 2021.0.3 并添加了这些依赖项:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>spring-cloud-gcp-starter-trace</artifactId>
</dependency>
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>spring-cloud-gcp-starter-logging</artifactId>
</dependency>

我们在属性文件中指定了通用样本概率,如下所示:

spring.sleuth.sampler.probability=0.1
spring.sleuth.web.skipPattern=(^/admin/.*|.+favicon.*|^/ping$)

但对于某些方法,我们希望使用不同的采样器概率(例如,我们总是希望为某些方法生成轨迹)。

问题:

  1. 使用来自 Spring Sleuth(或相关)项目的注释时,是否可以指定方法的采样率概率?
  2. 如果不是,是否可以通过编程方式指定方法的采样率概率(不带注释)?
  3. 如果不是,是否可以在spring属性文件/yaml文件中配置不同的采样率?

您可以创建 org.springframework.cloud.sleuth.exporter.SpanFilter 类型的 bean。在那里你可以访问FinishedSpan,如果你想导出跨度,你可以return true