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

【监控】Spring Boot 应用监控

这段配置是 Spring Boot 应用中对 Actuator 和 Micrometer 监控系统的配置,用于将应用的指标暴露给 Prometheus 进行收集。下面我将详细介绍这种配置方式及其提供的指标。

配置说明

这个配置主要涉及 Spring Boot Actuator 和 Micrometer 两个核心组件:

  1. Actuator 配置
management:endpoint:env:enabled: false  # 禁用 env 端点,防止暴露敏感环境变量security:enabled: false  # 禁用端点安全验证(生产环境建议启用)endpoints:web:exposure:include:- prometheus  # 只暴露 prometheus 端点

这部分配置了 Actuator 端点的访问权限和暴露范围,特别启用了 Prometheus 指标端点。

  1. Micrometer 配置
management:metrics:tags:application: XXXX  # 为所有指标添加 application=XXXX 标签enable:all: true  # 启用所有默认指标收集distribution:percentiles:http.server.requests: 0.25,0.5,0.75,0.9,0.95  # 为 HTTP 请求指标计算指定百分位数

这部分配置了 Micrometer 的指标收集策略,包括标签、启用的指标类型和分布统计参数。

  1. 依赖配置
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

这两个依赖分别引入了 Actuator 和 Prometheus 指标收集器。

提供的核心指标

Spring Boot Actuator 与 Micrometer 结合 Prometheus 会提供以下几类核心指标:

1. JVM 相关指标
jvm_memory_used_bytes                # JVM 各区域(堆、非堆)已使用内存
jvm_memory_max_bytes                 # JVM 各区域最大可用内存
jvm_memory_committed_bytes           # JVM 各区域已提交的内存
jvm_gc_pause_seconds_total           # GC 暂停总时间
jvm_threads_live_threads             # 当前活跃线程数
jvm_classes_loaded_classes           # 已加载的类数量
2. HTTP 请求指标
http_server_requests_seconds_count   # HTTP 请求总数
http_server_requests_seconds_sum     # HTTP 请求总耗时
http_server_requests_seconds_max     # HTTP 请求最大耗时
http_server_requests_seconds         # HTTP 请求耗时分布(通过 percentiles 配置)

可通过 methoduristatus 等标签过滤不同请求路径和状态码的性能。

3. 系统资源指标
system_cpu_usage                     # 系统 CPU 使用率
process_cpu_usage                    # 进程 CPU 使用率
system_load_average_1m               # 系统 1 分钟负载平均值
process_start_time_seconds           # 进程启动时间
4. 数据库连接池指标(如 HikariCP)
hikaricp_connections_active          # 活跃连接数
hikaricp_connections_idle            # 空闲连接数
hikaricp_connections_pending         # 等待获取连接的线程数
hikaricp_connections_creation_seconds # 连接创建耗时
5. 缓存指标(如 Caffeine、Redis)
cache_gets_total                     # 缓存获取次数
cache_hits_total                     # 缓存命中次数
cache_misses_total                   # 缓存未命中次数
cache_puts_total                     # 缓存放入次数
6. 自定义业务指标

通过 MeterRegistry 接口可以在代码中添加自定义指标,例如:

@Autowired
private MeterRegistry meterRegistry;// 计数器
Counter requestCounter = meterRegistry.counter("http_requests", "endpoint", "/api/users");
requestCounter.increment();// 计时器
Timer apiTimer = meterRegistry.timer("api_response_time", "service", "user-service");
apiTimer.record(() -> {// 执行耗时操作
});

如何使用这些指标

  1. 访问指标端点
    应用启动后,可以通过 http://<host>:<port>/actuator/prometheus 查看 Prometheus 格式的指标数据。
  2. Prometheus 配置
    在 Prometheus 的配置文件中添加抓取任务:
scrape_configs:- job_name: 'spring-boot-app'static_configs:- targets: ['localhost:8080']metrics_path: '/actuator/prometheus'
  1. Grafana 可视化
    导入 Spring Boot 官方提供的 Grafana 仪表盘模板(如 ID 12968),快速展示应用性能图表。

性能优化建议

  1. 调整百分位计算
    配置中的 percentiles 会增加计算开销,生产环境建议只保留关键百分位(如 0.95、0.99)。
  2. 禁用不必要的指标
    如果某些指标对监控无帮助,可以通过 management.metrics.enable.<metric-name>=false 禁用。
  3. 添加自定义标签
    为指标添加有业务意义的标签(如 serviceoperation),便于聚合和分析。
  4. 监控告警
    基于关键指标设置告警规则,例如:
    • HTTP 请求 95% 响应时间超过 1 秒
    • JVM 堆内存使用率超过 80%
    • 数据库连接池等待线程数持续大于 5

这种配置方式使 Spring Boot 应用能够无缝集成 Prometheus 监控系统,提供全面的应用性能指标,帮助开发者及时发现和解决问题。

相关文章:

【监控】Spring Boot 应用监控

这段配置是 Spring Boot 应用中对 Actuator 和 Micrometer 监控系统的配置&#xff0c;用于将应用的指标暴露给 Prometheus 进行收集。下面我将详细介绍这种配置方式及其提供的指标。 配置说明 这个配置主要涉及 Spring Boot Actuator 和 Micrometer 两个核心组件&#xff1a…...

「MATLAB」计算校验和 Checksum

什么是校验和 是一个算法&#xff0c;将一串数据累加&#xff0c;得到一个和。 MATLAB程序 function c_use Checksum(packet) %Checksum 求校验和 % 此处checksum提供详细说明checksum 0;for i 1:length(packet)value hex2dec(packet(i));checksum checksum value; …...

【AS32X601驱动系列教程】SMU_系统时钟详解

在现代嵌入式系统中&#xff0c;时钟与复位管理是确保系统稳定运行的关键。我们的SMU&#xff08;系统管理单元&#xff09;模块专注于此核心任务&#xff0c;通过精准的时钟配置和复位控制&#xff0c;为整个系统提供可靠的时序保障。 SMU模块的主要功能是完成时钟和复位的管…...

09 接口自动化-用例管理框架pytest之allure报告定制以及数据驱动

文章目录 一、企业级的Allure报告的定制左边的定制&#xff1a;右边的定制&#xff1a;1.用例的严重程度/优先级2.用例描述3.测试用例连接的定制4.测试用例步骤的定制5.附件的定制 二、企业中真实的定制有哪些&#xff1f;三、allure报告如何在本地访问四、allure中的数据驱动装…...

React笔记-Ant Design X样本间对接智谱AI

目标 后端对接是智谱AI。 过程 先把Ant Design X样本间搭建好&#xff0c;通过此篇博文获得智谱AI的URL等 智谱AI开放平台 看下此篇博文的“使用API接入” 通义千问 - Ant Design X 将样本间代码的&#xff1a; const [agent] useXAgent({request: async ({ message }, { …...

网络安全-等级保护(等保) 3-2 GB/T 28449-2019《信息安全技术 网络安全等级保护测评过程指南》-2018-12-28发布【现行】

################################################################################ GB/T 28448-2019 《信息安全技术 网络安全等级保护测评要求》规定了1~4及的测评要求以及对应级别云大物移工的测评扩展要求&#xff0c;与GB/T 22239-2019 《信息安全技术 网络安全等级保护…...

【Bug】--node命令加载失败

环境&#xff1a;本地已经安装好了nodejs&#xff0c;并且已经加入了环境变量path 报错&#xff1a; (解释器) PS D:\桌面文件\pythonProject\vue-fastapi-admin\web> npm i -g pnpm npm : 无法加载文件 D:\桌面文件\node-v22.14.0-win-x64\node-v22.14.0-win-x64\npm.p…...

Java 大视界 -- 基于 Java 的大数据分布式存储在视频会议系统海量视频数据存储与回放中的应用(263)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

ROS云课三分钟-3D性能测试supertuxkart和游戏推荐等-国际象棋

ROS云课三分钟-破壁篇GCompris-一小部分支持Edu应用列表-2025-CSDN博客 很多时候&#xff0c;有一种思维定势&#xff0c;将人锁住&#xff0c;人口就是囚。 口人囚~口加人等于囚-CSDN博客 如果突破&#xff0c;跳出问题&#xff0c;再看问题。 这门课程&#xff0c;或者这个平…...

汽车零部件行业PLM案例:得瑞客汽车(Dereik) 部署国产PLM

2024年&#xff0c;昆山得瑞客汽车零部件有限公司&#xff08;以下简称“得瑞客汽车”&#xff09;签约智橙云PLM&#xff08;智橙PLM&#xff09;&#xff0c;近日&#xff0c;双方启动了PLM项目评估会&#xff0c;商讨在汽车零部件行业研发数字化转型领域进行更深层的合作。 …...

Web攻防-SQL注入数据格式参数类型JSONXML编码加密符号闭合

知识点&#xff1a; 1、Web攻防-SQL注入-参数类型&参数格式 2、Web攻防-SQL注入-XML&JSON&BASE64等 3、Web攻防-SQL注入-数字字符搜索等符号绕过 案例说明&#xff1a; 在应用中&#xff0c;存在参数值为数字&#xff0c;字符时&#xff0c;符号的介入&#xff0c…...

浅谈测试驱动开发TDD

目录 1.什么是TDD 2.TDD步骤 3.TDD 的核心原则 4.TDD 与传统开发的对比 5.TDD中的单元测试和集成测试区别 6.总结 1.什么是TDD 测试驱动开发&#xff08;Test-Driven Development&#xff0c;简称 TDD&#xff09; 是一种软件开发方法论&#xff0c;核心思想是 “先写测试…...

深入解析 Flink 中的时间与窗口机制

一、时间类型详解 1. 处理时间 处理时间(Processing Time)是指执行操作算子的本地系统时间,它是 Flink 中最简单、性能最高的时间概念。在处理时间语义下,Flink 直接使用机器的本地时钟来确定时间,无需额外的时间提取与处理逻辑。 以电商订单处理为例,当订单支付成功…...

医疗AI项目文档编写核心要素硬核解析:从技术落地到合规实践

一、引言&#xff1a;医疗AI项目文档的核心价值 1.1 行业演进与文档范式变革 全球医疗AI产业正经历从技术验证&#xff08;2021-2025&#xff09;向临床落地&#xff08;2026-2030&#xff09;的关键转型期。但是目前医疗AI正在逐步陷入"技术繁荣-应用滞后"的悖论&…...

voc怎么转yolo,如何分割数据集为验证集,怎样检测CUDA可用性 并使用yolov8训练安全帽数据集且构建基于yolov8深度学习的安全帽检测系统

voc怎么转yolo&#xff0c;如何分割数据集为验证集&#xff0c;怎样检测CUDA可用性 安全帽数据集&#xff0c;5000张图片和对应的xml标签&#xff0c; 五千个yolo标签&#xff0c;到手即可训练。另外附四个常用小脚本&#xff0c;非常实用voc转yolo代码.py 分割数据集为验证集…...

vllm server返回404的一种可能得解决方案

我的 server 启动指令 CUDA_VISIBLE_DEVICES0,1,2,3,4,5,6,7 PYTHONPATH${PYTHONPATH}:/root/experiments/vllm vllm serve ./models/DeepSeek-V3-awq --tensor-parallel-size 8 --trust-remote-code --disable-log-requests --load-format dummy --port 8040 client 端访访…...

kafka之操作示例

一、常用shell命令 #1、创建topic bin/kafka-topics.sh --create --zookeeper localhost:2181 --replications 1 --topic test#2、查看创建的topic bin/kafka-topics.sh --list --zookeeper localhost:2181#3、生产者发布消息命令 &#xff08;执行完此命令后在控制台输入要发…...

MySQL问题:MySQL中使用索引一定有效吗?如何排查索引效果

不一定有效&#xff0c;当查询条件中不包含索引列或查询条件复杂且不匹配索引顺序 对于一些小表&#xff0c;MySQL可能选择全表扫描而非使用索引&#xff0c;因为全表扫描的开销可能更小 最终是否用上索引是根据MySQL成本计算决定的&#xff0c;评估CPU和I/O成本 排查索引效…...

OpenSSL 签名验证详解:PKCS7* p7、cafile 与 RSA 验签实现

OpenSSL 签名验证详解&#xff1a;PKCS7* p7、cafile 与 RSA 验签实现 摘要 本文深入剖析 OpenSSL 中 PKCS7* p7 数据结构和 cafile 的作用及相互关系&#xff0c;详细讲解基于 OpenSSL 的 RSA 验签字符串的 C 语言实现&#xff0c;涵盖签名解析、证书加载、验证流程及关键要…...

利用 `ngx_http_xslt_module` 实现 NGINX 的 XML → HTML 转换

一、模块简介 模块名称&#xff1a;ngx_http_xslt_module 首次引入版本&#xff1a;0.7.8 功能&#xff1a;在回传给客户端之前&#xff0c;用指定的 XSLT 样式表对 XML 响应进行转换。 依赖&#xff1a; libxml2libxslt 编译选项&#xff1a;需在 NGINX 编译时添加 --with…...

C语言队列详解

一、什么是队列&#xff1f; 队列&#xff08;Queue&#xff09;是一种先进先出&#xff08;FIFO, First In First Out&#xff09;的线性数据结构。它只允许在一端插入数据&#xff08;队尾&#xff09;&#xff0c;在另一端删除数据&#xff08;队头&#xff09;。常见于排队…...

Qt中的智能指针

Qt中的智能指针 Qt中提供了多种智能指针&#xff0c;用于管理自动分配的内存,避免内存泄漏和悬挂指针的问题。以下是Qt中常见的智能指针及其功能和使用场景&#xff1a; 1. QSharedPointer QSharedPointer 是 Qt 框架中用于管理动态分配对象的智能指针&#xff0c;类似于 C1…...

车载网关策略 --- 车载网关通信故障处理机制深度解析

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

三天掌握PyTorch精髓:从感知机到ResNet的快速进阶方法论

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 一、分析式AI基础与深度学习核心概念 1.1 深度学习三要素 数学基础&#xff1a; f(x;W,b)σ(Wxb)(单层感知机) 1.2 PyTorch核心组件 张量操作示例…...

Python爬虫实战:研究Selenium框架相关技术

1. 引言 1.1 研究背景与意义 随着互联网的快速发展,网页数据量呈爆炸式增长。从网页中提取有价值的信息成为数据挖掘、舆情分析、商业智能等领域的重要基础工作。然而,现代网页技术不断演进,越来越多的网页采用 JavaScript 动态加载内容,传统的基于 HTTP 请求的爬虫技术难…...

分布式缓存:三万字详解Redis

文章目录 缓存全景图PreRedis 整体认知框架一、Redis 简介二、核心特性三、性能模型四、持久化详解五、复制与高可用六、集群与分片方案 Redis 核心数据类型概述1. String2. List3. Set4. Sorted Set&#xff08;有序集合&#xff09;5. Hash6. Bitmap7. Geo8. HyperLogLog Red…...

BiLSTM与Transformer:位置编码的隐式vs显式之争

BiLSTM 与使用位置编码的LLM(如Transformer)的核心区别 一、架构原理对比 维度BiLSTM带位置编码的LLM(如Transformer)基础单元LSTM单元(记忆细胞、门控机制)自注意力机制(Self-Attention)信息传递双向链式传播(前向+后向LSTM)并行多头注意力,全局上下文关联位置信息…...

html5视频播放器和微信小程序如何实现视频的自动播放功能

在HTML5中实现视频自动播放需设置autoplay和muted属性&#xff08;浏览器策略要求静音才能自动播放&#xff09;&#xff0c;并可添加loop循环播放、playsinline同层播放等优化属性。微信小程序通过<video>组件的autoplay属性实现自动播放&#xff0c;同时支持全屏按钮、…...

【QT】QString和QStringList去掉空格的方法总结

目录 一、QString去掉空格 1. 移除字符串首尾的空格&#xff08;trimmed&#xff09; 2. 移除字符串中的所有空格&#xff08;remove&#xff09; 3. 仅移除左侧&#xff08;开头&#xff09;或右侧&#xff08;结尾&#xff09;空格 4. 替换多个连续空格为单个空格 5. 移…...

58同城大数据面试题及参考答案

ROW_NUMBER、RANK、DENSE_RANK 函数的区别是什么? 这三个函数均为窗口函数,用于为结果集分区中的行生成序号,但核心逻辑存在显著差异,具体表现如下: 数据分布与排序规则 假设存在分区内分数数据为 [90, 85, 85, 80],按分数降序排序: ROW_NUMBER:为分区内每行分配唯一序…...