如何配置Sleuth跳过HTTP OPTIONS请求的链路追踪
Spring Cloud Sleuth 忽略HTTP OPTIONS请求配置方案
可以通过以下两种方式实现过滤CORS预检的OPTIONS请求的需求:
方式一:通过配置文件配置skip-pattern(适用于Sleuth 2.x+版本,URI规则统一的场景)
Sleuth内置的spring.sleuth.web.skip-pattern配置可通过正则匹配需要跳过采样的请求URI,如果你需要忽略的OPTIONS请求符合统一的URI规则,可以直接使用该配置:
spring: sleuth: web: # 可根据实际业务调整正则规则,示例为匹配所有请求路径 skip-pattern: ^/.*$
方式二:自定义HttpSampler实现精准过滤(适配全版本,灵活度更高)
如果需要精准根据请求方法过滤OPTIONS请求,推荐自定义HTTP采样器实现:
import brave.http.HttpRequest; import brave.sampler.SamplerFunction; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SleuthSamplerConfiguration { @Bean SamplerFunction<HttpRequest> sleuthHttpSampler() { return request -> { // 忽略所有OPTIONS类型的请求,不生成trace链路 if ("OPTIONS".equalsIgnoreCase(request.method())) { return false; } // 其余请求沿用全局默认采样策略 return null; }; } }
返回值说明:返回false表示当前请求不采样,返回null表示使用全局默认采样规则,返回true表示强制采样。
注意:如果同时配置了配置文件的skip-pattern和自定义HttpSampler,自定义采样器的优先级更高。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

