【问题标题】:How to output Apache Camel metrics like metrics:timer:simple.timer to Prometheus using Micrometer format with /actuator/prometheus如何使用带有 /actuator/prometheus 的 Micrometer 格式将 Apache Camel 指标(如 metrics:timer:simple.timer)输出到 Prometheus
【发布时间】:2020-11-10 21:43:07
【问题描述】:

基于Camel's metrics documentation,我想在一条路线内计量2个不同的计时器:

  @Override
    public void configure() {
        from(
                getMqttRouteConfiguration(
                        sourceId, mqttHost, mqttTopic, mqttPort, mqttProtocol, authenticated,
                        username, password, mqttVersion, maxReadRate, qualityOfService
                )
        )
                .to("metrics:timer:simple.timer1?action=start") //here starts the first one
                .to("log:camel.proxy?level=INFO&groupInterval=500000")
                .to("metrics:counter:simple.counter")
                .to(String.format("kafka:%s?brokers=%s", sourceId, kafkaBrokerUrls))
                .to("metrics:timer:simple.timer1?action=stop") //here ends the first one
                .to("metrics:timer:simple.timer2?action=start") //here starts the second one
                .process(new Processor() {
                    @Override
                    public void process(Exchange exchange) throws Exception {
                        exchange.getIn().setBody(exchange.getIn().getBody(String.class));
                        exchange.getIn().setHeader("CamelCacheKey", sourceId);
                        exchange.getIn().setHeader("CamelCacheOperation", "Update");
                    }
                })
                .to(String.format("cache://%s?maxElementsInMemory=10&eternal=true", sourceId))
                .to("metrics:timer:simple.timer2?action=stop") //here ends the second one
                .routeId(sourceId);
    }

即从路由的两个不同部分获取 2 个计时器,而不是像

这样的整个路由统计信息
CamelRoutePolicy_seconds_count{camelContext="camel-1",failed="false",routeId="ESP_01.Handle_Movement",serviceName="MicrometerRoutePolicyService",} 137.0
CamelRoutePolicy_seconds_sum{camelContext="camel-1",failed="false",routeId="ESP_01.Handle_Movement",serviceName="MicrometerRoutePolicyService",} 1.200024598

因为它是针对整个路线自动计算的。为获取CamelRoutePolicy_seconds_ 而设置的Micrometer 格式指标输出到/actuator/prometheus 取自以下问题:Send Apache Camel Actuator Metrics to Prometheus

但是,我的期望是客户指标 metrics:timer:simple.timer2metrics:timer:simple.timer1 也会出现在此处并显示在 CamelRoutePolicy_seconds_

但它不存在。我应该设置什么才能获得它?

【问题讨论】:

    标签: java apache-camel spring-boot-actuator spring-camel spring-micrometer


    【解决方案1】:

    所以,长话短说:Apache Camel 的 Metrics 组件与 Micrometer 不同

    我需要千分尺。因此,在所有路线中,我必须将 metrics: 替换为 micrometer: 并且一切正常。还请考虑依赖项(看起来两者都需要):

        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-micrometer-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-micrometer</artifactId>
            <version>${camel.version}</version>
        </dependency>
    

    【讨论】:

      猜你喜欢
      • 2020-03-31
      • 2021-09-09
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      相关资源
      最近更新 更多