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);
    }
}
相关推荐
码云数智-园园3 天前
C++20 Modules 模块详解
java·开发语言·spring
咖啡八杯3 天前
GoF设计模式——享元模式
java·spring·设计模式·享元模式
Flittly3 天前
【AgentScope Java新手村系列】(10)实战-多Agent天气助手
java·spring boot·spring
李少兄3 天前
从原理到实战:Spring IoC/DI 核心知识体系与高频面试题全解
java·后端·spring
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
ofoxcoding3 天前
在AI API聚合平台配置DeepSeek V3.2提示词缓存实战:快速接入与成本优化指南
人工智能·spring·缓存·ai
一杯奶茶¥3 天前
水果销售网站 CRM客户信息管理系统 超市管理系 酒店管理系统 健身房管理系统 在线音乐网站 校园招聘系统
java·vue.js·spring boot·mysql·spring·java项目
摇滚侠3 天前
SpringMVC 入门到实战 RESTFul 49-55
java·开发语言·后端·spring·intellij-idea·restful
我登哥MVP3 天前
SpringCloud Alibaba 核心组件解析:服务链路追踪
java·spring boot·后端·spring·spring cloud·java-ee·maven
Ysouy3 天前
Spring Data Elasticsearch 全流程学习教程
java·spring·elasticsearch