Я использую автоматические выключатели resilience4j, и у меня возникли проблемы с экспортом показателей с помощью клиента сервлета prometheus. Я выполняю развертывание на сервере jbossas7, но моя конечная точка / metrics ничего не показывает. У кого-нибудь есть идеи? Я вставляю автоматический выключатель в компонент, который отлично работает с приведенным ниже кодом запуска автоматического выключателя, который находится на фабрике.
Когда я отлаживаю свой код, я вижу, что автоматический выключатель создается и регистрируется в CollectorRegistry. Но когда он записывается в сервлете простого сервлета, на выходе ничего не записывается. Он просто переходит к блоку finally в коде клиентской библиотеки.
web.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns = "http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version = "3.1">
<servlet>
<servlet-name>metrics</servlet-name>
<servlet-class>io.prometheus.client.exporter.MetricsServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>metrics</servlet-name>
<url-pattern>/metrics</url-pattern>
</servlet-mapping>
</web-app>
зависимости pom.xml
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-circuitbreaker</artifactId>
<version>${resilience4j.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-prometheus</artifactId>
<version>0.13.1</version>
</dependency>
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient</artifactId>
<version>0.5.0</version>
</dependency>
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_servlet</artifactId>
<version>0.5.0</version>
</dependency>
включение выключателя
public CircuitBreaker getInjectedCircuitbreaker(InjectionPoint injectionPoint) {
Circuitbreaker breaker = injectionPoint.getAnnotated().getAnnotation(Circuitbreaker.class);
CircuitBreaker circuitBreaker = circuitBreakerRegistry.circuitBreaker(breaker.breakerName());
collectorRegistry.register(CircuitBreakerExports.ofCircuitBreakerRegistry(circuitBreakerRegistry));
return circuitBreaker;
}
Попробуйте несколько раз вызвать свой код и посмотреть, отображается ли он. Я обнаружил, что после нескольких вызовов получил ответ.
привет, ты нашел ответ? , так как я столкнулся с тем же сценарием. plz дайте мне знать, если вы уже нашли ответ.