【发布时间】:2021-11-16 05:22:34
【问题描述】:
我目前正在开发一个 Spring webflux 项目,该项目具有以下 Actuator、Micrometer 依赖项,
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
</dependency>
公开默认指标(包括 Spring webClient 指标)。我使用 Spring WebClient 调用了 4 个不同的端点。我想知道是否有一种方法可以为每个添加到默认指标的 Web 客户端调用添加特定标签。我在 /actuator/prometheus 端点暴露了一些指标,例如来自 Webclient 的 Histogram,如下所示,
http_client_requests_seconds_bucket{clientName="my-app.com",method="GET",outcome="SUCCESS",status="200",uri="/shops",le="0.001048576",} 0.0
http_client_requests_seconds_bucket{clientName="my-app.com",method="GET",outcome="SUCCESS",status="200",uri="/shops",le="0.002088576",} 1.0
在我的代码中,我想在 Webclient 调用中为上述所有指标添加一些额外的标签。比如这样的,
http_client_requests_seconds_bucket{clientName="my-app.com",method="GET",outcome="SUCCESS",status="200",uri="/shops",le="0.001048576",investor="A", version="v1"} 0.0
http_client_requests_seconds_bucket{clientName="my-app.com",method="GET",outcome="SUCCESS",status="200",uri="/shops",le="0.002088576",investor="A", version="v1"} 1.0
请注意我添加的 2 个自定义标签 investor="A", version="v1"。我正在寻找一些可能看起来像这样的代码,
@Autowire
private WebClient webclient; // Assume there is already a bean created for us
public Mono<String> getShopsList(String... extraTags) {
return webclient.baseUrl("http://my-app.com")
.build()
.get()
.uri("/shops")
.tags(extraTags) // Some extra tags I want callers of the method to pass. Note there are only 4-5 methods that call "getShopsList()" method
.retrieve()
.bodyToMono(String.class);
}
有人可以帮助了解实现这一目标的最佳方法吗?
【问题讨论】:
标签: spring spring-webflux spring-boot-actuator spring-webclient spring-micrometer