У меня есть проект, основанный на fuse-springboot-bom RedHat, который будет развернут в OpenShift:
<dependency>
<groupId>org.jboss.redhat-fuse</groupId>
<artifactId>fuse-springboot-bom</artifactId>
<version>7.5.0.fuse-sb2-750029-redhat-00003</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Я следовал этой статье по порядку настроить верблюжий показатель мониторинг и экспортировать его через JMX Exporter , чтобы использовать его Prometheus инструмент мониторинга.
Я добавил camel-metrics
зависимость в моем POM:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-metrics</artifactId>
</dependency>
Затем я был вынужден включить также более старую версию Dropwizards metrics-core
, чтобы избежать java.lang.ClassNotFoundException: com.codahale.metrics.JmxReporter
ошибки:
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>3.2.2</version>
</dependency>
I Я не уверен на 100% в этом, но без этого хака мое приложение не запускалось при запуске, потому что класс JmxReporter был перемещен в другое место в более новых версиях, на которые ссылаются текущие метрики верблюда. Другим вариантом было понижение верблюжьих метрик, но версии 2.17.7 и ниже давали мне ошибку org.apache.camel.FailedToCreateRouteException: Failed to create route aggregatesRoute: Route(aggregatesRoute)[[From[cxf:bean:aggregatesInEndpoint?d... because of NullPointerException
...
Следуя дальнейшим инструкциям, я определил свой MetricsRoutePolicy
для использования JMX и с Пользовательское имя домена:
<bean class="org.apache.camel.component.metrics.routepolicy.MetricsRoutePolicy" id="policy">
<property name="useJmx" value="true"/>
<property name="jmxDomain" value="okte.metrics"/>
</bean>
И я сделал ссылку на это в своем маршруте:
<route id="aggregatesRoute" routePolicyRef="policy">
Затем я попытался определить простые метрики счетчика внутри маршрута:
<route id="aggregatesRoute" routePolicyRef="policy">
<from id="aggregatesInEndpoint" uri="cxf:bean:aggregatesInEndpoint?dataFormat=PAYLOAD"/>
<!-- DO STUFF HERE -->
<log message="TEST camel-metrics counter will be increased"/>
<to uri="metrics:counter:simple.counter"/>
<log message="TEST camel-metrics counter was increased"/>
</route>
Когда я запускаю свое приложение на локальном хосте (еще не в OpenShift) и использую SoapUI для вызова маршрута, я вижу оба сообщения журнала в консоли и никаких ошибок или чего-то еще.
Но когда я открываю JConsole , подключиться к запущенному процессу и проверить перечисленные MBeans , затем для группы okte.metrics
По умолчанию отображается только метри c для маршрута:
Я не вижу своего пользовательского simple.counter
unlinke в статье учебника, где у автора есть свои собственные видимые метрики ...
Я полагаю, что что-то упустил , Может быть, потому что я использую другую версию базового программного обеспечения, поэтому мне нужно настроить что-то большее? Или это как-то связано со старой версией библиотеки метрик? Есть подсказки или подсказки?