0

手动创建 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 中似乎已弃用)?

4

1 回答 1

1

获得正确检测的首选方法是确实使用WebClient.BuilderSpring Boot 提供的实例。

如果您不希望这样做(作为一个单独的问题,也许可以解释为什么要选择该选择,也许有一种方法可以解决使您考虑该选择的问题),实际上您应该在MetricsWebClientFilterFunction客户端中手动连接。

我没有看到该课程的任何弃用通知,我错过了什么吗?

于 2020-02-10T22:24:46.577 回答