首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >​​​​​​​【保姆级教程】用 Docker 为你的 Spring Boot 项目集成 SkyWalking 全链路监控

​​​​​​​【保姆级教程】用 Docker 为你的 Spring Boot 项目集成 SkyWalking 全链路监控

作者头像
Ynchen
发布2025-12-21 13:43:29
发布2025-12-21 13:43:29
1140
举报

大家好,我是 Ynchen。在我的博客项目开发和优化过程中,我深刻体会到了“可观测性”的重要性。当你想知道“我的接口为什么变慢了?”、“哪个数据库查询是性能瓶颈?”时,一个强大的APM(应用性能监控)工具就成了刚需。

今天,我将手把手带你走过一遍我为个人博客项目 从零开始,使用 Docker 部署 SkyWalking 9.4.0 并成功接入 Spring Boot 应用 的全过程。

一、 我们的目标:SkyWalking 是什么?

简单来说,SkyWalking 就像是你应用的“随身医生”和“GPS导航”。它能帮你:

  • 看清服务链路:一个前端请求过来,经过了哪些后端服务,调用了哪些数据库、Redis、MQ,一目了然,形成一张拓扑图。
  • 定位性能瓶颈:告诉你每个环节花了多长时间,哪个接口慢,哪条SQL查询是罪魁祸首。
  • 监控健康状况:实时查看应用的QPS(每秒请求数)、响应时间、错误率以及JVM的内存、CPU、线程等状态。

我们要部署的SkyWalking主要由三部分构成:

  1. OAP (后端服务):数据处理中心,负责接收、分析和存储监控数据。
  2. UI (Web界面):一个帅气的仪表盘,用来可视化地展示OAP处理后的数据。
  3. Agent (探针):一个无侵入的Java代理,需要“挂载”到我们的Java应用上,负责自动收集数据并发送给OAP。
二、 部署方案:为什么选择 Docker + H2?
  • Docker & Docker Compose: 容器化部署是现代运维的最佳实践。它能保证环境的纯净和一致性,并且通过 docker-compose.yml 文件,我们可以一键启动和管理OAP和UI这两个互相关联的服务。
  • H2 数据库: SkyWalking OAP需要一个地方存数据。对于生产环境,官方推荐使用Elasticsearch。但对于我们本地开发、学习或个人项目来说,ES过于庞大和消耗资源。OAP内置了对 H2 数据库的支持,它是一个轻量级的嵌入式数据库,无需单独安装,开箱即用,非常适合快速搭建一套完整的体验环境。
三、 实战开始:一步步搭建你的监控平台

前提:请确保你的服务器或虚拟机上已经安装了 docker 和 docker-compose。

这是我们整个部署工作的“蓝图”。在你的服务器上(比如 /root/skywalking 目录下),创建一个 docker-compose.yml 文件,并填入以下内容:

代码语言:javascript
复制
    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-oapskywalking-ui 两个容器都处于 Up 状态。


第3步:准备并挂载 Java Agent
  1. 下载 Agent 访问 SkyWalking 官网 下载页面,找到 Java Agent 部分,下载版本号为 9.4.0 的发行包(文件名是 apache-skywalking-java-agent-9.4.0.tgz注意不要下载带 -src 的源码包!)。
  2. 解压并上传 在本地解压后,你会得到 apache-skywalking-java-agent-9.4.0 文件夹。为了方便,我把它重命名为 skywalking-agent,然后用 scp 整个上传到了我服务器的 /root 目录下。
  3. 修改应用启动命令 这是最关键的一步,我们需要让 Java 应用在启动时加载这个 Agent。
    • 如果你是像我一样用 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
    • 如果你是在 IDEA 中本地开发调试
      • 打开右上角 Edit Configurations...VM options
      • 填入以下内容(注意替换为你自己的真实路径和虚拟机IP!): -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 服务在哪里

第4步:重启应用,见证奇迹!

重启 Spring Boot 应用

代码语言:javascript
复制
sudo systemctl restart blog.service 

或者直接在 IDEA 里点运行按钮即可。

确保防火墙/安全组开放 9090 端口

访问 SkyWalking UI:在浏览器输入:

http://<你的服务器或虚拟机IP>:9090

产生流量:访问你的博客,随便点点页面。

观察 UI:等待 1~2 分钟,刷新 SkyWalking UI,你就能在服务列表看到你命名的应用。

点击进入,一个全新的监控世界就向你敞开了大门 🚀!


四、总结

通过 Docker 和 SkyWalking,我们用一种 现代化、低成本 的方式,为项目加上了专业的“眼睛”。

  • ✅ 快速定位问题
  • ✅ 性能优化
  • ✅ 为简历增色的项目经验

如果你在部署过程中遇到各种奇怪的问题,不要灰心,仔细查看日志,一步步排查,你一定能成功!


✨ 祝编码愉快! —— Ynchen

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 我们的目标:SkyWalking 是什么?
  • 二、 部署方案:为什么选择 Docker + H2?
  • 三、 实战开始:一步步搭建你的监控平台
  • 第3步:准备并挂载 Java Agent
  • 第4步:重启应用,见证奇迹!
  • 四、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档