You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:58:13