
大家好,我是 Ynchen。在我的博客项目开发和优化过程中,我深刻体会到了“可观测性”的重要性。当你想知道“我的接口为什么变慢了?”、“哪个数据库查询是性能瓶颈?”时,一个强大的APM(应用性能监控)工具就成了刚需。
今天,我将手把手带你走过一遍我为个人博客项目 从零开始,使用 Docker 部署 SkyWalking 9.4.0 并成功接入 Spring Boot 应用 的全过程。
简单来说,SkyWalking 就像是你应用的“随身医生”和“GPS导航”。它能帮你:
我们要部署的SkyWalking主要由三部分构成:
前提:请确保你的服务器或虚拟机上已经安装了 docker 和 docker-compose。
这是我们整个部署工作的“蓝图”。在你的服务器上(比如 /root/skywalking 目录下),创建一个 docker-compose.yml 文件,并填入以下内容:
version: '3.8'
services:
# SkyWalking OAP 后端服务
oap:
image: apache/skywalking-oap-server:9.4.0
container_name: skywalking-oap
# 考虑到虚拟机/个人服务器资源有限,我们手动限制OAP的内存
command: sh -c "exec java -Xms512m -Xmx1024m -jar /skywalking/oap-server.jar"
ports:
- "11800:11800" # Agent gRPC 数据接收端口
- "12800:12800" # UI 通信和健康检查端口
environment:
# 关键配置:指定使用H2作为存储
- SW_STORAGE=h2
# SkyWalking UI 前端界面
ui:
image: apache/skywalking-ui:9.4.0
container_name: skywalking-ui
# 使用 links 确保 UI 在 OAP 之后启动
links:
- oap
ports:
# 将UI的8080端口映射到服务器的9090端口,避免冲突
- "9090:8080"
environment:
# 告诉UI去哪里找OAP服务
# "oap" 是上面定义的服务名,Docker Compose会自动解析
- SW_OAP_ADDRESS=http://oap:12800注意:我在这里特意去掉了 healthcheck 和 depends_on。因为在资源有限的虚拟机上,OAP启动很慢,严格的健康检查反而会导致部署失败。我们选择手动验证。
在 docker-compose.yml 文件所在的目录下,执行:
Docker 会自动拉取 9.4.0 版本的镜像并启动容器。稍等片刻,用 docker ps 查看,你应该能看到 skywalking-oap 和 skywalking-ui 两个容器都处于 Up 状态。
apache-skywalking-java-agent-9.4.0.tgz,注意不要下载带 -src 的源码包!)。
apache-skywalking-java-agent-9.4.0 文件夹。为了方便,我把它重命名为 skywalking-agent,然后用 scp 整个上传到了我服务器的 /root 目录下。
systemd 管理服务器上的 JAR 包
编辑 /etc/systemd/system/blog.service 文件:
[Service] ExecStart=/usr/bin/java -javaagent:/root/skywalking-agent/skywalking-agent.jar \ -Dskywalking.agent.service_name=Ruyu-Blog-Backend \ -Dskywalking.collector.backend_service=127.0.0.1:11800 \ -jar /root/app.jar --spring.profiles.active=prod
Edit Configurations... → VM options
-javaagent:C:\path\to\your\skywalking-agent\skywalking-agent.jar \ -Dskywalking.agent.service_name=Ruyu-Blog-Backend-Local \ -Dskywalking.collector.backend_service=192.x.x.x:11800
参数解释:
-javaagent: 指定 Agent JAR 包的绝对路径
-Dskywalking.agent.service_name: 给应用起个名字,它会显示在 SkyWalking UI 上
-Dskywalking.collector.backend_service: 告诉 Agent,OAP 服务在哪里
重启 Spring Boot 应用
sudo systemctl restart blog.service 或者直接在 IDEA 里点运行按钮即可。
确保防火墙/安全组开放 9090 端口
访问 SkyWalking UI:在浏览器输入:
http://<你的服务器或虚拟机IP>:9090
产生流量:访问你的博客,随便点点页面。
观察 UI:等待 1~2 分钟,刷新 SkyWalking UI,你就能在服务列表看到你命名的应用。
点击进入,一个全新的监控世界就向你敞开了大门 🚀!

通过 Docker 和 SkyWalking,我们用一种 现代化、低成本 的方式,为项目加上了专业的“眼睛”。
如果你在部署过程中遇到各种奇怪的问题,不要灰心,仔细查看日志,一步步排查,你一定能成功!
✨ 祝编码愉快! —— Ynchen