当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring-Boot的RESTTemplate在uri标记中获得http-client-requests度量的模板化值?

奚正谊
2023-03-14

我们使用Spring Boot 2.1.4和Micrometer-Registry-Prometheus依赖项来捕获度量。

我们有一个Spring Boot服务使用RestTemplate调用另一个服务的例子。这个调用生成的度量包含URI中的实际值,而不是模板值。

例如,在/Actuator/Prometheusendpoint中,我看到如下条目:

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/producture-ready-features.html#producture-ready-metrics-http-clients中的Spring文档对uri标记做了如下说明:

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

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

共有1个答案

贺华容
2023-03-14

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

您实际上是在将模板化的url传递到resttemplate的exchange方法中,并传递用于subsbitution的params吗?适用于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
 类似资料:
  • 我试图使用下面的代码模拟方法,但我得到了异常,而且我是单元测试的新手

  • 我正在使用Spring-Boot和Spring Security,并使用第三方的OAuth2登录名。 SSO提供程序有一个accesstokenendpoint,它返回以下JSON 引用来自accesstokenendpoint的JSON中的值。我如何访问这些值给定我的设置?

  • 我尝试了很多方法来模拟restTemboard交换,但模拟没有发生,实际的交换不断调用并给我url无效异常。 我的CallRestService方法如下 我的模拟如下: 我还尝试返回已注释的响应实体。但每次都会有例外。 我对mocking的理解是,不会调用实际的exchange方法,那么我如何获得resttemplate exchange异常。 如果需要任何输入,请评论。 谢谢你的支持。 更新:我

  • 问题内容: 我们有一个Spring项目即将投入生产。目前,该项目正在使用A。有一种使用 的想法。 我正在四处寻找使用的任何显着优势。另外,知道哪种HTTP传输在其实现中执行RestTemplate也会很有趣。Apache Http Client已被多个小组使用多年,并享有良好的声誉。 问题答案: RestTemplate和HttpClient不在同一抽象级别上运行。 HttpClient是使用HT

  • callbackFacebook函数如何从uri获取代码的值? uri=http://localhost:8081/callback?code=AQDNm6hezKdTsId5k4oXKNo

  • 我在我的Spring Boot应用程序中包括Spring Cloud Sleuth Zipkin 2.2.7,并使用注入的RestTemplates,以便对它们的调用进行检测并发送到Zipkin。 我的zipkin跨度由RestTem板调用产生,包含和的标记,但没有其他HTTP信息。 有没有办法在标记中显示查询参数?有时,它们中有一些非常有用的有趣信息,可以在标记中显示出来(例如,)。