1

在 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 中定义在commonTagsController 范围内执行任何函数时将注册的内容?

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

4

1 回答 1

0

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

您可以在注册时使用 aMeterFilter来检查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}

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

于 2018-06-15T13:38:16.203 回答