能否将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
相关产品推荐
相关产品推荐

