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

这篇具有很好参考价值的文章主要介绍了SpringCloud Gateway 3.x 响应头添加 Skywalking TraceId。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在微服务架构中,一次请求可能会被多个服务处理,而每个服务又会产生相应的日志,且每个服务也会有多个实例。在这种情况下,如果系统发生异常,没有 Trace ID,那么在进行日志分析和追踪时就会非常困难,因为我们无法将所有相关的日志信息串联起来。

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

那么如何实现呢?微服务架构下 Api 网关是流量的统一出入口,在 Api 网关配置是最合适的,我们使用的 SpringCloud Gateway 作为微服务的应用网关,同时时 Skywalking 作为链路追踪工具。两者版本如下:

  • SpringCloud Gateway 3.1.4
  • Skywalking Agent 8.14.0
  1. 下载并解压 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 目录下。
  2. 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>
    
  3. 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);
        }
    }
    

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

原文地址:http://me.xpzzd.com/posts/add-skywalking-traceId-to-springcloud-gateway-response-header/
参考:https://github.com/apache/skywalking/discussions/10686文章来源地址https://www.toymoban.com/news/detail-423766.html

到了这里,关于SpringCloud Gateway 3.x 响应头添加 Skywalking TraceId的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloudGateway使用Skywalking时日志打印traceId

    Skywalking oap 与 agent部署 https://blog.csdn.net/kismet2399/article/details/131560171 spring-cloud-starter-gateway:3.1.4 Skywalking Agent:8.14.0 SpringCloudGateway集成Skywalking后无法打印traceId 目前没有找到logback的解决方式,所以日志打印改用log4j2 mvn添加配置 让日志获取到traceId 插件添加 将skywalking-agent下opt

    2024年02月13日
    浏览(39)
  • SpringCloud Gateway 整合RSA对请求参数解密、响应结果加密【SpringCloud系列10】

    本文章实现的是 网关中的 参数解密、响应数据体加密功能。 1 集成 commons-codec commons-codec 是Apache开源组织提供的用于摘要运算、编码解码的包。常见的编码解码工具Base64、MD5、Hex、SHA1、DES等。 本项目中集成RSA 非对称算法,RSAUtils 工具类 然后创建一个测试类,生成一组公钥

    2024年02月06日
    浏览(42)
  • SpringCloud GateWay通过过滤器GatewayFilter修改请求或响应内容

    Spring Cloud Gateway在有些场景中需要获取request body内容进行参数校验或参数修改,我们通过在GatewayFilter中获取请求内容来获取和修改请求体,下面我们就基于ServerWebExchange来实现: ServerWebExchange命名为服务网络交换器,存放着重要的请求-响应属性、请求实例和响应实例等等,有

    2024年02月16日
    浏览(50)
  • Spring boot结合SkyWalking-Trace工具类实现日志打印请求链路traceid

    随着业务的复杂化、解耦化,运维人员和开发人员需要对请求链路跟踪来快速发现和定位问题,基于应用已经集成了SkyWalking的前提下,如何通过获取SkyWalking生成的统一traceId并加入打印日志中,方便开发人员能够根据链路ID快速搜索单个请求的全链路日志呢? trace-id的生成:

    2024年02月15日
    浏览(47)
  • 记一次线上bug排查-----SpringCloud Gateway组件 请求头accept-encoding导致响应结果乱码

           基于公司的业务需求,在SpringCloud Gateway组件的基础上,写了一个转发服务,测试开发阶段运行正常,并实现初步使用。但三个月后,PostMan请求接口,返回异常,经排查,从日志中获取到转发响应的结果为乱码:        跟踪日志: 转发到目标接口,响应结果已乱码

    2024年02月04日
    浏览(49)
  • 【全链路追踪】XXL-JOB添加TraceID

    首先这个项目属于小型项目,由于人手以及时间限制,并未引入Skywalking等中间件来做调用链路追踪。Skywalking不在此次的讨论范围中。 其次介绍一下项目的相关背景 项目中主要有两种调用路径 Web请求走统一的网关入口,调用后端服务 XXL-JOB定时任务执行调度 Kubernetes 走统一网

    2024年02月11日
    浏览(29)
  • SpringCloud Alibaba实战和源码(7)Skywalking

      Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品,它同时吸收了Zipkin /Pinpoint /CAT 的设计思路。特点是:支持多种插件,UI功能较强,支持非侵入式埋点。目前使用厂商最多,版本更新较快。   数据存储支持:Elasticsearch、MySQL、H2、TiDB。默认是H2,而且是

    2024年02月11日
    浏览(36)
  • 【微服务】springcloud集成skywalking实现全链路追踪

    目录 一、前言 二、环境准备 2.1 软件环境 2.2 微服务模块 2.3 环境搭建

    2024年02月03日
    浏览(34)
  • 使用Nginx和Spring Gateway为SkyWalking的增加登录认证功能

    SkyWalking的可视化后台是没有用户认证功能的,默认下所有知道地址的用户都能访问,官网是建议通过网关增加认证。 本文介绍通过Nginx和Spring Gateway两种方式 生成密钥 配置nginx 密码配置:/etc/nginx/htpasswd 主要是使用Spring Gateway和Spring Security的基础认证formLogin实现, pom.xml使用

    2024年02月22日
    浏览(32)
  • skywalking-agent-java默认不支持spring cloud gateway问题

    开发环境:Windows10 、JDK17 skywalking官网下载地址:https://skywalking.apache.org/downloads/ 解压目录为:D:Programssoft-Pluginsapache-skywalking-java-agent-8.16.0skywalking-agent 解压后目录结构为: 可参考官网博客文档:https://skywalking.apache.org/zh/2020-04-19-skywalking-quick-start/#232-idea 我的IDEA版本: Int

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包