手动创建 WebClient 时,Prometheus 端点中的 Http 客户端指标丢失。
下面的代码能够生成预期的 http 客户端指标,如下所示,
@Autowired
WebClient.Builder webClientBuilder;
@GetMapping("client")
public Mono<String> getClientData() {
return webClientBuilder.baseUrl("http://localhost:8080").build().get().retrieve().bodyToMono(String.class);
}
**Prometheus Metrics**
http_client_requests_seconds_count{clientName="localhost",method="GET",metric1="firstmetric",metric2="secondmetric",outcome="CLIENT_ERROR",status="404",uri="/",} 1.0
http_client_requests_seconds_sum{clientName="localhost",method="GET",metric1="firstmetric",metric2="secondmetric",outcome="CLIENT_ERROR",status="404",uri="/",} 0.2275663
如下所示手动创建 WebClient.Builder 时,Prometheus 端点缺少预期指标(如上所示)。
@GetMapping("client")
public Mono<String> getClientData() {
return WebClient.builder().baseUrl("http://localhost:8080").build().get().retrieve().bodyToMono(String.class);
}
是否有任何解决方案可以在不自动连接WebClient或WebClient构建器的情况下获取指标(已经探索过MetricsWebClientFilterFunction,但它似乎在最近版本的Spring Boot中已弃用)?
最佳答案
正确使用仪器的首选方法是使用 WebClient.Builder
Spring Boot提供的实例。
如果您不希望这样(作为一个单独的问题,也许可以解释为什么选择,也许有一种方法可以解决使您考虑该选择的问题),您实际上应该手动连接 MetricsWebClientFilterFunction
在客户端中。
我没有看到该类的任何弃用通知,我错过了什么吗?
关于java - prometheus 端点中缺少 Spring Boot Webclient 指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59980584/