Spring Boot 3.5.0中Prometheus simpleclient相关问题咨询
解决Spring Boot 3.5.0中Prometheus自定义端点404及SimpleClient集成问题
1. 替换或调整依赖
Spring Boot 3.3标记SimpleClient自动配置为废弃后,3.5.0的自动配置逻辑已暗中调整,不再默认支持micrometer-registry-prometheus-simpleclient的自动端点注册。建议直接替换为标准的Prometheus注册表依赖:
<!-- Maven替换依赖 --> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.15.0</version> </dependency>
如果业务必须保留SimpleClient,需手动排除Spring Boot的自动配置冲突:
<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus-simpleclient</artifactId> <version>1.15.0</version> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-actuator-autoconfigure</artifactId> </exclusion> </exclusions> </dependency>
2. 手动注册Prometheus端点
由于原自动配置失效,需自行编写配置类来创建端点和注册表:
import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.prometheus.simpleclient.SimpleClientPrometheusMeterRegistry; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.boot.actuate.endpoint.web.WebEndpointResponse; import org.springframework.boot.actuate.endpoint.web.annotation.WebEndpoint; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class CustomPrometheusConfig { // 注册SimpleClient注册表 @Bean public MeterRegistry simpleClientPrometheusRegistry() { return new SimpleClientPrometheusMeterRegistry(); } // 手动创建Prometheus端点 @WebEndpoint(id = "prometheus") public static class PrometheusScrapeEndpoint { private final SimpleClientPrometheusMeterRegistry registry; public PrometheusScrapeEndpoint(SimpleClientPrometheusMeterRegistry registry) { this.registry = registry; } @ReadOperation public WebEndpointResponse<String> scrapeMetrics() { return new WebEndpointResponse<>(registry.scrape(), WebEndpointResponse.STATUS_OK); } } }
3. 确认自定义路径配置生效
你的原有路径配置无需修改,重启应用后会绑定到手动注册的端点:
management.endpoints.web.base-path=/status management.endpoints.web.path-mapping.prometheus=metrics
此时访问/status/metrics即可正常获取指标,/status的端点列表也会重新显示metrics项。
4. 修复测试失败问题
测试失败多因自动配置变更导致上下文加载或端点断言失败:
- 更新测试用例,使用
/status/metrics路径进行断言 - 在测试类中通过
@Import(CustomPrometheusConfig.class)导入手动配置 - 检查Micrometer 1.15.0的API变更,替换测试中过时的Metrics调用方法
内容的提问来源于stack exchange,提问作者Robert Strauch
相关产品推荐
相关产品推荐

