spring boot 2.0+ 内置 micrometer,添加 actuator 和 micrometer-registry-prometheus 依赖后,自动配置 prometheusmeterregistry;通过 application.yml 暴露 /actuator/prometheus 端点,并在 prometheus scrape_config 中配置 job 即可抓取指标,支持自定义业务指标如 counter 和 timer。

Spring Boot 2.0+ 内置支持 Micrometer,只需少量配置就能自动暴露 Prometheus 格式指标,并被 Prometheus 抓取。
启用 Actuator 和 Micrometer 自动配置
在 pom.xml 中添加依赖:
默认已集成 Micrometer,无需额外声明 registry bean —— Spring Boot 会自动配置 PrometheusMeterRegistry。
暴露 Prometheus 端点
在 application.yml 中开启指标端点并设为公开:
management:
endpoints:
web:
exposure:
include: "prometheus,health,info"
启动后访问 /actuator/prometheus 即可看到原始指标文本(如 jvm_memory_used_bytes{area="heap",id="PS Old Gen"} 1.2345e+07)。
让 Prometheus 正确抓取
确保 Prometheus 的 scrape_config 包含服务地址和路径:
- job_name: 'spring-boot-micrometer'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['your-service-host:8080']
注意:
• 服务需能被 Prometheus 网络可达(K8s 中常用 Service 名或 Pod IP)
• 若使用 Spring Cloud Gateway 或反向代理,确认路径未被重写或拦截
• 如启用了安全认证,需在 Prometheus 配置中添加 basic_auth 或 bearer_token
自定义业务指标(可选但推荐)
注入 MeterRegistry,用它注册计数器、计量器、定时器等:
@Service
public class OrderService {
private final Counter orderCreatedCounter;
private final Timer orderProcessingTimer;
public OrderService(MeterRegistry registry) {
this.orderCreatedCounter = Counter.builder("order.created")
.description("Total orders created")
.register(registry);
this.orderProcessingTimer = Timer.builder("order.processing.time")
.description("Time to process an order")
.register(registry);
}
public void createOrder(Order order) {
orderCreatedCounter.increment();
orderProcessingTimer.record(() -> { /* your logic */ });
}
}
指标名建议遵循 Prometheus 命名规范(小写字母、下划线分隔),避免特殊字符和空格。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











