概述
随着业务增长,接口性能监控需求日益重要。本文介绍如何在 Java 老项目中集成 SkyWalking 进行链路追踪与性能分析。
1. 准备工作
下载 SkyWalking Java Agent
从官网下载对应版本的 Java Agent 包(建议使用与后端版本一致的旧版本以兼容 JDK8)。
解压 Agent 包
将下载的压缩包解压到项目所在服务器的合适位置:
tar -zxvf apache-skywalking-java-agent-8.9.0.tgz
mv apache-skywalking-java-agent-8.9.0 skywalking-agent
2. 配置 Agent
编辑 skywalking-agent/config/agent.config 文件,配置核心参数:
# 服务名称(在 SkyWalking UI 中显示的服务名称)
agent.service_name=${SW_AGENT_NAME:your-service-name}
# SkyWalking 后端地址(OAP Server)
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
# 采样率(每 3 秒采集的链路数据,0 表示不采集,-1 为全量采样仅用于调试)
agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:100}
可选配置项:
agent.namespace:命名空间,用于区分不同环境agent.sample_n_per_3_secs:调整采样率以控制性能影响agent.trace_segment_ref_limit_per_span:限制链路 Span 数量
3. 启动应用时集成 Agent
命令行启动
java -javaagent:./skywalking-agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=your-service-name \
-Dskywalking.collector.backend_service=127.0.0.1:11800 \
-jar your-application.jar
IDEA 集成
在 VM Options 中添加以下参数:
-javaagent:./skywalking-agent/skywalking-agent.jar
-Dskywalking.agent.service_name=your-service-name
-Dskywalking.collector.backend_service=127.0.0.1:11800
注:11800 端口是 OAP Service 默认接收端口。
4. 部署 SkyWalking 服务端
下载 SkyWalking APM
从官网下载对应版本的 apm 包并解压:
tar -zxvf apache-skywalking-apm-8.9.0.tar.gz
配置 WebUI
配置文件位于 webapp/webapp.yml,主要配置项包括:
- 修改监听端口(可选)
server:
port: 8080
address: 0.0.0.0
- 配置 OAP 服务地址
oapServices: ${SW_OAP_ADDRESS:-http://localhost:12800}
若 OAP 服务部署在其他服务器,需修改为实际 IP 地址。
启动服务
# 启动 WebUI
./bin/webappService.sh
# 启动 OAP
./bin/oapService.sh
# 或同时启动
./bin/startup.sh
启动后访问 http://localhost:8080,在服务列表中看到你的服务名称即说明集成成功。
5. 配置 MySQL 存储
默认使用内存存储记录,生产环境建议修改为 MySQL。
修改 config/application.yml:
selector: ${SW_STORAGE:mysql}
mysql:
properties:
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://192.168.15.106:3306/skywalking?rewriteBatchedStatements=true"}
dataSource.user: ${SW_DATA_SOURCE_USER:root}
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:your_password}
driverClassName: com.mysql.cj.jdbc.Driver
注意:必须添加 MySQL 驱动依赖,否则启动会报错。
常见错误日志示例:
java.lang.RuntimeException: Failed to get driver instance for jdbcUrl=jdbc:mysql://...
Caused by: java.sql.SQLException: No suitable driver
解决方法:根据设置版本下载对应的 MySQL Connector JAR 包(如 mysql-connector-java),放入 oap-libs 目录后重启。
数据库表结构会自动初始化。
6. 常见问题
启动报错处理
若启动后发现 skywalking-web 报错,可尝试关闭 OAP 和 WebUI 服务后重新执行启动命令。
注意事项
- 版本兼容性:Agent 版本应与 SkyWalking 后端版本兼容
- 性能影响:采样率过高会影响应用性能,生产环境建议调整采样率
- 网络连通性:确保应用服务器能访问 SkyWalking 后端地址
采样率配置建议
- 高并发场景:300(每秒约 100 个请求)
- 中低流量场景:500(每秒约 166 个请求)
- 测试/调试环境:-1(全量采样,仅用于调试)
运行效果如下:

数据库初始化完成:

最终监控页面:



