【问题标题】:How to give different metrics tags for different controllers in Spring Boot如何在 Spring Boot 中为不同的控制器赋予不同的指标标签
【发布时间】:2018-06-14 15:01:11
【问题描述】:

在 Spring Boot 2.0.2 中,是否可以为所有控制器使用一个 MeterRegistry bean,同时为每个控制器提供自己的一组 commonTag。例如在我的Application.java 中,我定义了以下内容。

@Bean
public MeterRegistryCustomizer<PrometheusMeterRegistry> metrics() {
  return registry -> registry.config().commonTags("messageType", "x");
}

然后,当我向registry 注册任何仪表时,他们将拥有这个messageType = x。是否可以在此 bean 中定义 commonTags 在 Controller 范围内执行任何函数时将注册的内容?

如果有怎么办?这需要在控制器本身内完成吗?

【问题讨论】:

    标签: spring-boot prometheus spring-boot-actuator micrometer


    【解决方案1】:

    实际上没有办法让在特定上下文中注册的仪表自动获取标签。 简短回答:您必须自己手动添加标签。

    您可以使用MeterFilter 来检查Meters,因为它们已注册并根据仪表的名称在其中添加标签。

    请记住,标签最适合用来表示测量的子集:

    db.request.total{queryType=userLookup}
    db.request.total{queryType=groupLookup}
    db.request.total{queryType=userUpdate}
    

    这是使用标签的推荐方式,因为这样您就可以确定有多少给定请求正在发出,哪些可能是需要优化速度的路径。

    db.request.total{caller=controller}
    db.request.total{caller=notAController}
    

    在这种情况下,调用者分解指标将没有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      相关资源
      最近更新 更多