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.mzph.cn/news/1163625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【好写作AI】理工男/女的救星:把难产的数据报告,变成流畅的学术语言

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、实验室里的你&#xff0c;是否正在经历“表达型人格分裂”&#xff1f;跑仿真、做实验时&#xff1a;逻辑清晰&#xff0c;人机合一&#xff0c;如同学术界的“王牌操作员”。打开Word写论文时&#xff1a;瞬间词穷&…

厄达替尼Erdafitinib治疗FGFR突变尿路上皮癌的客观缓解率与耐药机制研究

厄达替尼作为一种针对FGFR&#xff08;成纤维细胞生长因子受体&#xff09;突变的靶向治疗药物&#xff0c;在尿路上皮癌的治疗领域展现出重要价值。多项权威研究对其治疗FGFR突变尿路上皮癌的客观缓解率及耐药机制进行了深入探索&#xff0c;为临床应用提供了关键依据。在客观…

Spring Boot 中各种 Bean 注入方式的优缺点详解(附实战代码)

视频看了几百小时还迷糊&#xff1f;关注我&#xff0c;几分钟让你秒懂&#xff01;在 Spring Boot 开发中&#xff0c;依赖注入&#xff08;Dependency Injection, DI&#xff09; 是最核心的概念之一。它帮助我们解耦组件、提高可测试性和维护性。但很多初学者面对 Autowired…

Jackson 1.x到2.x的演进与Spring集成

Jackson 从 1.x 到 2.x 的演进&#xff0c;不仅是一次技术升级&#xff0c;更深刻影响了 Spring 生态&#xff08;尤其是 Spring MVC 和 Spring Boot&#xff09;的 JSON 处理方式。下面从 Jackson 自身差异、Spring 对 Jackson 的集成变迁、实际开发中的迁移注意事项 三个维度…

【好写作AI】商科生的“战略外脑”:让你的案例分析,从课后作业变咨询报告

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、打开一份50页的企业案例&#xff0c;你是否感觉像在“荒野求生”&#xff1f;信息过载&#xff1a;财报、新闻、行业报告…信息像乱箭齐发&#xff0c;不知该接哪支。模型选择困难症&#xff1a;用SWOT、PEST还是波特…

Jackson 1.x核心用法与Spring 3.x集成

一、Jackson 1.x 核心使用方式 1. 基本依赖&#xff08;Maven&#xff09; <dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-core-asl</artifactId><version>1.9.13</version> </dependency> <de…

【好写作AI】法学“准律师”的智能卷宗:让AI帮你搞定引用与检索的脏活累活

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、写法学论文的你&#xff0c;是否感觉自己像个“人形法律数据库”&#xff1f;为了一个脚注&#xff0c;在《民法典》的1260条里 “大海捞针” &#xff0c;最后发现引用的还是旧司法解释。裁判文书网一搜“高空抛物”…

leetcode 869. Reordered Power of 2 重新排序得到 2 的幂-耗时100

Problem: 869. Reordered Power of 2 重新排序得到 2 的幂 解题过程 耗时100%&#xff0c;2的幂个数有限&#xff0c;所以只需要枚举&#xff0c;统计每个2的幂的数字频次&#xff0c;以及n的数字频次&#xff0c;比较是否存在2的幂的频次和n的频次相同即可 首先求出2的幂&…

RNA-seq数据分析实战 | 2026年第2期,开启你的生信学习之旅

完成本门课程&#xff0c;学员无需写代码&#xff0c;即可完全基于 Galaxy 生信云平台进行 RNA-seq 数据分析&#xff0c;包括上游表达量矩阵的获得和下游发表级统计图表制作。随着测序技术的飞速发展&#xff0c;RNA-seq 已经成为生物医学研究的常规手段&#xff0c; 掌握 RNA…

AI实战篇:RAG评估从0到1落地,让你的检索增强生成系统能量化、能优化

我们是不是都踩过同一个坑&#xff1a;花数周搭建的RAG系统&#xff0c;上线后用户反馈“答非所问”“信息造假”&#xff1b;调整了chunk大小、换了向量模型&#xff0c;却说不清效果提升了多少&#xff1b;生产环境幻觉率忽高忽低&#xff0c;却找不到问题根源。这些问题的关…

从单细胞测序到人群大数据:一文读懂如何利用scRNA-seq与UK Biobank挖掘临床靶点

你是否思考过&#xff0c;在那些错综复杂的肠道神经丛里&#xff0c;胶质细胞真的只是维持结构的“配角”吗&#xff1f;过去我们总把它们看作一类整齐划一的辅助细胞&#xff0c;但最新的研究却打破了这种固有印象。2026年1月8日Neuron杂志发表了由Meenakshi Rao团队完成的研究…

【好写作AI】从“开挂”到“自强”:把AI变成你的私人学术健身教练

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、两个平行宇宙&#xff1a;用同款AI&#xff0c;结不同果宇宙A&#xff08;摆烂版&#xff09;&#xff1a;小张把题目丢给AI&#xff0c;得到一篇流畅论文。答辩时&#xff0c;导师问&#xff1a;“请问你这里用的XX…

跟我学C++中统篇—STL中的bind

一、标准库中的函数绑定 对C11标准比较熟悉的都知道&#xff0c;标准库中提供了一个函数模板std::bind&#xff0c;用于将可调用对象&#xff08;函数&#xff0c;仿函数、函数指针、lambda表达式及函数对象等&#xff09;与一组参数绑定&#xff0c;然后形成一个新的可调用对象…

【好写作AI】别吵了!用AI写的论文,到底算谁的?一个灵魂拷问的终极回答

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、当答辩委员扶了扶眼镜&#xff0c;问出那个致命问题… “同学&#xff0c;听说你这篇论文用了AI辅助&#xff0c;那么我想问&#xff1a;哪些部分是你的&#xff0c;哪些部分是机器的&#xff1f;”空气突然安静。这…

雷池WAF安装

干净的Ubuntu Server 24 # 下载并运行官方安装脚本 bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"安装后&#xff0c;可以通过frp暴露到公网上 参考&#xff1a; https://blog.csdn.net/lpfasd123/article/details/156835633 ht…

【好写作AI】毕业季“分身术”:用AI把一天48小时的魔法变成现实

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、毕业季的你&#xff0c;是否在扮演“时间扭曲者”&#xff1f;早上&#xff1a;修改论文第8稿&#xff0c;发现文献引用格式全乱。下午&#xff1a;奔赴一场重要的实习面试&#xff0c;路上还在背自我介绍。晚上&…

拥抱大模型:深入剖析 ReAct 的核心原理、技术架构及其对 AI 领域的深远影响

在人工智能的演进历程中&#xff0c;大语言模型展现出了令人惊叹的文本生成能力&#xff0c;但其“黑箱”特性也带来了显著挑战——模型经常产生看似合理但实际错误的“幻觉”回答&#xff0c;缺乏透明推理过程&#xff0c;且无法与外部世界交互获取实时信息。ReAct&#xff08…

5 款 AI 写论文哪个好?实测横评!虎贲等考 AI 凭硬核实力 C 位胜出

毕业季来临&#xff0c;“AI 写论文工具怎么选” 的提问刷爆学术社群。市面上的论文 AI 五花八门&#xff0c;但真正能兼顾学术严谨性、数据真实性、全流程适配性的工具却寥寥无几。作为深耕论文写作科普的测评博主&#xff0c;我耗时一周&#xff0c;对虎贲等考 AI、掌桥科研 …

【好写作AI】一次“氪金”,终身受益?这笔毕业季投资到底值不值?

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、毕业预算&#xff0c;你是否这样分配&#xff1f;聚餐、拍照、毕业旅行&#xff1a;预算拉满&#xff0c;毫不犹豫。买正版软件、知识付费&#xff1a;眉头一皱&#xff0c;开始犹豫。“这钱花得值吗&#xff1f;有没…

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

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