- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用Spring Boot 2.1.2.RELEASE,并且尝试将Micrometer与CompositeMeterRegistry一起使用。我的目标是将一些选定的仪表发布到ElasticSearch。下面的代码显示了我的示例配置。问题是,过滤器被完全忽略了(因此所有度量标准都被发送到ElasticSearch),尽管我在日志中可以看到过滤器已被处理(“过滤器回复计量表...”行)。
奇怪的是,如果我将MeterFilter定义为Spring Bean,那么它将应用于所有注册表(但是,我希望仅将其应用于“elasticMeterRegistry”)。
这是一个示例配置类:
@Configuration
public class AppConfiguration {
@Bean
public ElasticConfig elasticConfig() {
return new ElasticConfig() {
@Override
@Nullable
public String get(final String k) {
return null;
}
};
}
@Bean
public MeterRegistry meterRegistry(final ElasticConfig elasticConfig) {
final CompositeMeterRegistry registry = new CompositeMeterRegistry();
registry.add(new SimpleMeterRegistry());
registry.add(new JmxMeterRegistry(new JmxConfig() {
@Override
public Duration step() {
return Duration.ofSeconds(10);
}
@Override
@Nullable
public String get(String k) {
return null;
}
}, Clock.SYSTEM));
final ElasticMeterRegistry elasticMeterRegistry = new ElasticMeterRegistry(elasticConfig, Clock.SYSTEM);
elasticMeterRegistry.config().meterFilter(new MeterFilter() {
@Override
public MeterFilterReply accept(Meter.Id id) {
final MeterFilterReply reply =
id.getName().startsWith("logback")
? MeterFilterReply.NEUTRAL
: MeterFilterReply.DENY;
log.info("filter reply of meter {}: {}", id.getName(), reply);
return reply;
}
});
registry.add(elasticMeterRegistry);
return registry;
}
}
elasticMeterRegistry.config().meterFilter(new MeterFilter() {
@Override
public MeterFilterReply accept(Meter.Id id) {
final MeterFilterReply reply =
id.getName().startsWith("logback")
? MeterFilterReply.ACCEPT
: MeterFilterReply.DENY;
log.info("filter reply of meter {}: {}", id.getName(), reply);
return reply;
}
});
elasticMeterRegistry.config().meterFilter(
MeterFilter.accept(id -> id.getName().startsWith("logback")));
elasticMeterRegistry.config().meterFilter(
MeterFilter.accept(id -> id.getName().startsWith("logback")));
elasticMeterRegistry.config().meterFilter(
MeterFilter.deny());
最佳答案
这实际上是问题的综合。我只想指出几点。
对于您定义的MeterRegistry
bean,Spring Boot将自动配置ElasticMeterRegistry
bean,因为没有ElasticMeterRegistry
bean。与其定义自己的CompositeMeterRegistry
bean,不如定义一个自定义的ElasticMeterRegistry
bean,它会应用您想要的MeterFilter
,然后让Spring Boot为您创建一个(CompositeMeterRegistry
bean)。
对于MeterFilterReply
,ACCEPT
将立即接受计量器,DENY
将立即拒绝计量器,NEUTRAL
将决定推迟到下一个过滤器。除非有任何DENY
,否则基本上将接受米。
关于spring-boot - 千分尺过滤器被CompositeMeterRegistry忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54694204/
在千分尺中,我们可以创建一个新的仪表,做一些类似的事情 myMeterRegistry.gauge("my_metric", 69); 在此处查看代码 https://github.com/micro
我是一名优秀的程序员,十分优秀!