如何在普罗米修斯中公开 webClient 指标?
How to expose webClient metrics in prometheus?
我想公开从服务到下游系统的 WebClient 调用的指标,需要诸如请求计数、响应的最短、最长时间等指标。
我想知道如何为响应式网络客户端编写一个仪表。
这是我有兴趣与 webclient 一起使用的示例 MeterBinder。
class Metrics : MeterBinder {
override fun bindTo(registry: MeterRegistry) {
Gauge.builder("metrics", Supplier { Math.random() })
.baseUnit("status")
.register(registry)
}
}
如果您想获取 WebClient 调用的指标,您可以使用 ExchangeFilterFunction which is used as an interceptor. By default, there is one implementation of ExchangeFilterFunction i.e MetricsWebClientFilterFunction,它可以作为过滤器添加到您的 WebClient 中,以提供诸如请求数、响应时间和总响应时间之类的指标。
val metricsWebClientFilterFunction = MetricsWebClientFilterFunction(meterRegistry, DefaultWebClientExchangeTagsProvider(), "webClientMetrics")
WebClient.builder()
.baseUrl("http://localhost:8080/test")
.filter(metricsWebClientFilterFunction)
.build()
这将在 prometheus 中公开此 WebClient 调用的所有指标。
样本普罗米修斯输出:
webClientMetrics_seconds_count{clientName="localhost",method="GET",status="200",uri="/test",} 2.0
webClientMetrics_seconds_sum{clientName="localhost",method="GET",status="200",uri="/test",} 2.05474855
webClientMetrics_seconds_max{clientName="localhost",method="GET",status="200",uri="/test",} 1.048698171
要编写自定义指标,您可以实现 ExchangeFilterFunction 并编写自定义实现以获取指标并将其添加到 WebClient 过滤器中。
我想公开从服务到下游系统的 WebClient 调用的指标,需要诸如请求计数、响应的最短、最长时间等指标。
我想知道如何为响应式网络客户端编写一个仪表。
这是我有兴趣与 webclient 一起使用的示例 MeterBinder。
class Metrics : MeterBinder {
override fun bindTo(registry: MeterRegistry) {
Gauge.builder("metrics", Supplier { Math.random() })
.baseUnit("status")
.register(registry)
}
}
如果您想获取 WebClient 调用的指标,您可以使用 ExchangeFilterFunction which is used as an interceptor. By default, there is one implementation of ExchangeFilterFunction i.e MetricsWebClientFilterFunction,它可以作为过滤器添加到您的 WebClient 中,以提供诸如请求数、响应时间和总响应时间之类的指标。
val metricsWebClientFilterFunction = MetricsWebClientFilterFunction(meterRegistry, DefaultWebClientExchangeTagsProvider(), "webClientMetrics")
WebClient.builder()
.baseUrl("http://localhost:8080/test")
.filter(metricsWebClientFilterFunction)
.build()
这将在 prometheus 中公开此 WebClient 调用的所有指标。 样本普罗米修斯输出:
webClientMetrics_seconds_count{clientName="localhost",method="GET",status="200",uri="/test",} 2.0
webClientMetrics_seconds_sum{clientName="localhost",method="GET",status="200",uri="/test",} 2.05474855
webClientMetrics_seconds_max{clientName="localhost",method="GET",status="200",uri="/test",} 1.048698171
要编写自定义指标,您可以实现 ExchangeFilterFunction 并编写自定义实现以获取指标并将其添加到 WebClient 过滤器中。