如何使用Spring-Boot的RestTemplate在uri标记中获取http-client-requests指标的模板化值?

问题描述 投票:0回答:1

我们正在使用Spring Boot 2.1.4和micrometer-registry-prometheus依赖项来捕获指标。

[在某些情况下,Spring Boot服务使用RestTemplate调出另一个服务。此调用生成的指标包含URI中的实际值,而不是模板值。

例如,在/actuator/prometheus端点中,我看到这样的条目:

http_client_requests_seconds_count{clientName="someClient",method="GET",status="200",uri="/person/lookup?firstName=Tony&lastName=Soprano",} 1.0

基于文档,我希望看到变量名而不是值,像这样:

http_client_requests_seconds_count{clientName="someClient",method="GET",status="200",uri="/person/lookup?firstName={firstName}&lastName={lastName}",} 1.0

是否有一种方法可以获取默认的http.client.requests度量值以使用URI标记的模板化值?

https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production-ready-metrics-http-clients处的Spring文档对uri标签说了这一点:

如果可能,请在替换变量之前请求URI模板(例如,/ api / person / {id})

我们如何使变量替换成为可能?

spring spring-boot resttemplate spring-boot-actuator spring-micrometer
1个回答
0
投票

我假设您正在使用RestTemplateBuilder构建您的RestTemplate,否则您将无法注册度量。

您实际上是否将模板化的url传递到RestTemplate的交换方法中并传递了用于subsubscription的参数?在2.1.4.RELEASE2.2.1.RELEASE上与我合作。

    template.getForObject("http://localhost:" + this.serverPort + "/hello/{id}",
            String.class, Collections.singletonMap("id", "loop"));

结果:

http_client_requests_seconds_count{application="micrometered2",clientName="localhost",method="GET",outcome="SUCCESS",status="200",uri="/hello/{id}",} 23.0
© www.soinside.com 2019 - 2024. All rights reserved.