如何在Spring Boot中为不同的控制器提供不同的度量标签

时间:2018-06-14 15:01:12

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

在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中定义当在Controller的范围内执行任何函数时commonTags将注册什么?

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

1 个答案:

答案 0 :(得分:0)

在特定上下文中注册的仪表并没有真正的方法可以自动获取标签。 简答:您必须自己手动添加标记。

您可以使用MeterFilter检查注册时的Meter,并根据仪表名称添加标签。

请注意,标记最适合用于表示测量的子集:

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}

在这种情况下,通过调用者分解度量标准将无用。