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

请求率下降触发Grafana Singlestat面板变色的配置问询

用PromQL实现请求率下降的Singlestat告警面板

当然可以实现!而且通过PromQL把「当前请求率对比10分钟前的下降比例」直接计算出来,再配合Singlestat的阈值配置,比单纯依赖原始指标的阈值要精准得多,完全贴合你的需求。

第一步:编写计算下降比例的PromQL

直接用PromQL的offset语法获取10分钟前的指标值,再算出下降比例:

1 - (sum(Total_Query_Received_persec) / sum(Total_Query_Received_persec offset 10m))

这个查询的逻辑很直白:

  • sum(Total_Query_Received_persec offset 10m):拿到10分钟前的请求率总和
  • 当前请求率总和除以历史值,得到当前值相对历史值的比例
  • 用1减去这个比例,得到下降的百分比(小数形式):比如当前值是10分钟前的50%,结果就是0.5(对应50%下降);如果只剩20%,结果就是0.8(对应80%下降)

第二步:配置Singlestat面板

  1. 把上面的PromQL填入Singlestat的指标查询框
  2. 调整显示单位:在「Display」选项卡的「Unit」里选择「Percentage」,面板会直接显示百分比(比如50%、80%),看起来更直观
  3. 设置阈值规则:
    • 黄色阈值:当数值≥0.5时触发(也就是下降50%及以上)
    • 红色阈值:当数值≥0.8时触发(也就是下降80%及以上)
      刚好Singlestat默认是数值越高越触发严重级别的颜色,完全匹配我们的场景——下降比例越高,问题越严重

额外优化:处理无历史数据的情况

如果服务刚启动,10分钟前没有数据,上面的查询会返回空值。可以加个兜底逻辑避免面板无数据:

1 - (sum(Total_Query_Received_persec) / (sum(Total_Query_Received_persec offset 10m) or vector(1)))

这里用or vector(1),如果历史值为空,就默认用1作为对比基准——这样只要当前有数据,就不会因为历史值缺失导致查询失效。

你还可以在Singlestat的「Value」选项卡设置副标题,把sum(Total_Query_Received_persec)作为第二个指标,这样既能看到下降比例,也能看到当前的实际请求数,排查问题时更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:12:39