Показатели микропрофиля не отображают пользовательские показатели в Wildfly 25

#java #jax-rs #wildfly #microprofile

Вопрос:

Я экспериментирую с Javax/JAXR и использую сервер WildFly 25, с которым я не совсем знаком.

В поисках чего-то похожего на привод Spring я наткнулся на конечные точки показателей и работоспособности, которые сервер предоставляет по умолчанию, и его возможность добавлять пользовательские счетчики, датчики и т. Д. к конечным точкам приложения.

Однако, что бы я ни делал, эти пользовательские конечные точки не отображаются по умолчанию http://localhost:9990/metrics URL.

Я следую руководству, предоставленному WildFly в репозитории GitHub: https://github.com/wildfly/quickstart/tree/main/microprofile-metrics

В учебнике есть некоторые «красные флажки», которые, похоже, не работают с тем, что я пытаюсь сделать.

  1. В руководстве предлагается, чтобы, если мы хотим получить показатели в формате JSON, нам нужно использовать следующий заголовок:» Accepted: application/json «, который по-прежнему возвращает формат Prometheus по умолчанию как в Postman, так и в Curl.
  2. Руководство также предполагает, что метрики/поставщик, метрики/приложение, метрики/базовые возвращают метрики разных областей, которые, по моему тесту, все они возвращают одно и то же.

Что касается кода учебника, я попытался запустить его в полном и веб-дистрибутиве Jakarta EE 8, но он выдает следующую ошибку:

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, похоже, перестает выдавать ошибку, но пользовательские метрики по-прежнему не работают.

Есть подсистемы, которые я добавил в оба дистрибутива во время моих попыток (взяты из 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"/>
 

(другие опущены для краткости)

Я также попытался включить статистику, создав следующую летучую мышь и запустив ее:

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

Я использую IntelliJ, поэтому я попытался сделать то же самое из среды IDE:
Конфигурация запуска IDE

(опция «включить статистику» была добавлена как в параметры виртуальной машины, так и в летучую мышь во время запуска, чтобы убедиться, что она работает)

Вот зависимости, которые я использую, в зависимости от версии моего сервера:

 <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>
 

Ответ №1:

Джон. Я являюсь ведущим компонентом метрик/MP Метрик для WildFly, поэтому, надеюсь, я смогу помочь вам разобраться.

Прежде чем я слишком увлекусь копанием в источнике WF, можете ли вы подтвердить, какую конфигурацию вы используете? Похоже, вы используете standalone.xml конфигурация. Хотя у этого есть расширение метрик, это не метрики MP. Для этого вам нужно будет использовать standalone-microprofile.xml.

Надеюсь, ваша проблема так же проста, как и эта. Если нет, дайте мне знать, и мы копнем глубже. 🙂

Комментарии:

1. Эй, Джейсон, спасибо за ответ. Да, я управлял standalone.xml конфигурация и, похоже, она ведет себя по-другому. Я могу подтвердить это, используя standalone-microprofile.xml работает как заклинание! Я только что запустил файл bat следующим образом: «автономный.bat-c standalone-microprofile.xml». Большое спасибо! P.S. Есть ли способ включить показатели MP для конфигурации по умолчанию? Заранее спасибо.

2. Попробуйте это: jboss-cli.sh -c «/расширение=org.wildfly.расширение.микропрофиль.метрики-smallrye:добавить()» amp;amp; jboss-cli.sh -c «/подсистема=микропрофиль-метрики-smallrye:добавить()» amp;amp; jboss-cli.sh -c перезагрузка

3. Пожалуйста, сведите к минимуму несущественную информацию и не задавайте уточняющих вопросов в своих решениях. Вот для чего нужны комментарии.