io.micrometer.core.instrument.config.MeterFilter: DENY не работает при весенней загрузке - PullRequest
0 голосов
/ 30 марта 2020

Я хочу предоставить все метрики в конечную точку метрики, но опубликую sh некоторые из них в удаленном реестре счетчиков.

Для этого у меня есть SimpleMeterRegistry для конечной точки метрики и добавлено MeterRegistryCustomizer для удаленного реестра счетчиков (Datadog) для добавления некоторых MeterFilter , чтобы избежать указания c метрик с использованием функции DENY MeterFilter. Например:

@Bean
public MeterRegistryCustomizer<StatsdMeterRegistry> meterRegistryCustomizer() {
    return (registry) -> new StatsdMeterRegistry(config, Clock.SYSTEM).config().meterFilter(MeterFilter.denyNameStartsWith("jvm"));
   }    

Однако все метрики, относящиеся к jvm, видны в Datadog. Я пытался MeterFilterReply , но бесполезно. Пожалуйста, предложите, как этого можно достичь.

1 Ответ

1 голос
/ 31 марта 2020

Вы настраиваете фильтр на новый StatsdMeterRegistry. При использовании MeterRegistryCustomizer вам необходимо работать с реестром, который был передан.

@Bean
public MeterRegistryCustomizer<StatsdMeterRegistry> meterRegistryCustomizer() {
    return (registry) -> registry.config().meterFilter(MeterFilter.denyNameStartsWith("jvm"));
   }   

Поскольку настройщик будет использоваться против всех реестров, вам также необходимо добавить оператор if, чтобы фильтровать только реестр, который вы хотите отфильтровать.

@Bean
public MeterRegistryCustomizer<StatsdMeterRegistry> meterRegistryCustomizer() {
   return (registry) -> { 
      if(registry instanceof StatsdMeterRegistry) {
        registry.config().meterFilter(MeterFilter.denyNameStartsWith("jvm"));
      }   
   }
}   

...