2

我正在尝试实现错误 -404度量计数器,我只想计算我的 api 中发生的 404 请求的数量。即使我试图模拟对我的 api 的多个 404 请求,我也没有看到计数增加。下面是我的公制类 -

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;


@ControllerAdvice
public class MetricController {

    private MeterRegistry meterRegistry;


    @Autowired
    public MetricController(MeterRegistry meterRegistry){
        this.meterRegistry=meterRegistry;
    }


    private void countHttpStatus(HttpStatus status){
      Counter count=meterRegistry.counter(String.format("http.status.%d",status.value()));
      count.increment();

    }


    @Bean
    ApplicationRunner runner(){
        return args ->{
          countHttpStatus(HttpStatus.NOT_FOUND);


        };
    }


}

当我达到这个终点时-http://localhost:8081/actuator/metrics/http.status.404

然后我看到下面的回应 -

{
    "name": "http.status.404",
    "description": null,
    "baseUnit": null,
    "measurements": [
        {
            "statistic": "COUNT",
            "value": 1
        }
    ],
    "availableTags": []
}

如果我用多个 404 访问我的 api,我希望这个计数增加

4

1 回答 1

0

您的代码执行以下操作:

  • 创建ApplicationRunner runner 一次(因为被注释为@Bean)
  • 调用countHttpStatus method 一次(因为ApplicationRunner runner beans在创建时调用)
  • 递增http.status.404 metric 一次(因为在创建时countHttpStatus method调用一次)ApplicationRunner runner @Bean
  • 仅此而已,不再调用此流程,因此您拥有的值为 1
于 2021-11-30T07:55:39.660 回答