MicroProfile 指标不显示 Wildfly 25 上的自定义指标

MicroProfile Metrics do not show custom metrics on Wildfly 25

我正在试验Javax/JaxRs,我正在使用我不太熟悉的 WildFly 25 服务器。

在搜索类似于 Spring 的 Actuator 时,我偶然发现了服务器默认公开的指标和健康端点,以及它向应用程序端点添加自定义计数器、计量器等的能力。

但是,无论我做什么,这些 自定义端点 都不会在默认的 http://localhost:9990/metrics URL.

下公开

我正在按照 WildFly 在 GitHub 存储库下提供的指南进行操作: https://github.com/wildfly/quickstart/tree/main/microprofile-metrics

教程中有一些“危险信号”,无论我尝试做什么,它们似乎都不起作用。

  1. 指南建议,如果我们想获取JSON格式的指标,我们需要使用下面的header:“Accepted: application/json”,仍然return是 Postman 和 Curl 中的默认 Prometheus 格式。
  2. 指南还建议metrics/vendor, metrics/application, metrics/base return 不同范围的指标,据我测试,它们都 return 相同。

就教程代码而言,我在 Jakarta EE 8 Full & Web Distribution 上试过 运行 但它抛出以下错误:

Artifact microprofile-metrics:war exploded: java.lang.Exception: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"microprofile-metrics.war\".undertow-deployment" => "java.lang.NoClassDefFoundError: org/eclipse/microprofile/metrics/Counter Caused by: java.lang.NoClassDefFoundError: org/eclipse/microprofile/metrics/Counter

我尝试用不同版本的 Java(1.8、11、17)编译代码,希望它可以解决问题,但无济于事。

但是,使用 WildFly Preview EE 9.1 Distribution 似乎不再引发错误,但自定义指标仍然不起作用。

我在尝试期间添加到两个发行版的子系统(取自 standalone.xml):

    <extension module="org.wildfly.extension.health"/>
    <extension module="org.wildfly.extension.metrics"/>
    <extension module="org.wildfly.extension.microprofile.config-smallrye"/>
    <extension module="org.wildfly.extension.microprofile.fault-tolerance-smallrye"/>
    <extension module="org.wildfly.extension.microprofile.health-smallrye"/>
    <extension module="org.wildfly.extension.microprofile.jwt-smallrye"/>
    <extension module="org.wildfly.extension.microprofile.metrics-smallrye"/>
    <extension module="org.wildfly.extension.microprofile.openapi-smallrye"/>
    <extension module="org.wildfly.extension.microprofile.opentracing-smallrye"/>
    <extension module="org.wildfly.extension.undertow"/>

(其他省略)

我还尝试通过创建以下 bat 并启动它来启用统计信息:

call standalone.bat -Dwildfly.statistics-enabled=true

我正在使用 IntelliJ,因此我尝试在 IDE 中执行相同的操作:

(“启用统计信息”选项已添加到 VM 选项和启动期间的蝙蝠上以确保其有效)

根据我的服务器版本,这是我正在使用的依赖项:

<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.wildfly.bom</groupId>
        <artifactId>wildfly-microprofile</artifactId>
        <version>25.0.0.Final</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.wildfly.bom</groupId>
        <artifactId>wildfly-jakartaee8-with-tools</artifactId>
        <version>25.0.0.Final</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

<dependencies>
    <!-- Import the MicroProfile Metrics API, we use provided scope as the API is included in the server -->
    <dependency>
      <groupId>org.eclipse.microprofile.metrics</groupId>
      <artifactId>microprofile-metrics-api</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- Import the CDI API, we use provided scope as the API is included in the server -->
    <dependency>
      <groupId>jakarta.enterprise</groupId>
      <artifactId>jakarta.enterprise.cdi-api</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- Import the Jakarta REST API, we use provided scope as the API is included in the server -->
    <dependency>
      <groupId>org.jboss.spec.javax.ws.rs</groupId>
      <artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

约翰。我是 WildFly 的 Metrics/MP 指标组件负责人,希望我能帮助您解决问题。

在我对挖掘 WF 源感到兴奋之前,您能确认一下您使用的是哪种配置吗?看起来您正在使用 standalone.xml 配置。虽然它确实有一个指标扩展,但它不是 MP 指标。为此,您需要使用 standalone-microprofile.xml.

希望您的问题就这么简单。如果没有,请告诉我,我们将深入挖掘。 :)