skywalking springgateway 全链路

环境

spring-cloud-gateway 3.1.0

springGateway整合skywalking

skywalking 默认是不整合springGateway的,需要手动拷贝skywalking optional-plugins 下的

apm-spring-cloud-gateway-N.x-plugin-8.13.0.jar

apm-spring-webflux-5.x-plugin-8.13.0.jar

架包拷贝到plugins 目录下
gateway架包的选择根据springgateway的版本进行选择

配置请求标识

经过上一步配置的请求会存在调用链路,但是链路仅到网关,不会到后续服务

处理方法

  1. 服务中引入架包
    pom
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>
  1. 配置链路id
java 复制代码
package com.kittlen.gateway.filter;

import org.apache.skywalking.apm.toolkit.trace.TraceContext;
import org.apache.skywalking.apm.toolkit.webflux.WebFluxSkyWalkingOperators;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

/**
 * @author kittlen
 * @version 1.0
 * @date 2023/9/5 13:41
 * skywalking 全链路配置
 */
@Component
public class PutTraceIdIntoResponseHeaderFilter implements GlobalFilter {

    String xTraceIdKey = "x-trace-id";

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        String traceId = WebFluxSkyWalkingOperators.continueTracing(exchange, TraceContext::traceId);
        exchange.getResponse().getHeaders().set(xTraceIdKey, traceId);
        return chain.filter(exchange);
    }
}
相关推荐
Bs_MoneyMagnet1 天前
基于springboot+vue的医疗健康便民服务平台的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring
CRMEB系统商城1 天前
CRMEB标准版系统(Java)v3.1正式发布
java·spring·微信小程序·php·教育电商
行百里er1 天前
Spring Insight 里收到的 Span 是怎么存下来的
spring boot·spring·监控
步行cgn1 天前
Spring 的模块体系详解
java·数据库·spring
Raas1001 天前
MAI Gateway(魔芋企业级AI网关)功能全解:AI网关有哪些功能?一文看懂AI网关能力矩阵
大数据·人工智能·矩阵·gateway·mai gateway·企业级产品
vx-程序开发1 天前
【计算机毕设】基于Spring Boot的古城景区管理系统88564
java·数据库·spring boot·后端·spring·elasticsearch·课程设计
野生技术架构师1 天前
从向量检索到混合搜索优化:Spring AI 2.0.1 + pgvector RAG 实战
java·人工智能·spring
Wang's Blog1 天前
Java框架快速入门: Spring Security+OAuth2之实现UserDetails与GrantedAuthority深度定制
java·spring·mybatis
杨运交1 天前
[070][Web模块]Spring MVC TOTP 二次认证拦截器:设计与源码深度解析
前端·spring·mvc
MetaLite1 天前
Spring Cache只留注解-MetaLite如何二开缓存运行时
java·spring·缓存