如何实现Spring Boot应用100%请求追踪并上报至OpenTelemetry Collector
Spring Boot 3 + OpenTelemetry 实现100%请求追踪采样
你遇到的核心问题是Spring Boot原生的追踪采样配置和OpenTelemetry Starter的采样机制不兼容。management.tracing.sampling.probability是Spring Boot自身Micrometer Tracing的配置,但OpenTelemetry Starter有独立的采样器体系,不会读取这个配置,导致实际采样率远低于预期的100%。
解决步骤
1. 替换采样配置为OpenTelemetry专属配置
修改application.yml,移除原有的management.tracing.sampling节点,添加OpenTelemetry的强制采样配置:
spring: datasource: url: "jdbc:h2:mem:db" management: endpoints: web: exposure: include: "*" # OpenTelemetry 强制100%采样配置 otel: traces: sampler: always_on
always_on采样器会对所有请求生成完整的追踪数据,完全满足测试阶段的需求。
2. 清理版本不匹配的依赖
你的pom.xml中引入的opentelemetry-samplers(版本1.42.0-alpha)和opentelemetry-instrumentation-bom(版本2.11.0)版本差异过大,可能引发依赖冲突。建议直接移除这个不必要的依赖,因为OpenTelemetry Starter已经内置了所需的采样器实现:
<!-- 移除该依赖 --> <!--<dependency> <groupId>io.opentelemetry.contrib</groupId> <artifactId>opentelemetry-samplers</artifactId> <version>1.42.0-alpha</version> </dependency>-->
3. 验证效果
重启应用后,多次请求/hello端点,检查OpenTelemetry Collector的接收数据,此时每条请求都应该生成对应的追踪链路。
如果后续需要调整采样率(比如生产环境降低采样比例),可以改用基于TraceID比例的采样器,配置示例:
otel: traces: sampler: traceidratio sampler: traceidratio: ratio: 1.0 # 1.0表示100%采样,可根据需求调整为0.1(10%)等数值
内容的提问来源于stack exchange,提问作者Tiago Leite
相关产品推荐
相关产品推荐

