监控插件(二)prometheus(2)API CounterGauge
综述
一、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