如何在Grafana中按小时获取Counter指标的数量分布?
实现按小时请求数量分布的PromQL方案
针对你的http_server_requests_seconds_count{} Counter指标,要实现Grafana中按小时的请求数量分布,核心是利用PromQL的增量计算与时间维度聚合函数,具体方案如下:
1. 按小时区间展示实时请求量(最近N小时,每小时一个数据点)
如果要展示最近一段时间内每小时的请求总数(比如最近24小时,每个小时的请求量),直接用以下查询:
increase(http_server_requests_seconds_count{}[1h])
然后在Grafana面板设置中,将时间间隔(Interval)调整为1小时,或使用Grafana内置变量$__interval,面板会自动按小时展示每个区间的请求增量。
2. 按一天24小时聚合历史请求分布(对比0-23点的请求量)
如果要统计历史数据中每个小时的请求总量分布(比如把最近7天里所有0点的请求加总、1点的请求加总,对比24小时的流量差异),用以下查询:
sum by (hour) ( increase(http_server_requests_seconds_count{}[$__range]) * on() group_left(hour) hour(timestamp(http_server_requests_seconds_count{})) )
$__range是Grafana变量,代表当前面板选择的时间范围(比如选最近7天,就会聚合这7天的小时数据)- 最终会输出0-23共24个数据点,对应一天中每个小时的总请求量
关键运算符/函数说明
increase():计算Counter指标在指定时间窗口内的总增量,直接得到这段时间的请求总数,比rate()(每秒增量)更适合统计总量hour():提取时间戳对应的小时数(0-23),作为分组维度sum by (hour):按小时维度聚合所有请求的增量,得到每个小时的总请求数* on() group_left(hour):通过匹配运算符将每个请求序列的增量与对应的小时数关联,实现按小时分组聚合
面板配置建议
- 选择柱状图或条形图面板类型,最适合展示小时分布的对比效果
- 如果需要按其他维度(如接口路径、响应状态)细分,可在
sum by中添加对应标签,比如sum by (hour, path)
内容的提问来源于stack exchange,提问作者Kekestan
相关产品推荐
相关产品推荐

