1

我有一个带有 WebFlux + Spring Reactor 的 Spring Boot 项目,它使用ReactiveFeignClient.

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

  • 监控端点响应时间/状态码(http_server_requests_seconds
  • 监视器RestTemplate(如此处所述:https ://docs.spring.io/spring-metrics/docs/current/public/prometheus ,但我使用 feign)

在我完成了所有工作之后,我在 Prometheus 输出中没有看到响应式 feign 客户端仪表,即使我将 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。我确实启用并公开了 和 的metrics端点prometheus

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
4

1 回答 1

0

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

Reactive Feign ClientWebClient在下面使用,并会在 Spring Actuator 的存在下自动测量。

于 2020-05-06T22:34:45.390 回答