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

【监控】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 监控系统,提供全面的应用性能指标,帮助开发者及时发现和解决问题。

http://www.xdnf.cn/news/678097.html

相关文章:

  • libvirt设置虚拟机mtu实现原理
  • 决策树 GBDT XGBoost LightGBM
  • ETL数据集成过程全流程优化指南
  • ICMP与TCP端口:网络层与传输层解析
  • 尚硅谷redis7 49-51 redis管道之理论简介
  • Python的虚拟环境
  • 4 月 62100 款 App 被谷歌下架!环比增长 28%
  • 英码科技携带 “无感知AI数字课堂”解决方案,亮相第22届广东教育装备展
  • redis高并发问题
  • Common JS和ES Module的区别
  • 6.4.5_关键路径
  • 窗口函数总结篇
  • -动静态库简单使用
  • ABC 352
  • 依赖倒置原则 (Dependency Inversion Principle, DIP)
  • 分块查找详解
  • 第二章 1.3 数据采集风险的现有技术和解决方案
  • RK3568 OH5.1 镜像烧录
  • python第34天打卡
  • 深耕数字化赛道,联众优车以创新风控体系构筑汽车金融护城河
  • Fine-tuning:微调技术,训练方式,LLaMA-Factory,ms-swift
  • AI智能分析网关V4垃圾桶满溢检测算法打造城市/公园/街道等场景应用方案
  • 浅谈Mysql的MVCC机制(RC与RR隔离级别)
  • LeetCode 1696. 跳跃游戏 VI(中等)
  • AI Agent开发第75课-数据、张量、流水线并行全解析
  • 【Web应用】若依:基础篇03-入门案例,若依代码生成器生成前后端代码
  • Web通信协议全景解析:从HTTP到WebService的技术演进与对比
  • 如何寻找大模型在企业业务中的价值?
  • Anaconda下载安装+配置虚拟环境保姆级教程(2025版)
  • 实时数仓flick+clickhouse启动命令