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

能否将HTTP请求总数导出为Prometheus指标?(基于Spring Boot Actuator)

Spring Boot Actuator + Prometheus 导出请求总数指标

首先明确:你看到的http_server_requests_seconds_count指标就是服务接收的请求总数。这个指标的后缀_count表示对应标签维度(比如请求方法、URI、状态码等)下的请求累计次数,和你需要的“请求总数”完全对应。

比如你提供的示例中:

http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/api/tracks",} 2.0

这里的2.0就代表GET /api/tracks且返回200成功的请求总数是2次。

如果需要更灵活的请求总数统计(比如自定义标签、单独拆分出独立的计数器指标),可以通过以下两种方式实现:

  • 方式1:使用Micrometer的@Counted注解
    在需要统计的接口方法上添加@Counted注解,指定指标名称和自定义标签,示例代码:

    @RestController
    public class TrackController {
        @Counted(value = "api_requests_total", tags = {"endpoint", "/api/tracks"})
        @GetMapping("/api/tracks")
        public List<Track> getTracks() {
            // 业务逻辑实现
        }
    }
    

    配置后会生成api_requests_total指标,直接统计该接口被调用的次数。

  • 方式2:自定义MetricsFilter
    编写一个Servlet Filter,在请求进入时手动递增计数器,示例代码:

    @Component
    public class RequestCountFilter implements Filter {
        private final Counter requestCounter;
    
        public RequestCountFilter(MeterRegistry meterRegistry) {
            this.requestCounter = Counter.builder("http_requests_total")
                    .description("Total number of HTTP requests received")
                    .register(meterRegistry);
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            requestCounter.increment();
            chain.doFilter(request, response);
        }
    }
    

    该方式会生成全局的http_requests_total指标,统计所有进入服务的请求总数,也可以根据请求的URI、方法等添加自定义标签细化统计维度。

内容的提问来源于stack exchange,提问作者sbrattla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 18:42:49