Spring Boot 将Apache Camel Actuator发送到Prometheus

eh57zj3b  于 2023-11-17  发布在  Spring
关注(0)|答案(4)|浏览(121)

我正在尝试将Actuator Camel指标从/actuator/camelroutes(路由指标,如交换/交易数量)转发/添加到Prometheus Actuator端点。我是否有办法配置Camel以将这些指标添加到PrometheusMeterRegistry?
我试着添加:

camel.component.metrics.metric-registry=io.micrometer.prometheus.PrometheusMeterRegistry

字符串
在我的application.properties根据文档在这里:https://camel.apache.org/components/latest/metrics-component.html
但是actuator/prometheus中仍然没有显示任何与Apache Camel相关的内容
以下是我在Sping Boot 2.1.9Apache Camel 2.24.2中使用的依赖项:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
        <groupId>org.apache.camel</groupId>
            <artifactId>camel-metrics-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>

c2e8gylq

c2e8gylq1#

/actuator/prometheus端点中获得Camel Routes指标。
使用@ claus-ibsen评论中所述的camel-micrometer-starter依赖项。

<dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-metrics-starter</artifactId>
        </dependency>

字符串
在属性文件中设置以下内容:

camel.component.metrics.metric-registry=prometheusMeterRegistry


然后添加设置 Camel 上下文使用MicrometerRouterPolicyFactory和MicrometerMessageHistoryFactory.下面看到的代码是在配置类的地方:

@Configuration
public class AppConfig {

    @Bean
    public CamelContextConfiguration camelContextConfiguration() {

        return new CamelContextConfiguration() {
            @Override
            public void beforeApplicationStart(CamelContext camelContext) {
                camelContext.addRoutePolicyFactory(new MicrometerRoutePolicyFactory());
                camelContext.setMessageHistoryFactory(new MicrometerMessageHistoryFactory());
            }

            @Override
            public void afterApplicationStart(CamelContext camelContext) {

            }
        };
    }

}


您需要在路由中触发一个交换,以使指标出现在/actuator/prometheus中。
以下是Prometheus可用的指标:

  1. CamelMessageHistory_seconds_count
  2. CamelMessageHistory_seconds_max
  3. CamelRoutePolicy_seconds_max
  4. CamelRoutePolicy_seconds_count
  5. CamelRoutePolicy_seconds_sum

**您可以使用Prometheus的JMX Exporter jar从Camel的JMX中获取更详细的指标。**我想避免这种方法,因为这意味着对于我拥有的每个Camel Sping Boot 应用程序,将使用2个端口; 1个用于JMX Boot,1个用于Actuator Boot。

alen0pnh

alen0pnh2#

有一个camel-micrometer-starter依赖项,你应该使用它与micrometer集成。然后你可以使用该依赖项中的micrometer路由策略,让它监控你的所有路由。请参阅以下文档:https://camel.apache.org/components/2.x/micrometer-component.html

inb24sb2

inb24sb23#

我可以通过保持这些依赖关系的完整性来查看指标

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-management</artifactId>
</dependency>
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-metrics</artifactId>
</dependency>
<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-micrometer-starter</artifactId>
</dependency>
<dependency>
  <groupId>io.micrometer</groupId>
  <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

字符串
为什么我看不到实际的进程和bean名称,而不是像process3,bean1等?

CamelMessageHistory_seconds_sum{camelContext="AppName",nodeId="process3",routeId="AppNameRoute",serviceName="MicrometerMessageHistoryService",} 0.041466
    CamelMessageHistory_seconds_count{camelContext="AppName",nodeId="bean1",routeId="AppNameRoute",serviceName="MicrometerMessageHistoryService",} 100.0
    CamelMessageHistory_seconds_sum{camelContext="AppName",nodeId="bean1",routeId="AppNameRoute",serviceName="MicrometerMessageHistoryService",} 4.8417576

ztigrdn8

ztigrdn84#

我目前正在使用Apache Camel并使用Micrometer组件进行度量。我已经添加了必要的依赖项,但我面临一个问题,即度量没有显示在/actuator/prometheus端点中。

相关问题