如何编写PromQL计算下游服务的平均响应延迟?
如何用PromQL计算下游服务的平均响应延迟?
要计算下游服务的平均响应延迟,你可以直接利用提供的resilience4j_circuitbreaker_calls_seconds_sum(总请求耗时)和resilience4j_circuitbreaker_calls_seconds_count(总请求数)指标,通过总耗时除以请求数的逻辑实现。
核心PromQL语句
sum(rate(resilience4j_circuitbreaker_calls_seconds_sum{name="circuitBreakerName"}[1m])) by (name) / sum(rate(resilience4j_circuitbreaker_calls_seconds_count{name="circuitBreakerName"}[1m])) by (name)
语句说明
rate(metric[1m]):计算指标在1分钟窗口内的每秒变化率,得到这段时间内的平均每秒总耗时和平均每秒请求数,避免直接用累计值导致的结果失真(比如服务重启后累计值重置的场景)。sum(...) by (name):按断路器名称(name标签)聚合数据,确保计算的是指定断路器对应下游服务的平均延迟。- 除法操作:用每秒总耗时除以每秒请求数,最终得到单请求的平均响应延迟,单位为秒。
扩展:毫秒单位版本
如果需要以毫秒为单位展示结果,只需在计算后乘以1000:
(sum(rate(resilience4j_circuitbreaker_calls_seconds_sum{name="circuitBreakerName"}[1m])) by (name) / sum(rate(resilience4j_circuitbreaker_calls_seconds_count{name="circuitBreakerName"}[1m])) by (name)) * 1000
内容的提问来源于stack exchange,提问作者tusharRawat
相关产品推荐
相关产品推荐

