如果将 Trace ID 添加到响应头中,那么在进行日志分析和追踪时,配合日志收集分析平台,我们就可以通过这个 Trace ID 将所有相关的日志信息串联起来,便于分析和定位问题。
- SpringCloud Gateway 3.1.4
- Skywalking Agent 8.14.0
-
下载并解压 Skywalking Agent,并将 Agent 根目录下的
- 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>
- 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; } }
optional-plugins/apm-spring-webflux-5.x-plugin-8.15.0.jar
、optional-plugins/apm-spring-cloud-gateway-3.x-plugin-8.15.0.jar
移动至 plugins
目录下。
如此,大功告成,调用接口测试即可~~~
参考:https://github.com/apache/skywalking/discussions/10686