Java 如何根据致动器指标的指标名称配置其他标记

Java 如何根据致动器指标的指标名称配置其他标记,java,spring-boot,spring-boot-actuator,spring-micrometer,Java,Spring Boot,Spring Boot Actuator,Spring Micrometer,我是否可以配置要添加到@Timed metrics的标记?我知道重写MebMvcTagsProvider或WebMvcTagsContributor类将返回一组标准的标记,这些标记对于所有mvc度量都是通用的。但是,有没有任何方法可以排除或包含某些指标的动态值标记?就像在这种情况下: WebMvcTagsProvider object -> provides a set of tags whose values like status etc. are set here -> tag

我是否可以配置要添加到@Timed metrics的标记?我知道重写MebMvcTagsProvider或WebMvcTagsContributor类将返回一组标准的标记,这些标记对于所有mvc度量都是通用的。但是,有没有任何方法可以排除或包含某些指标的动态值标记?就像在这种情况下:

WebMvcTagsProvider object -> provides a set of tags whose values like status etc. are set here -> tag1, val1; tag2, val2
然后我们有一个rest api,如下所示:

@Timed("metric.1")
public String api1() {}
@Timed("metric.2")
public String api2() {}
还有另一个类似这样的api:

@Timed("metric.1")
public String api1() {}
@Timed("metric.2")
public String api2() {}
因此,在调用这两个API之后,我们将获得这些指标,它们都具有相同的标记集

公制-1(tag1=“val1”,tag2=“val2”,状态=201)
公制-2(tag1=“val1”,tag2=“val2”,状态=200)

但我们是否可以为这两个指标返回不同的标记集,如下所示:

@Timed("metric.1")
public String api1() {}
@Timed("metric.2")
public String api2() {}
公制-1(tag1=“val1”,状态=201)
公制-2(tag2=“val2”,状态=200)

我发现了一个WebMvcMetricsFilter类,它是所有度量生成计时器的过程,是否有一些方法可以利用它来配置基于度量名称返回的标记

有人能帮我一下吗?

一个选择(因为它是弹簧,可以有很多方法)是声明一个千分尺
仪表过滤器
,并根据名称更新标签

@Bean
公共计量过滤器计量过滤器(){
返回新的MeterFilter(){
@凌驾
公共电表Id图(电表Id){
if(id.getName().equals(“metric-1”)){
返回id.withTags(标签为“foo”、“bar”);
}
//这里有更多的条件
返回id;
}
};
}

从测微计查看有关如何转换度量的文档(第6.2节)。您可以通过这种方式添加、更新或删除标记。

问题在于,标记应该是静态的,我无法为某些字段赋值,如响应状态等。如果我通过这种方式过滤掉标记,静态意味着什么?如非动态。我们不需要在这里将标记的值作为常量吗?您可以为标记使用命名约定,也可以使用
startsWith
contains
Meter.Id
中的名称是一个
String
对象。在这里,我们像这样返回标记,对吗?id.带标签(标签为“foo”、“bar”);其中“bar”是一个无法基于其他数据设置的设定值?