SpringCloud Gateway 3.x 响应头添加 Skywalking TraceId

科技资讯 投稿 9700 0 评论

SpringCloud Gateway 3.x 响应头添加 Skywalking TraceId

如果将 Trace ID 添加到响应头中,那么在进行日志分析和追踪时,配合日志收集分析平台,我们就可以通过这个 Trace ID 将所有相关的日志信息串联起来,便于分析和定位问题。

    SpringCloud Gateway 3.1.4
  • Skywalking Agent 8.14.0
    下载并解压 Skywalking Agent,并将 Agent 根目录下的 optional-plugins/apm-spring-webflux-5.x-plugin-8.15.0.jaroptional-plugins/apm-spring-cloud-gateway-3.x-plugin-8.15.0.jar 移动至 plugins 目录下。
  1. SpringCloud Gateway 添加 pom 依赖如下:
    <dependency>
        <groupId>org.apache.skywalking</groupId>
        <artifactId>apm-toolkit-trace</artifactId>
        <version>8.14.0</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.skywalking</groupId>
        <artifactId>apm-toolkit-webflux</artifactId>
        <version>8.14.0</version>
    </dependency>
    
  2. SpringCloud Gateway 创建 GloablFilter 拦截器,添加 SKywalking TraceId 至响应头。
    @Component
    public class PutTraceIdIntoResponseHeaderFilter implements GlobalFilter {
        @Override
        public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain {
            String traceId = WebFluxSkyWalkingOperators.continueTracing(exchange, TraceContext::traceId;
            exchange.getResponse(.getHeaders(.set("x-trace-id", traceId;
            return chain.filter(exchange;
        }
    }
    

如此,大功告成,调用接口测试即可~~~

参考:https://github.com/apache/skywalking/discussions/10686

编程笔记 » SpringCloud Gateway 3.x 响应头添加 Skywalking TraceId

赞同 (51) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽