当前位置: 首页 > news >正文

SkyWalking 入门实战:Spring Boot 应用性能监控从0到1

视频看了几百小时还迷糊?关注我,几分钟让你秒懂!


一、为什么我们需要 SkyWalking?

在微服务架构越来越普及的今天,一个简单的业务请求可能要经过多个服务之间的调用。一旦系统出现性能瓶颈或异常,排查起来非常困难。

典型痛点场景:

  • 用户反馈“下单慢”,但不知道是哪个服务拖慢了整体响应?
  • 系统突然 CPU 飙升,却找不到具体是哪个接口或方法导致?
  • 想知道服务间的调用链路、依赖关系、成功率、吞吐量等指标?

这时候,我们就需要APM(Application Performance Monitoring)工具,而Apache SkyWalking就是一个开源、强大、对 Java 友好的 APM 解决方案。


二、SkyWalking 是什么?

SkyWalking 是 Apache 基金会下的开源 APM 系统,支持自动探针(Agent)方式无侵入地监控 Java、.NET、Node.js 等应用,提供:

  • 分布式追踪(Trace)
  • 服务拓扑图(Topology)
  • 性能指标监控(Metrics)
  • 日志集成(可选)
  • 告警机制

对于 Spring Boot 开发者来说,只需加个 Java Agent,无需改一行代码,就能实现全链路监控!


三、需求场景模拟

假设你正在开发一个电商系统,包含以下两个服务:

  • order-service:处理用户下单
  • payment-service:处理支付逻辑

用户点击“下单”后,order-service会调用payment-service。现在你想知道:

  1. 整个下单流程耗时多少?
  2. 哪个服务是瓶颈?
  3. 调用是否成功?失败率多少?

这就非常适合用 SkyWalking 来解决!


四、环境准备

1. 下载 SkyWalking 后端(OAP + UI)

前往官网:https://skywalking.apache.org/downloads/

选择最新稳定版(如 v9.7.0),下载后解压:

tar -zxvf apache-skywalking-apm-9.7.0.tar.gz cd apache-skywalking-apm-bin

2. 启动 SkyWalking

默认使用 H2 存储(适合测试),直接启动:

# Linux / Mac bin/startup.sh # Windows bin/startup.bat

启动成功后,访问:http://localhost:8080
你会看到 SkyWalking 的 Web UI 界面。

默认端口:OAP 11800(接收数据),UI 8080(展示界面)


五、Spring Boot 应用接入 SkyWalking(正确做法 ✅)

步骤 1:准备两个 Spring Boot 服务

order-service(端口 8081)
// OrderController.java @RestController public class OrderController { @Autowired private RestTemplate restTemplate; @GetMapping("/createOrder") public String createOrder() { // 模拟调用 payment-service String result = restTemplate.getForObject("http://localhost:8082/pay", String.class); return "Order created! Payment result: " + result; } }
payment-service(端口 8082)
// PaymentController.java @RestController public class PaymentController { @GetMapping("/pay") public String pay() { // 模拟支付耗时 try { Thread.sleep(200); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } return "Payment success"; } }

别忘了在order-service中注册RestTemplateBean:

@Bean public RestTemplate restTemplate() { return new RestTemplate(); }

步骤 2:下载 SkyWalking Agent

从 SkyWalking 安装包中找到agent/目录,或者单独下载 agent 包。

路径示例:apache-skywalking-apm-bin/agent/

步骤 3:启动应用时挂载 Agent

关键!不是改代码,而是通过 JVM 参数加载 Agent。

启动order-service

java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar \ -Dskywalking.agent.service_name=order-service \ -Dskywalking.collector.backend_service=localhost:11800 \ -jar order-service.jar

启动payment-service

java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar \ -Dskywalking.agent.service_name=payment-service \ -Dskywalking.collector.backend_service=localhost:11800 \ -jar payment-service.jar

注意:

  • /path/to/skywalking-agent/替换为你的实际路径
  • service_name是你在 UI 中看到的服务名,建议用-_,不要带空格

步骤 4:发起请求并查看效果

浏览器访问:http://localhost:8081/createOrder

然后打开 SkyWalking UI(http://localhost:8080),几秒后你会看到:

  • 两个服务出现在拓扑图中
  • 调用链显示order-service → payment-service
  • 每个接口的响应时间、吞吐量、成功率等指标

恭喜!你已成功接入 SkyWalking!


六、反例演示(错误做法 ❌)

反例 1:只加依赖,不挂载 Agent

有些开发者以为只要在pom.xml加 SkyWalking 依赖就行:

<!-- 错误!这只是 API,不能自动埋点 --> <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-trace</artifactId> <version>8.16.0</version> </dependency>

后果:没有任何自动追踪数据上报!因为自动埋点靠的是Java Agent 字节码增强,不是普通依赖。

反例 2:Agent 路径写错或权限不足

java -javaagent:./skywalking-agent.jar ... # 如果当前目录没有 agent,会启动失败!

后果:JVM 启动报错,应用根本起不来。

反例 3:服务名包含特殊字符

-Dskywalking.agent.service_name=Order Service # ❌ 有空格!

后果:SkyWalking 可能无法正确识别服务,导致 UI 显示异常或数据丢失。


七、注意事项 & 最佳实践

项目建议
Agent 版本必须与 OAP 后端版本一致,否则可能不兼容
服务命名使用小写+中划线,如user-service,避免中文、空格、大写
生产环境建议使用 Elasticsearch 代替 H2 存储(修改config/application.yml
性能影响Agent 默认采样率 100%,高并发下可调整agent.sample_n_per_3_secs
日志关联可集成apm-toolkit-logback-1.x实现 TraceID 打印到日志

八、进阶:手动埋点(可选)

虽然自动埋点已覆盖大部分场景,但有时你想监控某个方法内部逻辑:

import org.apache.skywalking.apm.toolkit.trace.Trace; import org.apache.skywalking.apm.toolkit.trace.Tag; @Trace public void businessLogic(@Tag(key = "userId") String userId) { // 你的业务代码 }

这样会在调用链中新增一个 span,方便定位细粒度问题。


九、总结

  • SkyWalking 是无侵入、自动化的 APM 工具,特别适合 Spring Boot 微服务。
  • 核心是通过-javaagent挂载探针,不是改代码!
  • 正确配置服务名和后端地址,即可在 UI 中看到全链路追踪。
  • 避免常见错误:路径错误、服务名非法、版本不匹配。

视频看了几百小时还迷糊?关注我,几分钟让你秒懂!

http://www.jsqmd.com/news/248394/

相关文章:

  • 【好写作AI】理工男/女的救星:把难产的数据报告,变成流畅的学术语言
  • 厄达替尼Erdafitinib治疗FGFR突变尿路上皮癌的客观缓解率与耐药机制研究
  • Spring Boot 中各种 Bean 注入方式的优缺点详解(附实战代码)
  • Jackson 1.x到2.x的演进与Spring集成
  • 【好写作AI】商科生的“战略外脑”:让你的案例分析,从课后作业变咨询报告
  • Jackson 1.x核心用法与Spring 3.x集成
  • 【好写作AI】法学“准律师”的智能卷宗:让AI帮你搞定引用与检索的脏活累活
  • leetcode 869. Reordered Power of 2 重新排序得到 2 的幂-耗时100
  • RNA-seq数据分析实战 | 2026年第2期,开启你的生信学习之旅
  • AI实战篇:RAG评估从0到1落地,让你的检索增强生成系统能量化、能优化
  • 【好写作AI】从“开挂”到“自强”:把AI变成你的私人学术健身教练
  • 从单细胞测序到人群大数据:一文读懂如何利用scRNA-seq与UK Biobank挖掘临床靶点
  • 跟我学C++中统篇—STL中的bind
  • 【好写作AI】别吵了!用AI写的论文,到底算谁的?一个灵魂拷问的终极回答
  • 雷池WAF安装
  • 【好写作AI】毕业季“分身术”:用AI把一天48小时的魔法变成现实
  • 拥抱大模型:深入剖析 ReAct 的核心原理、技术架构及其对 AI 领域的深远影响
  • 5 款 AI 写论文哪个好?实测横评!虎贲等考 AI 凭硬核实力 C 位胜出
  • 【好写作AI】一次“氪金”,终身受益?这笔毕业季投资到底值不值?
  • 从单智能体到多智能体:九种模式教你搭建高效AI应用
  • 虎贲等考 AI:重塑学术写作新范式,全流程智能赋能论文创作
  • Java IO 与 NIO:从 BIO 阻塞陷阱到 NIO 万级并发
  • 从Windows 10上为远程Linux上安装claude code环境
  • 新一代开源CRM系统源码功能全览,支持设定年度、季度、月度等多层级业绩指标
  • 什么是 MCP?如何在 Spring Boot + LangChain4j 中落地实战?
  • 60N02-ASEMI藏在电路里的“效率密码”
  • 课程论文别再 “凑字数”!虎贲等考 AI:一键解锁高分学术答卷的秘密
  • 顶刊级科研绘图不用愁!虎贲等考 AI 一键解锁论文 “视觉加分密码”
  • 【Java毕设全套源码+文档】基于springboot的家校互联管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 全面解析 Agent Engineering 的十大工程维度:生产级 Agent 系统的炼成之路