java - prometheus 端点中缺少 Spring Boot Webclient 指标

标签 java spring-boot prometheus spring-webclient spring-reactive

手动创建 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/

相关文章:

java - Eclipse E4 中的 FilteredItemsSelectionDialog

java - Spring 安全 : CookieTheftException with PersistentTokenBasedRememberMeServices

java - Spring-Cloud-Stream 仅在应用程序启动时实现的状态存储已完全填充并准备就绪后才处理 kafka 消息

aggregation - 如何聚合普罗米修斯指标

prometheus - 如何在 snmp 导出器的版本 2 中设置密码

java - JSON:对象到 JsonString - JsonString 到 X.class 对象

java - 使用直接算术表达式和在运行时将值传递给方法有什么区别吗?

java - 在哪里可以关闭我的 Spring Boot 应用程序中的 Lettuce Redis 连接?

java - 如果主服务器在 redis 哨兵配置中关闭,则无法连接到从属计算机,所有这些都在 Docker 容器中运行

docker - 使用cAdvisor监视Docker容器