метрики верблюда в Spring Boot 2 - мои метрики не видны в MBeans через JConsole - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть проект, основанный на 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 для маршрута:

JConsole view

Я не вижу своего пользовательского simple.counter unlinke в статье учебника, где у автора есть свои собственные видимые метрики ...

Я полагаю, что что-то упустил , Может быть, потому что я использую другую версию базового программного обеспечения, поэтому мне нужно настроить что-то большее? Или это как-то связано со старой версией библиотеки метрик? Есть подсказки или подсказки?

...