如何将 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...我只找到了方法:
- 监控端点响应time/status代码(
http_server_requests_seconds
)
- monitor
RestTemplate
(如此处解释:https://docs.spring.io/spring-metrics/docs/current/public/prometheus,但我使用 feign)
在我完成所有工作之后,我没有在 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
。我确实启用并公开了 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
我发现了问题:与反应式伪装客户端相关的指标只会在您实际进行伪装调用后显示。在此之前,它们是隐藏的。
Reactive Feign Client 在下面使用 WebClient
,并且会在 Spring Actuator 存在的情况下自动测量。
我正在使用 Spring 使用 WebFlux + Spring Reactor 的引导项目,它使用 ReactiveFeignClient
调用其他服务。
如何集成 Prometheus 以便我可以监控响应时间(使用 @Timer
)和假调用返回的每个状态代码的百分比?像 200、400、404...我只找到了方法:
- 监控端点响应time/status代码(
http_server_requests_seconds
) - monitor
RestTemplate
(如此处解释:https://docs.spring.io/spring-metrics/docs/current/public/prometheus,但我使用 feign)
在我完成所有工作之后,我没有在 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
。我确实启用并公开了 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
我发现了问题:与反应式伪装客户端相关的指标只会在您实际进行伪装调用后显示。在此之前,它们是隐藏的。
Reactive Feign Client 在下面使用 WebClient
,并且会在 Spring Actuator 存在的情况下自动测量。