Spring Boot微服务架构(八):开发之初就引入APM工具监控

使用 APM(Application Performance Management)工具监控 Spring Boot 应用,可以帮助开发者实时追踪性能瓶颈、分析调用链路、监控资源使用情况,并快速定位故障。以下是详细的步骤和常用工具的选择指南:


​一、常用 APM 工具及特点​

工具名称类型特点
​SkyWalking​分布式追踪 + 指标监控开源、支持 Java Agent、自动链路追踪、可视化仪表盘
​Zipkin​分布式追踪轻量级、需手动埋点、适合简单场景
​Prometheus​指标监控多维数据模型、灵活告警、结合 Grafana 可视化
​Elastic APM​全链路监控基于 OpenTelemetry,集成日志、指标、链路追踪,适合 Elastic 生态
​New Relic​商业全栈监控功能全面、支持多语言、商业版功能强大
​Datadog​云原生监控支持 APM、基础设施监控、日志,适合混合云环境

​二、监控 Spring Boot 的核心步骤​

​1. 指标监控(Metrics)​

​目标​​:监控 JVM、HTTP 请求、数据库连接池等指标。
​工具​​:Spring Boot Actuator + Prometheus + Grafana
​步骤​​:

  1. ​添加依赖​​(pom.xml):

    <!-- Actuator 暴露指标 -->
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!-- Micrometer Prometheus 导出器 -->
    <dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
  2. ​配置 application.yml​:

    management:endpoints:web:exposure:include: prometheus, health  # 暴露 Prometheus 和健康检查端点metrics:export:prometheus:enabled: true
  3. ​启动应用​​,访问 http://localhost:8080/actuator/prometheus,可以看到暴露的指标数据。

  4. ​部署 Prometheus​​:配置抓取目标(指向 Spring Boot 的 /actuator/prometheus 端点)。

  5. ​使用 Grafana 可视化​​:导入 Spring Boot 的仪表盘模板(如 Grafana Spring Boot Dashboard)。


​2. 分布式链路追踪(Tracing)​

​目标​​:追踪微服务间的调用链路,分析请求耗时。
​工具​​:SkyWalking、Zipkin、Elastic APM
​以 SkyWalking 为例​​:

  1. ​下载 SkyWalking Agent​​:从 官网 获取 JAR 包。
  2. ​启动 Spring Boot 应用时附加 Agent​​:
    java -javaagent:/path/to/skywalking-agent.jar \-Dskywalking.agent.service_name=my-spring-boot-app \-Dskywalking.collector.backend_service=127.0.0.1:11800 \-jar your-application.jar
  3. ​访问 SkyWalking UI​​(默认 http://localhost:8080),查看链路追踪和性能分析。

​3. 日志与错误监控​

​目标​​:关联日志与链路追踪,捕获异常和错误。
​工具​​:ELK Stack(Elasticsearch + Logstash + Kibana)、Loki + Grafana
​步骤​​:

  1. ​在 Spring Boot 中集成 Logback 或 Log4j2​​,添加 Trace ID 到日志中(通过 SkyWalking 或 Sleuth 自动注入)。
  2. ​配置日志输出到 Elasticsearch/Loki​​:使用 Filebeat 或 Fluentd 收集日志。
  3. ​通过 Kibana/Loki Dashboard 分析日志​​,结合链路追踪快速定位问题。

​4. 商业工具集成(可选)​

​New Relic​​:

  1. ​添加 Java Agent​​:下载 New Relic Java Agent。
  2. ​配置 newrelic.yml​:设置 License Key 和应用名称。
  3. ​启动应用​​:通过 -javaagent 参数加载 Agent。
  4. ​在 New Relic 控制台​​查看应用性能数据。

​三、关键监控指标​

  1. ​JVM 指标​​:堆内存、GC 时间、线程状态。
  2. ​HTTP 请求​​:响应时间、错误率、QPS。
  3. ​数据库​​:慢查询、连接池使用率。
  4. ​外部服务调用​​:Feign/RestTemplate 的耗时和成功率。
  5. ​系统资源​​:CPU、内存、磁盘 I/O。

​四、最佳实践​

  1. ​合理配置采样率​​:避免链路追踪数据量过大(如 Zipkin 可设置 spring.sleuth.sampler.probability=0.1)。
  2. ​设置告警规则​​:在 Prometheus 或 Grafana 中配置阈值告警(如 HTTP 5xx 错误率 > 1%)。
  3. ​结合日志与链路​​:通过 Trace ID 关联日志和调用链,快速定位问题根源。
  4. ​定期优化​​:根据监控数据优化慢查询、调整 JVM 参数、扩容资源。

​五、工具选择建议​

  • ​简单场景​​:Spring Boot Actuator + Prometheus + Grafana(免费、轻量)。
  • ​分布式追踪​​:SkyWalking(国产开源,社区活跃)或 Zipkin(轻量级)。
  • ​全栈监控​​:Elastic APM(集成日志、指标、链路)或 New Relic(商业级功能)。
  • ​云原生环境​​:Datadog 或 Prometheus + Grafana(支持 Kubernetes 监控)。

通过以上步骤,可以实现对 Spring Boot 应用的全方位监控,快速发现性能瓶颈并提升系统稳定性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/81934.shtml

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

相关文章

Python 如何让自动驾驶的“眼睛”和“大脑”真正融合?——传感器数据融合的关键技术解析

Python 如何让自动驾驶的“眼睛”和“大脑”真正融合?——传感器数据融合的关键技术解析 自动驾驶技术从来都不是“单兵作战”。如果你细看一辆自动驾驶汽车,它其实是一个传感器的集合体:摄像头、激光雷达(LiDAR)、毫米波雷达、超声波传感器、GPS……这些传感器各自发挥作…

《软件工程》第 12 章 - 软件测试

软件测试是确保软件质量的关键环节&#xff0c;它通过执行程序来发现错误&#xff0c;验证软件是否满足需求。本章将依据目录&#xff0c;结合 Java 代码示例、可视化图表&#xff0c;深入讲解软件测试的概念、过程、方法及实践。 12.1 软件测试的概念 12.1.1 软件测试的任务 …

面试题 08.08. 有重复字符串的排列组合【 力扣(LeetCode) 】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 面试题 08.08. 有重复字符串的排列组合 一、题目描述 有重复字符串的排列组合。编写一种方法&#xff0c;计算某字符串的所有排列组合。 二、测试用例 示例 1&#xff1a; 输入&#…

【Linux】关于权限的理解

目录 一、Linux用户的分类 1.Linux下的两种用户 2.两种用户提示符的区别 3.用户的切换方法 二、Linux的权限管理 1.文件访问者分类 2.常见文件类型 3.文件访问权限 4.权限检查逻辑 5.文件权限的表示方式 三、与文件访问权限相关的设置方法 1.前提&#xff1a; 2.如…

前端antd,后端fastapi,解决文件上传

一、技术架构概述 前端框架&#xff1a;React Ant Design 5.x 使用antd的Upload组件&#xff08;支持拖拽/多文件/分片&#xff09; 后端框架&#xff1a;Python FastAPI 利用UploadFile类处理文件流 传输协议&#xff1a;HTTP FormData&#xff08;兼容性强&#xff09; 二…

⭐️⭐️⭐️ 模拟题及答案 ⭐️⭐️⭐️ 大模型Clouder认证:RAG应用构建及优化

考试注意事项: 一、单选题(21题) 检索增强生成(RAG)的核心技术结合了什么? A. 图像识别与自然语言处理 B. 信息检索与文本生成 C. 语音识别与知识图谱 D. 数据挖掘与机器学习 RAG技术中,“建立索引”步骤不包括以下哪项操作? A. 将文档解析为纯文本 B. 文本片段分割(…

为什么建立 TCP 连接时,初始序列号不固定?

主要原因有两个方面&#xff1a; 很大程度上避免历史报文被下一个相同四元组的 TCP 连接接收问题&#xff08;主要方面&#xff09;防止黑客伪造相同序列号的 TCP 报文被接收 接下来&#xff0c;详细说说第一点 假设每次建立 TCP 连接时&#xff0c;客户端和服务端的初始序列…

VScode-使用技巧-持续更新

一、Visual Studio Code - MACOS版本 复制当前行 shiftoption方向键⬇️ 同时复制多行 shiftoption 批量替换换行 在查找和替换面板中&#xff0c;你会看到一个 .∗ 图标&#xff08;表示启用正则表达式&#xff09;。确保这个选项被选中&#xff0c;因为我们需要使用正则…

【瑶池数据库训练营及解决方案本周精选(探索PolarDB,参与RDS迁移、连接训练营)】

一、训练营 数据库迁移训练营 自建数据库运维难&#xff1f;本次训练营教您迁移至云数据库 RDS&#xff0c;高可用架构跨区容灾&#xff0c;降本增效&#xff01;模拟教程 实战演练&#xff0c;零基础也能上手。 &#xff08;一&#xff09;开营时间 2025年4月8日-6月2日16…

Xamarin劝退之踩坑笔记

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

使用ray扩展python应用之流式处理应用

流式处理就是数据一来&#xff0c;咱们就得赶紧处理&#xff0c;不能攒批再算。这里的实时不是指瞬间完成&#xff0c;而是要在数据产生的那一刻&#xff0c;或者非常接近那个时间点&#xff0c;就做出响应。这种处理方式&#xff0c;我们称之为流式处理。 流式处理的应用场景…

火狐安装自动录制表单教程——仙盟自动化运营大衍灵机——仙盟创梦IDE

打开火狐插件页面 安装完成 使用 功能 录制浏览器操作 录入地址 开始操作 录制完成 在当今快速发展的软件开发生态中&#xff0c;自动化测试已从一种新兴技术手段&#xff0c;转变为保障软件质量与开发效率不可或缺的关键环节。其重要性体现在多个维度&#xff0c;同时&#x…

小程序 - 视图与逻辑

个人简介 👨‍💻‍个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言: “心有多大,舞台就有多大。” 📚推荐学习: 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js实战 🍒T…

【LLM应用开发】上下文记忆的解决方案(主流全面)

一、前言 上下文记忆&#xff08;Contextual Memory&#xff09;解决方案的作用&#xff1a; 提升 AI&#xff08;尤其是大语言模型&#xff0c;LLM&#xff09;的对话连贯性和个性化。 本文将介绍几个主流的实现方式。 二、&#x1f9e0; 什么是上下文记忆&#xff1f; 在对…

C/C++ 面试复习笔记(2)

C语言如何实现快速排序算法&#xff1f; 答案&#xff1a;快排是一种分治算法&#xff0c;选择一个基准元素&#xff0c;将数据划分成两部分&#xff0c;然后递归排序 补充&#xff1a; void quick_sort(int arr[], int start, int end) {//判断是否需要排序if (start > …

2025吉林CCPC 题解(前六题)

// Problem: J - Odd-Even Game // Contest: Virtual Judge - sdccpc20250527 // URL: https://vjudge.net/contest/719585#problem/J // Memory Limit: 1024 MB // Time Limit: 1000 ms // 签到题 // Powered by CP Editor (https://cpeditor.org)#include <bits/std…

Q: dify知识库模块主要库表和字段

【回到目录】~~~~【回到问题集】 Q: dify知识库模块主要库表和字段 A: 表1&#xff1a;datasets 知识库表 name 知识库名称 index_struct 向量索引node 表2&#xff1a;document 文档表 name 文档名称 word_count 字数 doc_form 分段类型(hierarchical_model、qa_model、te…

NodeMediaEdge快速上手

NodeMediaEdge快速上手 简介 NodeMediaEdge是一款部署在监控摄像机网络前端中&#xff0c;拉取Onvif或者rtsp/rtmp/http视频流并使用rtmp/kmp推送到公网流媒体服务器的工具。 通过云平台协议注册到NodeMediaServer后&#xff0c;可以同NodeMediaServer结合使用。使用图形化的…

通用前端框架项目静态部署到Hugging Face Space的实践指南

背景介绍 在轻量级展示前端项目的场景中,Hugging Face Space 提供了一个便捷的静态托管平台。需求是将无后端服务的Vite的 Vue项目部署到Hugging Face Space 上。其实无论是基于Vite的Vue/React项目,还是使用Webpack构建的工程化方案,都可以通过两种方式将其部署到Space:自…

Android studio 查看aar源码出现/* compiled code */

如图查看aar源码时看不到具体实现&#xff0c;在排除是sdk版本导致的问题后&#xff0c;下面说解决方法 打开设置&#xff0c;找到插件 输入decompiler 搜索 这个是自带的反编译工具&#xff0c;启用就好了