Spring Boot Actuator监控配置指南
Spring Actuator
如何把Spring中的基本数据采集到Prometheus中
Spring里打开Actuator
主程序的maven中增加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 特别注registry版本,要和SpringBoot的版本适配,不然可能注册失败 -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
即可自动暴漏相应的指标;如果需要java程序主动push 监控数据,需要额外配置:
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>prometheus-metrics-exporter-pushgateway</artifactId>
</dependency>
权限放行
spring中需要配置 properties版本:
management.endpoints.web.exposure.include=prometheus
如果是yml,需要配置:
management:
endpoints:
web:
exposure:
include: prometheus
如果有 鉴权规则,避免被权限控制拦截;请放行 /actuator/prometheus 的数据获取;
Spring中访问prometheus的数据暴漏点
# 查看所有HTTP请求指标
curl http://localhost:8080/actuator/metrics/http.server.requests
# 查看特定API的耗时
curl "http://localhost:8080/actuator/metrics/http.server.requests?tag=uri:/api/agvLocation/query.json"
配置Prometheus的采集配置
- job_name: 'springboot-app1'
metrics_path: '/actuator/prometheus'
scrape_interval: 30s
static_configs:
- targets:
- '127.0.0.1:8080'
labels:
app: 'springboot-app1'
env: 'prod'
grafana 配置监控图表模版
https://grafana.com/grafana/dashboards/4701-jvm-micrometer/
核心指标解释
一般情况下,我们重点关注 http_xxx指标,因为这是跟用户密切相关的
1. JVM 相关指标
jvm_memory_used_bytes
JVM 已使用的内存字节数,帮助监控内存消耗和内存泄漏风险。jvm_memory_max_bytes
JVM 可分配的最大内存字节数,关注是否接近内存上限。jvm_threads_live
当前活跃线程数,监测线程泄漏和阻塞问题。jvm_gc_pause_seconds_count / sum
GC 暂停次数与总耗时,评估垃圾回收对应用性能的影响。
2. 系统资源指标
process_cpu_usage
应用进程的 CPU 使用率,反映应用负载情况。process_uptime_seconds
应用运行时间,判断服务是否频繁重启。system_cpu_usage
宿主机或容器的整体 CPU 使用率。
3. HTTP 请求相关指标
http_server_requests_seconds_count
HTTP 请求总数,反映业务流量。http_server_requests_seconds_sum
请求总耗时,结合 count 可计算平均响应时间。http_server_requests_seconds_max
最大请求耗时,关注慢接口。http_server_requests_active
当前正在处理的请求数,判断接口压力。
4. 数据库连接池相关指标(以 HikariCP 为例)
hikaricp_connections_active
当前活跃数据库连接数。hikaricp_connections_max
最大可用数据库连接数。hikaricp_connections_pending
等待获取数据库连接的请求数,反映数据库压力。
5. Tomcat 相关指标(如使用 Tomcat)
tomcat_threads_current
当前 Tomcat 线程数。tomcat_threads_busy
当前忙碌线程数。tomcat_sessions_active_current
当前活跃会话数。