You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PromQL统计指定时段内Resilience4j触发降级的下游API总失败数?

关于Resilience4j指标统计总失败次数的方案

Resilience4j暴露的Prometheus指标完全可以满足你的需求,以下是具体的指标说明和查询语句:

可用的核心指标

  • resilience4j_circuitbreaker_calls_total:计数器类型,记录断路器的所有调用情况,通过result标签区分调用结果:
    • FAILURE:对应下游返回4xx/5xx等触发断路器降级的业务异常
    • TIMEOUT:下游调用超时触发的降级
    • NOT_PERMITTED:断路器处于打开状态时,直接拒绝调用并触发降级的次数
  • resilience4j_timelimiter_calls_total:你已在使用的超时计数器,result="TIMEOUT"标签对应单独由限流器捕获的超时(若未和断路器关联)

统计指定时段总失败次数的PromQL示例

如果要统计1小时内指定服务的总失败次数(包含超时、业务异常、断路器打开拒绝的情况),可以用以下查询:

sum by (service, name) (
  // 业务异常触发的降级次数
  increase(resilience4j_circuitbreaker_calls_total{service="service-name", result="FAILURE"}[1h])
  +
  // 超时触发的降级次数(断路器捕获)
  increase(resilience4j_circuitbreaker_calls_total{service="service-name", result="TIMEOUT"}[1h])
  +
  // 断路器打开时直接拒绝的次数
  increase(resilience4j_circuitbreaker_calls_total{service="service-name", result="NOT_PERMITTED"}[1h])
  +
  // 限流器单独捕获的超时次数(按需添加)
  increase(resilience4j_timelimiter_calls_total{service="service-name", result="TIMEOUT"}[1h])
)

说明

  • 使用increase函数直接获取指定时段内的指标增量,适合统计总次数;若需速率,可替换为rate并乘以时段秒数(如rate(...) * 3600)
  • 可通过label_values(resilience4j_circuitbreaker_calls_total, result)查询当前环境下result标签的所有可选值,根据实际业务场景调整筛选条件
  • 若你的超时逻辑完全由断路器接管,可去掉最后一行限流器的统计项

内容的提问来源于stack exchange,提问作者tusharRawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:40:22