在 Spring Boot 应用中,监控 JVM 状态(如内存使用情况、GC、线程等)对于系统的稳定运行至关重要。本文介绍如何使用 Spring Boot Actuator 和 promethus 和 grafana 来监控 JVM 状态。
版本
工具 | 版本 |
---|---|
系统 | windows10 |
java | 21 |
Spring Boot | 3.2.2 |
prometheus | 2.53.3 |
grafana | 11.5.0 |
5.5 |
1. 引入 Spring Boot Actuator
Spring Boot 提供了 Actuator 组件,它可以帮助我们快速获取 JVM 运行状态。
1.1 添加依赖
在 pom.xml
中添加 Actuator 依赖:
<!-- Spring Boot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
1.2 配置 Actuator 端点
在 application.yml
配置文件中启用 Actuator 端点:
spring:
application:
name: SIMPLE-APP
server:
port: 8080
# 暴露所有 Actuator 端点
management:
endpoints:
enabled-by-default: true
web:
exposure:
# 暴露 Prometheus 端点
include: '*'
# exclude:
server:
request:
metric-name: http.server.requests
# 对外暴露tag
metrics:
tags:
application: ${spring.application.name}
1.3 访问 JVM 相关信息
Spring Boot Actuator 提供了多个端点来获取 JVM 相关信息:
http://localhost:8080/actuator/metrics/jvm.memory.used
- 查看 JVM 内存使用情况。http://localhost:8080/actuator/metrics/system.cpu.usage
- 查看 CPU 使用率。http://localhost:8080/actuator/threaddump
- 获取线程堆栈信息。http://localhost:8080/actuator/heapdump
- 下载 JVM 堆内存快照。http://localhost:8080/actuator/prometheus
- 查看prometheus指标。
2. 配置 Prometheus 和 Grafana 监控 JVM
如果需要更详细的监控,可结合 Prometheus 和 Grafana。
2.1 添加 Micrometer Prometheus 依赖
<!-- Micrometer Prometheus Registry -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
3.2 配置 Prometheus 端点
1.2步骤中已配置完毕。
3.3 访问 Prometheus 监控数据
访问 http://localhost:8080/actuator/prometheus
获取 JVM 监控数据。
3.4 配置Prometheus服务,监控web应用
打开prometheus根目录下的prometheus.yml文件,找到scrape_configs
节点,修改为如下:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
metrics_path: '/actuator/prometheus' # 从 Spring Boot Actuator 的 Prometheus 端点采集数据
static_configs:
- targets: ['localhost:8080'] # 替换为服务 IP 和端口
然后执行prometheus.exe --config.file=prometheus.yml
启动promethus。
访问地址是http://localhost:9090/
。
3.5 启动 Grafana
双击bin/grafana-server.exe
启动grafana。
访问地址是http://localhost:3000/
,默认用户名/密码是admin/admin。
3.6 配置 Grafana 监控面板
- 添加数据源
- 在 Grafana 中依次点击如下:左上角logo - Connections,搜索
promethus
并点击“Add new data source”,地址填http://localhost:9090
- 导入一个看板,模板id填4701
- 查看看板图表
上述步骤已录制成视频,见grafana中配置prometheus数据源和jvm看板(无声音)_哔哩哔哩_bilibili
4. 结论
本文介绍了如何使用 Spring Boot Actuator 以及 Prometheus + Grafana 监控 JVM 状态。结合这些工具,可以有效跟踪和优化应用的性能,排查出现的问题,提升系统的稳定性。
5. 附件
代码已上传到github:valuetodays/java-code-samples的springboot-simple-for-jvm目录。