SkyWalking Agent 配置 Spring Cloud Gateway 插件解决日志错误

SkyWalking Agent 配置 Spring Cloud Gateway 插件解决日志错误

IDEA中启动网管时,需要配置VM启动参数,格式如下:

bash 复制代码
# 配置 SkyWalking Agent 启动参数,以便将网关服务的性能数据上报到 SkyWalking 服务器。
-javaagent:/path/to/skywalking-agent.jar \
-Dskywalking.agent.service_name=${APPLICATION_NAME}-skywalking \
-Dskywalking.collector.backend_service=127.0.0.1:11800
问题详情

在一个应用项目中使用 SkyWalking 监控时,Spring Cloud Gateway 服务上报出如下错误信息:

复制代码
2024-12-29 16:45:34.076 [TID:N/A] [http-nio-5] ERROR
  o.s.b.a.w.r.error.AbstractErrorWebExceptionHandler:122 - [2349a963-1]  500 Server Error for HTTP GET "/app/consumer/skuInfo/1"
java.lang.NullPointerException: null
    at org.apache.skywalking.apm.plugin.spring.cloud.gateway.v21x.HttpClientFinalizerResponseConnectionInterceptor$1.apply(HttpClientFinalizerResponseConnectionInterceptor.java:42)
...
解决过程

过程分析后发现,错误原因是 SkyWalking Agent 的 plugins 文件夹中缺少对 Spring Cloud Gateway 进行监控的实现插件。此插件位于 SkyWalking Agent 的 optional-plugins 文件夹中,应采取如下步骤进行解决:

  1. 确定 Spring Cloud Gateway 版本

    • 通过命令格式查看项目依赖。

      bash 复制代码
      mvn dependency:tree | grep gateway
      # 或
      gradle dependencies | grep gateway
    • 记录项目中 Spring Cloud Gateway 版本,例如「3.x」。

  2. 找到相关插件文件

    • 在 SkyWalking Agent 文件夹中的 optional-plugins 下,找到适配版本的插件:

      text 复制代码
      apm-spring-cloud-gateway-3.x-plugin-8.9.0.jar
  3. 将插件拷贝到 plugins 文件夹

    • 将上述插件文件拷贝到 skywalking-agent/plugins 文件夹中。
  4. 重启服务

    • 重新启动应用项目,检查 SkyWalking 探针是否正常工作。
注意事项
  1. 插件版本对应

    • SkyWalking Agent 的插件需要和项目使用的 Spring Cloud Gateway 版本相匹配。
    • SkyWalking 主版本应与插件版本匹配:
      • 例如,SkyWalking 进行到8.9.0,应使用 apm-spring-cloud-gateway-3.x-plugin-8.9.0.jar
  2. Reactor Netty 依赖关系

    • Spring Cloud Gateway 依赖 Reactor Netty,需要 Reactor Netty 版本和插件声明匹配。
  3. 用 SkyWalking UI 校验效果

    • 启动后,访问相关服务探针,检查是否显示完整的调用链,如响应时间、问题码、路由等。
进阶优化提示
  1. 调试 SkyWalking 日志源

    • 启用 SkyWalking 调试日志,查看插件是否被正确装载。

      properties 复制代码
      logging.level.org.apache.skywalking=DEBUG
  2. 优化插件版本

    • 实时升级项目依赖和 SkyWalking 插件,确保与 Spring 最新版本兼容。
  3. 产线通用化添加

    • 在多服务环境中,确保同样插件配置在所有相关服务中完整加载。
相关推荐
Linux-18742 天前
分布式链路追踪系统之docker-compose安装skywalking
云原生·docker-compose·skywalking·分布式链路追踪系统·应用程序性能监控
流烟默2 天前
SpringBoot应用链路追踪 traceId 技术方案
spring boot·skywalking·traceid
Linux-18743 天前
分布式链路追踪系统之二进制安装skywalking
elasticsearch·云原生·skywalking·分布式链路追踪系统·应用程序性能监控
令狐前生6 天前
SpringBoot3项目集成Skywalking示例
skywalking
乒乓狂魔8 天前
SkyWalking 也能 AI 智能化了
人工智能·skywalking
摇滚侠15 天前
Skywalking 应用性能监控和可观测性分析平台 简介
skywalking
Databuff15 天前
skywalking 快速使用入门
skywalking
摇滚侠17 天前
Apache Skywalking 实战 阅读笔记 第三章
笔记·apache·skywalking
摇滚侠18 天前
Apache Skywalking 实战 阅读笔记 第二章
笔记·apache·skywalking
Databuff18 天前
国产开源APM databuff 成为 CNCF 顶级项目opentelemetry 官宣Vendor
运维·开源·skywalking·apm·可观测性·opentelemetry