我有一个使用 Camel 的 Spring Boot 3 项目。我正在使用
org.apache.camel.springboot:camel-observation-starter
进行追踪。
我已经使用 autoconfig instructions 和 来自骆驼观察团队的博客设置了该项目。
我的跟踪正在工作,并且正在生成指标(使用普罗米修斯)。我的问题是,camel-observation-starter 生成的默认指标非常疯狂,每个请求和响应都存储为自己的指标,因此基本上每个请求/响应都完整存储在 prometheus 端点上。
我想使用camel-observation-starter进行跟踪,但停止它产生任何指标。我找不到办法做到这一点。有什么建议吗?
更新:camel-observation-starter 使用 ObservationRegistry 类。我尝试自己将其注册为无操作注册表,并且这有效,因为它删除了我不希望从骆驼中获得的“垃圾”指标。我的自定义指标仍然存在。然而,我所依赖的默认 spring 指标(例如 http_server_requests_seconds_sum)缺失了。
@Bean
public ObservationRegistry observationRegistry() {
return ObservationRegistry.NOOP;
}
我能够解决这个问题,至少是以一种相当不令人满意的方式。我创建了一个 MeterFilter 来删除名称过长的指标。这使得我的跟踪以及我想要的普罗米修斯指标保持完整,例如默认的弹簧执行器指标和我的自定义指标。
@Bean
public MeterFilter meterFilter() {
return new MeterFilter() {
@Override
public MeterFilterReply accept(final Meter.Id id) {
if (id.getName().length() > 100) {
return MeterFilterReply.DENY;
}
return MeterFilterReply.NEUTRAL;
}
};
}