0

我正在使用弹性 4j 断路器,并且无法使用 prometheus servlet 客户端导出指标。我正在部署到 jbossas7 服务器,但我的 /metrics 端点没有显示任何内容。有人有什么想法吗?我将断路器注入到一个 bean 中,它可以与下面的断路器启动代码一起正常工作,该代码位于工厂中。

当我调试我的代码时,我看到在collectorRegistry 中创建并注册了断路器。但是当它被写入 simpleclient servlet 的 servlet 时,没有任何内容写入输出。它只是跳到客户端库代码中的 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;
}
4

0 回答 0