spring boot 通过 micrometer 实现吞吐监控闭环,即采集—导出—抓取—展示:micrometer 作为指标门面标准化输出 jvm、http 和业务指标,由 prometheus 拉取并在 grafana 展示;需启用 actuator 并暴露 /actuator/prometheus 端点;默认提供 http_server_requests_seconds_count 等 http 吞吐指标;自定义业务吞吐需注入 meterregistry 埋点;prometheus 抓取路径须设为 /actuator/prometheus,grafana 中用 promql 聚合多实例指标并构建 qps、错误率、p95 延迟等看板。

Spring Boot 通过 Micrometer 将系统吞吐数据对接到外部监控看板,核心在于“采集—导出—抓取—展示”四步闭环。Micrometer 不直接存储或展示数据,而是作为统一指标门面,把 JVM、HTTP、业务等维度的吞吐类指标(如 QPS、请求总数、响应时长分布)标准化输出,再由 Prometheus 等系统拉取,最终在 Grafana 渲染成看板。关键不是写得多,而是配得准、暴露得对、打标得清。
启用 Actuator 并暴露吞吐相关端点
Actuator 是指标出口的载体,必须开启 /actuator/prometheus(或其他目标后端对应端点),否则 Micrometer 的数据无法被外部采集:
- 添加基础依赖:
spring-boot-starter-actuator和micrometer-registry-prometheus(若对接 Prometheus) - 在
application.yml中明确暴露端点:
management:
endpoints:
web:
exposure:
include: prometheus,health,metrics - 避免开放
*,生产环境只暴露必要端点,防止敏感指标泄露
利用默认 HTTP 吞吐指标快速上手
Spring Boot 自动注册了大量开箱即用的吞吐指标,无需编码即可接入看板:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
-
http_server_requests_seconds_count:按 method、status、uri 维度统计的请求总数(本质是 Counter) -
http_server_requests_seconds_sum与_count配合可算出平均响应时间 -
http_server_requests_seconds_bucket提供响应时间分位数(P90/P95/P99),用于绘制延迟热力图 - Prometheus 抓取
/actuator/prometheus后,这些指标自动可用;Grafana 中直接用 PromQL 查询,例如:
rate(http_server_requests_seconds_count{application="myapp"}[1m]) 得到每秒请求数(QPS)
注入 MeterRegistry 实现自定义吞吐埋点
业务级吞吐(如订单创建量、消息处理速率)需手动埋点,推荐使用 MeterRegistry 注入方式,而非静态工具类:
- 在 Service 或 Controller 中注入:
@Resource private MeterRegistry meterRegistry; - 定义计数器记录吞吐事件:
Counter orderCreatedCounter = Counter.builder("order.created.total")
.tag("env", "prod")
.register(meterRegistry);
orderCreatedCounter.increment(); - 若需带耗时统计,优先用 Timer:
Timer.builder("order.process.duration")
.publishPercentiles(0.95, 0.99)
.register(meterRegistry)
.record(() -> processOrder()); - 所有自定义指标会自动带上
application标签(建议在配置中统一设置management.metrics.tags.application=${spring.application.name})
Prometheus 抓取配置与 Grafana 可视化要点
数据能采集到,不等于能在看板里直观呈现。需注意三处衔接细节:
- Prometheus
scrape_configs中,metrics_path必须设为/actuator/prometheus(非/prometheus),且 target 地址需含正确端口(如localhost:8080) - Grafana 添加 Prometheus 数据源后,新建面板时,PromQL 应聚合多实例指标,例如:
sum by (uri) (rate(http_server_requests_seconds_count{job="myapp"}[2m])) 展示各接口实时 QPS - 吞吐类看板建议包含:总 QPS 趋势图、TOP N 接口 QPS 排名、错误率(
rate(http_server_requests_seconds_count{status=~"5.."}[1m]) / rate(http_server_requests_seconds_count[1m]))、P95 响应时间曲线
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










