如何将 Prometheus 与 ReactiveFeignClient 集成以计量从客户端调用返回的每个状态代码的响应 time/hits

How to integrate Prometheus with ReactiveFeignClient to meter response time/hits of each status code returned from client call

我正在使用 Spring 使用 WebFlux + Spring Reactor 的引导项目,它使用 ReactiveFeignClient 调用其他服务。

如何集成 Prometheus 以便我可以监控响应时间(使用 @Timer)和假调用返回的每个状态代码的百分比?像 200、400、404...我只找到了方法:

在我完成所有工作之后,我没有在 Prometheus 输出中看到任何反应式假客户端计量,即使我定义了 logger 的 bean 如下:

    @Bean
    public MetricsWebClientFilterFunction metricsWebClientFilterFunction(PrometheusMeterRegistry meterRegistry,
                                                                         WebClientExchangeTagsProvider provider) {
        return new MetricsWebClientFilterFunction(
                meterRegistry,
                provider,
                APP_NAME + "reactive-client-request",
                AutoTimer.ENABLED
        );
    }

    @Bean
    public MicrometerReactiveLogger feignReactiveLogger(Clock clock,
                                                        PrometheusMeterRegistry meterRegistry) {

        return new MicrometerReactiveLogger(
                clock,
                meterRegistry,
                APP_NAME + ".feign.client_metrics",
                MetricsTag.getMandatory()
        );
    }

另外,我发现无法启用/actuator/prometheus,只能启用/_system/check/prometheus。我确实启用并公开了 metricsprometheus.

的端点
management:
  health:
    diskspace:
      enabled: false
  endpoint:
    metrics.enabled: true
    prometheus.enabled: true
  endpoints:
    web:
      base-path: /_system/check
      exposure:
        include: info,health,loggers,metrics,prometheus
      path-mapping:
        health: /simple

我发现了问题:与反应式伪装客户端相关的指标只会在您实际进行伪装调用后显示。在此之前,它们是隐藏的。

Reactive Feign Client 在下面使用 WebClient,并且会在 Spring Actuator 存在的情况下自动测量。