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

如何在Grafana中绘制1小时窗口内1秒级请求速率的最大值

解决方案

Prometheus获取1秒级速率方案

你遇到的[1s]窗口查询无数据的核心原因是:rate()函数的计算窗口必须大于等于Prometheus对该指标的抓取间隔,默认Prometheus抓取间隔通常为15s/30s,1s窗口内没有足够样本支撑计算,因此返回无数据。
可行配置步骤:

  • 调整对应指标的抓取job配置,将scrape_interval设置为1s,该操作会增加Prometheus写入负载,指标基数不高的场景可直接使用
  • 配置Recording Rule预计算指标,避免实时查询的性能损耗,示例规则如下:
groups:
- name: fetches_rate_record
  rules:
  # 预计算1秒级请求速率
  - record: fetches_counter:rate_1s
    expr: sum(rate(fetches_counter_total{namespace="$namespace"}[1s]))
  # 预计算1小时窗口内的最大1秒速率
  - record: fetches_counter:rate_1s_max_1h
    expr: max_over_time(fetches_counter:rate_1s[1h])

后续直接查询fetches_counter:rate_1s_max_1h即可快速获取周粒度的每小时最大1秒速率,完全满足你的监控需求。

Loki实现日志数量max_over_time方案

你遇到的语法报错是因为Loki要求嵌套聚合时,内层聚合必须作为子查询用括号包裹,调整后的正确查询语句如下:
max_over_time((sum(count_over_time({namespace="$namespace"} |= "Fetch happened log text" [1s])))[5m:1s])
查询大范围周期时数据点少、每次返回结果不同的原因是Loki默认对大范围查询做了采样限制,避免查询压力过高,你可以通过两种方式解决:

  • 调整Grafana Loki数据源的最大查询步长/采样参数,关闭大范围查询的自动采样
  • 配置Loki Ruler预计算每秒的日志计数,将结果作为指标写入Prometheus,后续直接通过Prometheus查询最大值即可
    另外unwrap语法用于提取日志内容中的数值字段做聚合计算,你当前仅需统计日志行数,无需使用该语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:15:03