当前位置: 首页 > 知识库问答 >
问题:

Spring启动执行器/千分尺指标禁用一些

壤驷坚
2023-03-14

有没有办法关闭执行器/千分尺中的一些返回的度量值?现在看着它们,我看到大约1000个,并想将它们缩减到精选的几个,比如100个,以便实际发送到我们的注册表。

共有3个答案

扈瑞
2023-03-14

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

management.metrics.binders.jvm.enabled=false

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

艾正浩
2023-03-14

仪表滤波器可以在三个方面提供帮助,这三个方面已与测微计松弛通道进行了讨论:

  1. 禁用指标

千分尺配备了第一种内置的仪表过滤器。它还支持分层启用/禁用,类似于日志记录的工作方式(例如,如果有类似于“我的请求.总计”和“我的请求.延迟”的度量,则可以禁用以“我的请求”开始的所有度量。

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

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

郎宏浚
2023-03-14

让我用几个例子来详细阐述一下切克茨发布的答案。您可以在应用程序中启用/禁用某些指标。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;
        }
    };
}
 类似资料:
  • 我正在将JavaSpring项目从java 8迁移到java 11。所以我需要将dropwizard指标替换为千分尺。Dropwizard指标记录到达特定endpoint时的状态和响应。例如:endpoint- 有没有办法在千分尺中实现相同的效果?我知道有注释,但由于某种原因它不起作用。(我把它放在endpoint方法上)。 我的属性文件(仅与指标相关的值):

  • 我有一个Spring Boot应用程序,我有以下依赖关系:

  • 我用的是Spring靴。为了监视JVM内存,我正在使用Spring Boot Actuator的/metricsendpoint。 我无法理解键实际上代表什么: 有人能告诉我它们到底是什么吗? CMS(并发标记扫描)和MarkSweepCompact相同吗?我应该使用CMS(并发标记扫描)吗?或者我应该使用哪种GC算法?

  • 我有一个应用程序,其中包含2打Spring批处理cronjobs.There没有Rest控制器,因为它是一个分析应用程序,它每天运行,从数据库读取数据,处理它,然后将聚合数据存储在另一个数据库中。我想使用千分尺对作业进行Spring内置度量,并将它们推送到Prometheus。由于我的应用程序不是网络服务器应用程序,所以千分尺仍然会在HOST: 8080上发布结果?执行器会自动在HOST: 808

  • 我有一个带有Jersey RESTendpoint的web应用程序(war)。我正在与prometheus/micrometer集成以生成度量。我在这里公开了“/metrics”endpoint 我被困在如何生成http请求度量上。我找不到任何与获取这些指标相关的代码。有人能帮我吗?

  • 我想禁用除健康endpoint之外的所有执行器endpoint。所有文档都描述了如何在资源属性中实现这一点: 但我一直倾向于使用内联java配置。有人能解释一下我可以在应用程序的什么地方配置相同的吗?