news 2026/2/18 22:01:25

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 中看到全链路追踪。
  • 避免常见错误:路径错误、服务名非法、版本不匹配。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/13 7:30:41

让大模型更“懂”外部知识:RAG技术及未来发展综述

&#xff5c;引言 如何更好地结合外部数据&#xff0c;如何提升模型处理专业领域问题的可靠性&#xff0c;是大语言模型应用开发中值得不断思考的问题。针对此&#xff0c;微软亚洲研究院的研究员们提出了一种基于查询需求分层的 RAG 任务分类法&#xff0c;从显式事实、隐式事…

作者头像 李华
网站建设 2026/2/8 8:36:56

从单智能体到多智能体:九种模式教你搭建高效AI应用

想要构建一个智能体应用&#xff0c;最重要的是什么&#xff1f;可能很多人首先会想到要选择一个性能强大的大模型。这个回答没错&#xff0c;毕竟当前的LLM Based Agent哪能缺少LLM的支撑。但事实却是&#xff0c;很多基于先进大模型构建的智能体没能体现出应用效果&#xff0…

作者头像 李华
网站建设 2026/2/18 5:13:18

降重去 AI 双 buff 拉满!虎贲等考 AI 解锁论文 “隐形优化” 新姿势

当论文查重率飘红的焦虑&#xff0c;遇上 AIGC 检测的 “生死大考”&#xff0c;多少毕业生陷入 “改了又改&#xff0c;还是过不了关” 的死循环&#xff1f;市面上的降重工具要么是简单同义词替换&#xff0c;改完逻辑混乱&#xff1b;要么只能降重复率&#xff0c;AI 痕迹依…

作者头像 李华
网站建设 2026/2/12 4:54:06

【Java毕设源码分享】基于springboot+vue的智慧物业服务系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/2/18 2:10:12

在CentOS上快速安装NVM和Node.js 14:完整指南与优化方案

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务) &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1;个人微信&a…

作者头像 李华