#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
В учебнике есть некоторые «красные флажки», которые, похоже, не работают с тем, что я пытаюсь сделать.
- В руководстве предлагается, чтобы, если мы хотим получить показатели в формате JSON, нам нужно использовать следующий заголовок:»
Accepted: application/json
«, который по-прежнему возвращает формат Prometheus по умолчанию как в Postman, так и в Curl. - Руководство также предполагает, что метрики/поставщик, метрики/приложение, метрики/базовые возвращают метрики разных областей, которые, по моему тесту, все они возвращают одно и то же.
Что касается кода учебника, я попытался запустить его в полном и веб-дистрибутиве 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:
(опция «включить статистику» была добавлена как в параметры виртуальной машины, так и в летучую мышь во время запуска, чтобы убедиться, что она работает)
Вот зависимости, которые я использую, в зависимости от версии моего сервера:
<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. Пожалуйста, сведите к минимуму несущественную информацию и не задавайте уточняющих вопросов в своих решениях. Вот для чего нужны комментарии.