弹簧启动执行器/千分尺度量禁用一些

Joe*_*mes 3 metrics spring-boot-actuator micrometer

有没有办法在执行器/千分尺中关闭一些返回的公制值?现在看着它们我已经看到了1000左右,并希望将它们减少到少数几个说100实际被发送到我们的注册表.

Mzz*_*zzl 11

让我用几个例子来详细说明checketts发布的答案。您可以application.yml像这样启用/禁用某些指标:

management:
  metrics:
    enable:
      tomcat: true
      jvm: false
      process: false
      hikaricp: false
      system: false
      jdbc: false
      logback: true
Run Code Online (Sandbox Code Playgroud)

或者在代码中定义一个 MeterFilter bean:

@Bean
public MeterFilter meterFilter() {
    return new MeterFilter() {
        @Override
        public MeterFilterReply accept(Meter.Id id) {
            if(id.getName().startsWith("tomcat.")) {
                return MeterFilterReply.DENY;
            }
            if(id.getName().startsWith("jvm.")) {
                return MeterFilterReply.DENY;
            }
            if(id.getName().startsWith("process.")) {
                return MeterFilterReply.DENY;
            }
            if(id.getName().startsWith("system.")) {
                return MeterFilterReply.DENY;
            }
            return MeterFilterReply.NEUTRAL;
        }
    };
}
Run Code Online (Sandbox Code Playgroud)


And*_*own 6

Mzzl 的答案中的属性命名在 Spring Boot 2 中已更改。例如,要禁用 JVM 指标,现在是:

management.metrics.binders.jvm.enabled=false
Run Code Online (Sandbox Code Playgroud)

有关其他选项,请参阅此类。Spring 团队再次进行了重构2.1.x,这些内部工厂 bean 类现在被提升到独立文件中,但属性命名仍然与2.0.x.


che*_*tts 5

仪表滤波器可以通过Micrometer松弛通道讨论的3种方式提供帮助:

  1. 禁用指标
  2. 结合尺寸
  3. 高基数封顶过滤器

千分尺内置了第一种类型的仪表过滤器.它还支持分层启用/禁用,类似于日志记录的工作方式(如果有像仪表那样my.request.total,my.request.latency您可以禁用所有开头的指标my.request.

我已经实现了我自己的组合过滤器示例,如果您有一个具有高基数的指标并希望将它们组合在新的维度中,这将非常有用.例如,您在状态代码上有一个维度,这可以将200,201,203个响应代码组合为一个标记2xx.这类似于Netflix Spectator的" 占位符 "支持.我很乐意在上游贡献该代码,但目前它非常习惯,所以需要一些工作才能使它通常可用.

用于捕获高基数维度的最后一种类型尚未创建,但作为安全阀存在,确保如果度量标准可能具有大量标记值,则它将计算唯一标记的数量并且最多一次值被命中,要么禁用或将其他标签组合到一个公共存储桶中,这样该值就不会爆炸并且可能会超出您的监控范围(或者如果按每个指标付费,则会花费很多$$$)

  • 像这样使用`MeterRegistryCustomizer`:```@Bean MeterRegistryCustomizer <MeterRegistry> customizer(@Value("$ {spring.application.name}")String applicationName){return(registry) - > registry.config().commonTags ("application",applicationName); ```在新问题中会更容易阅读. (2认同)