解决skywalking-agent-java不支持spring cloud gateway问题
开发环境:Windows10 、JDK17
下载解压Java Agent
skywalking官网下载地址:https://skywalking.apache.org/downloads/
解压目录为:D:\Programs\soft-Plugins\apache-skywalking-java-agent-8.16.0\skywalking-agent
解压后目录结构为:
在IDEA中配置SkyWalking Agent
可参考官网博客文档:https://skywalking.apache.org/zh/2020-04-19-skywalking-quick-start/#232-idea
我的IDEA版本:IntelliJ IDEA 2021.3.3 (Ultimate Edition)
设置gateway项目的Edit Configuration选项
配置VM options:
-javaagent:D:\Programs\soft-Plugins\apache-skywalking-java-agent-8.16.0\skywalking-agent\skywalking-agent.jar
-Dskywalking.agent.service_name=bulv-gateway
-Dskywalking.collector.backend_service=127.0.0.1:11800
必须在VM options中指定-Dskywalking.agent.service_name才会在skywalking服务列表中显示服务名称。
配置Environment variables:
SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
如果configuration中没有Environment variables点击Modify options选中Environment variables:
最后配置如下:
复制jar
根据官方对Optional Plugins的相关描述:
https://skywalking.apache.org/docs/skywalking-java/v8.16.0/en/setup/service-agent/java-agent/optional-plugins/
提供了几点作为依据:
- Plugin of Spring Cloud Gateway 2.x and 3.x in optional plugin folder.Please only activate this plugin when you install agent in Spring Gateway.【Spring Cloud Gateway插件2.X和3.x。在Optional Plugins(可选插件)文件夹中。请仅在Spring Gateway中安装代理时激活此插件。】
- Plugin of spring-webflux-5.x in the optional plugin folder. Please only activate this plugin when you use webflux alone as a web container. If you are using SpringMVC 5 or Spring Gateway, you don’t need this plugin.【spring-webflux-5.x插件。在可选的插件文件夹中。请仅在使用webflux作为web容器时激活此插件。如果你正在使用SpringMVC 5或Spring Gateway,你不需要这个插件。】
所有我们进入skywalking-agent下的optional-plugins目录,把apm-spring-cloud-gateway-x.x-plugin-8.16.0.jar复制到skywalking-agent下的plugins目录里,根据spring-cloud-gateway依赖的spring版本选择不同的jar,我依赖的spring boot版本为3.0.2,所有我复制的apm-spring-cloud-gateway-3.x-plugin-8.16.0.jar。
启动skywalking-apm
前提是下载并解压了apache-skywalking-apm,然后进入到bin目录下双击startup.bat
注意:
我这里把D:\Programs\soft-Plugins\apache-skywalking-apm-bin\webapp和D:\Programs\soft-Plugins\apache-skywalking-apm-bin\config下的log4j2.xml的日志级别改为了DEBUG所以打印的日志多,默认是INFO级别的。
最后启动的spring cloud gateway项目,然后访问网关相关的接口后,再访问地址:http://127.0.0.1:8080,打开skywalking dashboard 点击左侧菜单:普通服务->服务。查看相关服务实例的Trace。