首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

spring-boot/spring云升级后,Spring Cloud Sleuth停止向MDC推送X-B3-TraceId

spring-boot和spring云升级后,Spring Cloud Sleuth停止向MDC推送X-B3-TraceId。

Spring Cloud Sleuth是一个用于分布式系统中实现请求跟踪和服务跟踪的解决方案。它通过将一个唯一的跟踪标识TraceId注入到请求的header中,从而实现请求的追踪。在旧版的Spring Boot和Spring云中,Spring Cloud Sleuth会将TraceId自动推送到MDC(Mapped Diagnostic Context),以便在日志中方便地进行跟踪和定位问题。

然而,在升级后的Spring Boot和Spring云版本中,Spring Cloud Sleuth不再自动将X-B3-TraceId推送到MDC中。这是因为MDC的使用存在一些线程安全的问题,可能导致潜在的内存泄漏和性能问题。因此,Spring Cloud Sleuth决定不再默认推送TraceId到MDC,以避免潜在的风险。

尽管如此,如果你仍然希望将TraceId推送到MDC中,你可以通过编写自定义的日志配置来实现。以下是一个示例:

代码语言:txt
复制
@Configuration
public class SleuthConfig {

    @Bean
    public TraceLoggingFilter traceLoggingFilter(Tracer tracer) {
        return new TraceLoggingFilter(tracer);
    }

    public static class TraceLoggingFilter extends OncePerRequestFilter {

        private final Tracer tracer;

        public TraceLoggingFilter(Tracer tracer) {
            this.tracer = tracer;
        }

        @Override
        protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
            try (Tracer.SpanInScope ws = tracer.withSpanInScope(tracer.nextSpan())) {
                filterChain.doFilter(request, response);
            }
        }
    }
}

上述示例中,我们通过自定义一个TraceLoggingFilter,并在doFilterInternal方法中将TraceId推送到MDC中。

至于Spring Cloud Sleuth的优势和应用场景,它可以帮助我们在分布式系统中进行请求追踪和服务跟踪,方便我们定位和解决问题。它提供了许多功能,包括生成唯一的TraceId、将TraceId注入到请求header中、通过日志记录将TraceId传播到不同的服务等。通过使用Spring Cloud Sleuth,我们可以更好地了解分布式系统中各个服务之间的调用关系,快速定位问题,并对系统进行优化。

推荐的腾讯云相关产品和产品介绍链接地址:

  1. 云原生产品:腾讯云原生应用中心(https://cloud.tencent.com/product/tke) 腾讯云原生应用中心是一个全托管的 Kubernetes 服务,支持高可用、弹性伸缩、灰度发布等功能,可以帮助开发者更方便地部署和管理云原生应用。
  2. 服务器运维产品:腾讯云云服务器(https://cloud.tencent.com/product/cvm) 腾讯云云服务器是一种基于云的虚拟服务器,提供高性能计算能力和可扩展性,适用于各种应用场景,包括网站托管、应用程序部署、数据库管理等。
  3. 云存储产品:腾讯云对象存储(https://cloud.tencent.com/product/cos) 腾讯云对象存储是一种安全可靠的云存储服务,适用于各种数据存储需求,包括图片、视频、文档等。

请注意,以上只是腾讯云的部分产品示例,根据实际需求,还可以结合其他腾讯云产品来满足具体的云计算和应用需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 微服务链路追踪有哪些_微服务网关原理

    相关术语 Sleuth引入了许多 Dapper中的术语: Span —- 基本的工作单元。无论是发送一个RPC或是RPC发送一个响应都是一个Span。...Span能够启动和停止,他们不断地追踪自身的时间信息,当你创建了一个Span,你必须在未来的某个时刻停止它。...Spring-Cloud-Sleuth虽然基于htrace,但与Zipkin(dapper)也兼容。 Sleuth记录时间信息以帮助进行延迟分析。...否则,您可能会认为Sleuth不起作用,因为它省略了一些Span。 注意:如果你使用的是SLF4J,Trace和Span的追踪记录默认会被记录到MDC,所以日志的用户可以立刻看到。...${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] Zipkin Zipkin

    40310

    从头分析一则traceId穿透问题(附解决方案)

    但是,这里不会介绍上面的任何一种组件,这里主要来分析并解决下spring-cloud-sleuth与logback整合线程池中输出的日志中没有traceId的问题。...spring-cloud-sleuth sleuth主要功能是在分布式系统中提供追踪解决方案,并且兼容支持了zipkin(提供了链路追踪的可视化功能)。...sleuth是对zipkin的封装,包括一个http请求进入对应Span,Trace等信息的生成以及Zipkin server发送采集信息等全部自动化完成(如果需要发送到zipkin server的话需要引入相应的包并进行相应配置...先来看一下它的依赖,pom依赖为: org.springframework.cloud spring-cloud-sleuth-core...scope; } 这里会遍历整个scopeDecorators列表,对当前TraceContext进行装饰,在这里我们主要关注下针对日志的decorator即org.springframework.cloud.sleuth.log.Slf4jScopeDecorator

    5.8K21

    Spring Cloud构建微服务架构:分布式服务跟踪(跟踪原理)

    在快速入门示例中,我们轻松实现了日志级别的跟踪信息接入,这完全归功于 spring-cloud-starter-sleuth组件的实现。...在Spring Boot应用中,通过在工程中引入 spring-cloud-starter-sleuth依赖之后, 它会自动的为当前应用构建起各通信通道的跟踪机制,比如: 通过诸如RabbitMQ、Kafka...-2发起的请求是通过 RestTemplate实现的,所以 spring-cloud-starter-sleuth组件会对该请求进行处理,在发送到 trace-2之前sleuth会为在该请求的Header...中增加实现跟踪需要的重要信息,主要有下面这几个(更多关于头信息的定义我们可以通过查看 org.springframework.cloud.sleuth.Span的源码获取): X-B3-TraceId:...本文内容部分节选自我的《Spring Cloud微服务实战》,但对依赖的Spring Boot和Spring Cloud版本做了升级

    1.1K50

    Spring Cloud 2021.0.1 发布,快上车!来不及解释了。。

    Spring Cloud Kubernetes 2.1.1 Spring Cloud Commons 3.1.1 Spring Cloud Sleuth 3.1.1 Spring Cloud Contract...bug Spring Cloud Sleuth 大量错误修复,具体可以参考: https://github.com/spring-cloud/spring-cloud-sleuth/milestone...(SR5+) Greenwich 已停止维护 Spring Boot 2.1.x Finchley 已停止维护 Spring Boot 2.0.x Edgware 已停止维护 Spring Boot...2)Spring Cloud Hoxton 在 2021/06/30 也停止维护了(其对应的 Spring Boot 2.2.x 版本也停止维护了),但是期间如果 Hoxton 出现重大 bug 或者安全漏洞...欢迎留言分享~ 好了,今天的分享就到这里了,后面栈长我会更新更多好玩的 Java 技术文章和最新的技术资讯,关注公众号Java技术栈第一时间推送,不要走开哦。

    87820

    Spring Cloud Gateway 没有链路信息,我 TM 人傻了(下)

    Cloud Sleuth 如何在 Spring Cloud Gateway 加入的链路追踪以及为何会出现这个问题 下:现有 Spring Cloud Sleuth 的非侵入设计带来的性能问题,其他可能的问题点...,以及如何解决 Spring Cloud Gateway 其他的可能丢失链路信息的点 经过前面的分析,我们可以看出,不止这里,还有其他地方会导致 Spring Cloud Sleuth 的链路追踪信息消失...Project Reactor 虽然提供了对标 ThreadLocal 的 Context,但是主流框架还没有兼容这个 Context,所以给 Spring Cloud Sleuth 粘合这些链路追踪带来了很大困难...这就需要 Spring Cloud Sleuth 在订阅一开始,就需要将链路信息放入 MDC,同时还需要保证运行时不切换线程。...但是 Spring Cloud Sleuth 是非侵入式设计,很难实现这一点。但是对于我们自己业务的使用,我们可以定制一些编程规范,来保证大家写的代码不丢失链路信息。

    90710

    Spring Cloud 2020.0.4 发布,安排!

    Cloud 的发布节奏远没有 Spring Boot 月更那么快,但一年发上好几个版本也是吃不消的,我表示学不动了,也升级不动了。。...3.0.4 Spring Cloud Contract 3.0.4 Spring Cloud Kubernetes 2.0.4 Spring Cloud Sleuth 3.0.4 Spring Cloud...Cloud Netflix 1、如果 Eureka 被禁用了,不再注册 Eureka config server 引导项; 2、相关的依赖升级Spring Cloud Sleuth 1、简化了 ON_EACH...已停止维护 Spring Boot 2.1.x Finchley 已停止维护 Spring Boot 2.0.x Edgware 已停止维护 Spring Boot 1.5.x Dalston 已停止维护...好了,今天的分享就到这里了,后面栈长我会更新更多好玩的 Java 技术文章和最新的技术资讯,关注公众号Java技术栈第一时间推送,不要走开哦。

    1.2K20

    自定义Spring Cloud Sleuth的跟踪信息

    Spring Cloud Sleuth 是一个分布式跟踪系统,可以帮助开发人员追踪分布式系统中的请求流。默认情况下,Sleuth会为每个请求分配一个唯一的跟踪ID和跟踪标记,并将它们传递到服务调用中。...本文将介绍如何自定义Spring Cloud Sleuth的跟踪信息,包括如何自定义跟踪ID、跟踪标记和自定义Sleuth采集器。...在操作完成,我们最终结束Span对象。这将确保我们在跟踪系统中有一个唯一的跟踪ID。 自定义跟踪标记 除了自定义跟踪ID之外,我们还可以自定义跟踪标记。...Sleuth提供了一个MDC跟踪标记工具类,我们可以使用它来自定义跟踪标记。...最后,在结束跟踪之前,我们从MDC中删除这个键值对。这将确保我们在跟踪系统中有一个自定义的跟踪标记。

    64762
    领券