9

有没有办法关闭执行器/测微计中返回的一些度量值?现在看看它们,我看到大约 1000 个,并希望将它们缩减到少数几个,比如 100 个,以便实际发送到我们的注册表。

4

3 回答 3

18

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

management:
  metrics:
    enable:
      tomcat: true
      jvm: false
      process: false
      hikaricp: false
      system: false
      jdbc: false
      http: false
      logback: true

或者在代码中定义一个 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;
        }
    };
}
于 2019-01-08T17:43:59.900 回答
6

Meter 过滤器可以通过 Micrometer slack 通道讨论的 3 种方式提供帮助:

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

Micrometer 内置了第一种类型的仪表过滤器。它还支持类似于日志记录工作方式的分层启用/禁用(就像如果有仪表一样my.request.totalmy.request.latency您可以禁用所有以my.request.

我已经实现了我自己的组合过滤器示例,如果您有一个具有高基数的指标并希望将它们组合到新的维度中,这将非常有用。例如,您有一个关于状态代码的维度,这使您可以将 200、201、203 响应代码组合为一个标签2xx。这类似于 Netflix Spectator 的“占位符”支持。我很想在上游贡献该代码,但目前它是非常定制的,因此需要一些工作才能使其普遍可用。

捕获高基数维度的最后一种类型尚未创建,但将作为安全阀存在,确保如果指标可能具有大量标签值,它将计算唯一标签的数量,并且一旦达到最大值值被击中,禁用附加标签或将附加标签组合到一个公共存储桶中,这样该值就不会爆炸并可能压倒您的监控(如果按指标付费,则可能会花费您很多美元)

于 2018-01-26T05:36:40.837 回答
6

Mzzl 答案中的属性命名在Spring Boot 2 中发生了变化。例如,要禁用 JVM 指标,现在是:

management.metrics.binders.jvm.enabled=false

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

于 2019-02-26T11:37:23.247 回答