综述
一、Counter
错误写法
Counter.builder("api_request_total")
.description("Total number of API requests")
.tag("uri", request.getRequestURI())
.tag("method", request.getMethod())
.tag("status", String.valueOf(responseWrapper.getStatus()))
.register(meterRegistry)
.increment();
jakarta.servlet.ServletException: Request processing failed: java.lang.IllegalArgumentException: Failed to register Collector of type MicrometerCollector: repository_method_list_elements_sum is already in use by another Collector of type MicrometerCollector
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1022) ~[spring-webmvc-6.1.5.jar:6.1.5]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.1.5.jar:6.1.5]
不应该重复注册,正确写法:
Counter requestCounter = meterRegistry.find("api_request_total")
.tag("uri", request.getRequestURI())
.tag("method", request.getMethod())
.tag("status", String.valueOf(responseWrapper.getStatus()))
.counter();
if (requestCounter == null) {
requestCounter = Counter.builder("api_request_total")
.description("Total number of API requests")
.tag("uri", request.getRequestURI())
.tag("method", request.getMethod())
.tag("status", String.valueOf(responseWrapper.getStatus()))
.register(meterRegistry);
}
requestCounter.increment();
二、Gauge