如何根据执行器指标的指标名称配置其他标签

时间:2021-04-16 12:44:58

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

无论如何我可以配置要添加到@Timed 指标的标签吗?我知道覆盖 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() {}

和另一个像这样的api:

@Timed("metric.2")
public String api2() {}

这样,在调用两个 API 之后,我们将获得这些指标,它们都具有相同的标签集

<块引用>

metric-1(tag1="val1", tag2="val2", status=201)
metric-2(tag1="val1", tag2="val2", status=200)

但是我们可以为这两个指标返回不同的标签集吗,像这样:

<块引用>

metric-1(tag1="val1", status=201)
metric-2(tag2="val2", status=200)

我发现了一个 WebMvcMetricsFilter 类,它是所有指标生成计时器的过程,有什么方法可以利用它来配置基于指标名称返回的标签吗?

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

一种选择(因为现在是春天,可能有很多方法可以做到这一点)是声明一个千分尺 al_init(); 并根据名称更新标签。

MeterFilter

从千分尺查看此文档(第 6.2 节),了解如何转换指标。您可以通过这种方式添加、更新或删除标签。