skywalking agent必须通过-javaagent参数挂载,路径需正确、顺序在-jar前、jdk版本兼容、插件齐全;配置改agent/config/agent.config,关键项包括agent.service_name和collector.backend_service。

Java启动参数里怎么加SkyWalking Agent
必须通过 -javaagent 参数挂载,不能靠 classpath 或 jar 包解压方式加载。Agent 是 JVM 启动时注入字节码的,晚于 JVM 初始化就完全失效。
-
-javaagent:/path/to/skywalking-agent.jar是唯一生效路径,路径不能有空格或中文(否则部分 JDK 版本会静默失败) - 必须放在
-jar之前,顺序错(比如写在-jar app.jar后面)会导致参数被忽略 - 如果用 Spring Boot 的
java -cp方式启动,-javaagent仍要放在最前面,且-cp和主类之间不能漏掉--(某些 Boot 版本需显式分隔)
skywalking-agent.jar 配置文件在哪改、改哪些关键项
配置主体是 agent/config/agent.config,不是 agent.conf 或根目录下的任意 .conf 文件。改错位置等于没配。
-
agent.service_name:必须设为业务可读名,如order-service,别用默认的MyService,否则所有服务在 UI 里都叫同一个名字 -
collector.backend_service:填 OAP 服务地址,格式是127.0.0.1:11800,不是 HTTP 地址(不带http://),端口也不是 12800(那是 UI 端口) -
agent.namespace:多租户场景才需要,单集群可不设;设了就必须和 OAP 的namespace配置一致,否则数据直接被丢弃 - 修改后不用重启 OAP,但 Java 进程必须重启才能生效——Agent 配置只读一次,不热加载
为什么应用启动报 NoClassDefFoundError 或 InstrumentException
大概率是 Agent 和应用使用的 JDK 版本不兼容,或者 Agent 自身被二次打包污染。
- SkyWalking 9.x 要求 JDK 8u251+ / JDK 11+ / JDK 17+,用 JDK 8u192 启动会卡在
ByteBuddy类加载失败,错误里带net.bytebuddy - 不要把
skywalking-agent.jar解压进项目 lib 目录,也不要用 Maven 插件重打包进 fat-jar——Agent 必须以独立 jar 形式通过-javaagent加载 - 若用 JRebel、Arthas 等其他 agent,注意加载顺序:
-javaagent多个时,SkyWalking 建议放在最前面,否则可能因字节码已被改写而跳过增强
Spring Cloud Gateway 或 Dubbo 应用埋点不全怎么办
默认配置下,这些框架的内部调用链路会被截断,不是 Agent 没生效,而是插件没开。
立即学习“Java免费学习笔记(深入)”;
- 检查
agent/config/optional-plugins/目录下是否有对应插件 jar(如dubbo-plugin.jar、spring-cloud-gateway-2.2.x-plugin.jar),没有就从 SkyWalking 发行包里复制过去 - 插件启用靠
agent/plugins/目录软链或硬拷贝,不是靠配置开关——只要 jar 在 plugins 目录里,启动时自动加载 - Dubbo 3.x 默认用 Triple 协议,需额外启用
dubbo-triple-plugin.jar,否则 consumer → provider 链路显示为“Unknown”
Agent 配置看着简单,但路径、顺序、JDK 版本、插件存在性这四点只要错一个,链路就断得无声无息。线上排查时先盯死日志里有没有 org.apache.skywalking.apm.agent.SkyWalkingAgent 开头的初始化成功行,没有就说明 -javaagent 根本没跑进去。










