如何为某些 Spring Boot Micrometer 指标提供标签而不是其他指标?
How to provide tags for some Spring Boot Micrometer metrics but not others?
我正在使用 Spring Boot Micrometer,它会生成 http_server_requests_seconds_bucket
、http_server_requests_seconds_sum
、http_server_requests_seconds_count
、http_server_requests_seconds_max
等指标
我正在使用 WebFluxTagsProvider
向这些指标添加标签
@Bean
public WebFluxTagsProvider webFluxTagsProvider() {
return (serverWebExchange, throwable) -> {
HttpHeaders headers = serverWebExchange.getRequest().getHeaders();
return ImmutableList.of(
Tag.of(
"my_tag",
Objects.toString(headers.getFirst("tag_value"), "")));
};
}
“my_tag”值正确显示在上述所有指标中。
但是 http_server_requests_seconds_bucket
指标基数太高。这是一个不需要“my_tag”的指标。
如何将该标签添加到除 http_server_requests_seconds_bucket
之外的所有指标?
编辑
我试过这个解决方案,但没有用,也许我做错了
@Bean
public MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
return registry ->
registry
.config()
.meterFilter(
MeterFilter.maximumAllowableTags(
"http_server_requests_seconds_bucket",
"my_tag",
0,
MeterFilter.ignoreTags("my_tag")
));
}
我想我可以将最大标签设置为 0,然后即时忽略它。似乎不起作用,但即使它起作用也可能不是最佳选择
您的 MeterFilter
方法是正确的。我不确定为什么您尝试的方法不起作用。这可能是由于千分尺使用点符号这一事实。您使用的下划线看起来像是您在普罗米修斯中看到的指标。您可以尝试“http.server.requests”,但这会影响 _sum
、_count
和 _max
.
您可以考虑创建一个单独的仪表来独立控制标签。
或者,如果您使用的是 Prometheus,则可以使用重新标记配置来删除不需要的标签。但这可能会导致与普罗米修斯丢弃的其他桶发生碰撞。在那种情况下我不确定。
我正在使用 Spring Boot Micrometer,它会生成 http_server_requests_seconds_bucket
、http_server_requests_seconds_sum
、http_server_requests_seconds_count
、http_server_requests_seconds_max
等指标
我正在使用 WebFluxTagsProvider
向这些指标添加标签
@Bean
public WebFluxTagsProvider webFluxTagsProvider() {
return (serverWebExchange, throwable) -> {
HttpHeaders headers = serverWebExchange.getRequest().getHeaders();
return ImmutableList.of(
Tag.of(
"my_tag",
Objects.toString(headers.getFirst("tag_value"), "")));
};
}
“my_tag”值正确显示在上述所有指标中。
但是 http_server_requests_seconds_bucket
指标基数太高。这是一个不需要“my_tag”的指标。
如何将该标签添加到除 http_server_requests_seconds_bucket
之外的所有指标?
编辑
我试过这个解决方案,但没有用,也许我做错了
@Bean
public MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
return registry ->
registry
.config()
.meterFilter(
MeterFilter.maximumAllowableTags(
"http_server_requests_seconds_bucket",
"my_tag",
0,
MeterFilter.ignoreTags("my_tag")
));
}
我想我可以将最大标签设置为 0,然后即时忽略它。似乎不起作用,但即使它起作用也可能不是最佳选择
您的 MeterFilter
方法是正确的。我不确定为什么您尝试的方法不起作用。这可能是由于千分尺使用点符号这一事实。您使用的下划线看起来像是您在普罗米修斯中看到的指标。您可以尝试“http.server.requests”,但这会影响 _sum
、_count
和 _max
.
您可以考虑创建一个单独的仪表来独立控制标签。
或者,如果您使用的是 Prometheus,则可以使用重新标记配置来删除不需要的标签。但这可能会导致与普罗米修斯丢弃的其他桶发生碰撞。在那种情况下我不确定。