概述
随着业务增长,接口性能监控需求日益重要。本文介绍如何在 Java 老项目中集成 SkyWalking 进行链路追踪与性能分析。
在 Java 老项目中集成 SkyWalking 进行链路追踪和性能监控的步骤。内容包括下载并解压 Java Agent,配置服务名称及采样率,通过 JVM 参数启动应用,部署 SkyWalking OAP 及 WebUI 服务,以及将存储后端从内存切换至 MySQL 的配置方法。同时提供了常见错误日志分析及解决方案,如缺少 MySQL 驱动导致的启动失败问题。

随着业务增长,接口性能监控需求日益重要。本文介绍如何在 Java 老项目中集成 SkyWalking 进行链路追踪与性能分析。
从官网下载对应版本的 Java Agent 包(建议使用与后端版本一致的旧版本以兼容 JDK8)。
将下载的压缩包解压到项目所在服务器的合适位置:
tar -zxvf apache-skywalking-java-agent-8.9.0.tgz
mv apache-skywalking-java-agent-8.9.0 skywalking-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 数量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
在 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 默认接收端口。
从官网下载对应版本的 apm 包并解压:
tar -zxvf apache-skywalking-apm-8.9.0.tar.gz
配置文件位于 webapp/webapp.yml,主要配置项包括:
server:
port: 8080
address: 0.0.0.0
oapServices: ${SW_OAP_ADDRESS:-http://localhost:12800}
若 OAP 服务部署在其他服务器,需修改为实际 IP 地址。
# 启动 WebUI
./bin/webappService.sh
# 启动 OAP
./bin/oapService.sh
# 或同时启动
./bin/startup.sh
默认使用内存存储记录,生产环境建议修改为 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 目录后重启。
数据库表结构会自动初始化。
若启动后发现 skywalking-web 报错,可尝试关闭 OAP 和 WebUI 服务后重新执行启动命令。
运行效果如下:

数据库初始化完成:

最终监控页面:


微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online