当前位置: 首页 > news >正文

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

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

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

# 配置 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] ERRORo.s.b.a.w.r.error.AbstractErrorWebExceptionHandler:122 - [2349a963-1]  500 Server Error for HTTP GET "/app/consumer/skuInfo/1"
java.lang.NullPointerException: nullat 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 版本

    • 通过命令格式查看项目依赖。
      mvn dependency:tree | grep gateway
      # 或
      gradle dependencies | grep gateway
      
    • 记录项目中 Spring Cloud Gateway 版本,例如「3.x」。
  2. 找到相关插件文件

    • 在 SkyWalking Agent 文件夹中的 optional-plugins 下,找到适配版本的插件:
      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 调试日志,查看插件是否被正确装载。
      logging.level.org.apache.skywalking=DEBUG
      
  2. 优化插件版本

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

    • 在多服务环境中,确保同样插件配置在所有相关服务中完整加载。
http://www.lryc.cn/news/513363.html

相关文章:

  • canvas+fabric实现时间刻度尺(一)
  • 傲雷亮相2024中国时尚体育季(珠海站),展现户外移动照明风采
  • YOLOv10-1.1部分代码阅读笔记-block.py
  • @RestControllerAdvice注解
  • Enum枚举类与静态变量和静态数组的区别
  • uniapp——微信小程序读取bin文件,解析文件的数据内容(三)
  • SpringBoot集成ECDH密钥交换
  • python文件操作相关(excel)
  • 探索React与Microi吾码的完美结合:快速搭建项目,低代码便捷开发教程
  • 【面试系列】深入浅出 Spring Boot
  • @colyseus/social 模块详解
  • 石岩路边理发好去处
  • ROS 2中的DDS中间件
  • 「下载」智慧文旅运营综合平台解决方案:整体架构,核心功能设计
  • NVR小程序接入平台EasyNVR使用FFmpeg取流时提示错误是什么原因呢?
  • 计算机因进程结束导致白屏
  • OpenGL入门最后一章观察矩阵(照相机)
  • ES6中定义私有属性详解
  • 工业5G路由器让无人机数据传输 “飞” 起来
  • 面试经典150题——滑动窗口
  • MiFlash 线刷工具下载合集
  • 【MySQL高级】第1-4章
  • 课程设计项目之基于Python实现围棋游戏代码
  • uni-app tab 双击事件监听
  • 如何在Maxscript脚本中检查磁盘可用空间?
  • pytorch梯度上下文管理器介绍
  • Redis Stream:实时数据处理的高效解决方案
  • 使用交换机构建简单局域网
  • 基于MATLAB的冰箱水果保鲜识别系统
  • Flink源码解析之:Flink On Yarn模式任务提交部署过程解析