【发布时间】: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.timer2、metrics:timer:simple.timer1 也会出现在此处并显示在 CamelRoutePolicy_seconds_ 中
但它不存在。我应该设置什么才能获得它?
【问题讨论】:
标签: java apache-camel spring-boot-actuator spring-camel spring-micrometer