pPa*_*eta 5 spring reactive-programming kotlin prometheus spring-webclient
我想将 WebClient 调用的指标从服务公开到下游系统,需要诸如请求计数、最短、最长时间响应之类的指标。
我想知道如何为反应式网络客户端编写仪表。
这是一个 MeterBinder 示例,我有兴趣将其与 Webclient 一起使用。
class Metrics : MeterBinder {
override fun bindTo(registry: MeterRegistry) {
Gauge.builder("metrics", Supplier { Math.random() })
.baseUnit("status")
.register(registry)
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想获取 WebClient 调用的指标,您可以使用ExchangeFilterFunction,它用作拦截器。默认情况下,有一种 ExchangeFilterFunction 实现,即MetricsWebClientFilterFunction,可以将其添加为 WebClient 的过滤器,以提供请求计数数、响应时间和总响应时间等指标。
val metricsWebClientFilterFunction = MetricsWebClientFilterFunction(meterRegistry, DefaultWebClientExchangeTagsProvider(), "webClientMetrics")
WebClient.builder()
.baseUrl("http://localhost:8080/test")
.filter(metricsWebClientFilterFunction)
.build()
Run Code Online (Sandbox Code Playgroud)
这将在 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
Run Code Online (Sandbox Code Playgroud)
要编写自定义指标,您可以实现 ExchangeFilterFunction 并编写自定义实现来获取指标并将其添加到 WebClient 筛选器中。
归档时间: |
|
查看次数: |
8214 次 |
最近记录: |