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

如何调整PromQL查询以在Grafana中准确展示24小时/7天网络传输数据?

正确的PromQL查询及最佳实践

问题分析

你原查询的核心问题是误用了rate()结合长时间区间计算总传输量:

  • rate(container_network_transmit_bytes_total[24h])计算的是24小时内的平均每秒传输速率,再乘以86400秒得到的是理论总传输量,但长区间会导致速率计算失真,且不如直接统计增量准确。
  • 聚合顺序处理不当也可能导致数据遗漏或重复统计。

正确查询语句

过去24小时总传输千兆字节数

sum(increase(container_network_transmit_bytes_total[24h])) / 1024 / 1024 / 1024

过去7天总传输千兆字节数

sum(increase(container_network_transmit_bytes_total[7d])) / 1024 / 1024 / 1024

关键逻辑说明

  1. increase()的作用:直接获取counter指标在指定时间区间内的总增量,自动处理容器重启导致的counter重置问题,比rate() * 时间更准确可靠。
  2. 聚合顺序:先对每个容器的时间序列单独计算increase(),再用sum()汇总所有容器的增量,确保每个实例的传输数据都被正确统计,避免因标签维度变化导致的聚合错误。
  3. 单位转换:除以1024^3将字节转换为千兆字节(GB),如果需要展示其他单位可调整除数(比如MB是1024^2)。

最佳实践

  • 适配Grafana动态时间范围:如果希望面板时间范围变化时查询自动适配,用Grafana内置变量$__range替代固定的24h/7d,示例:
    sum(increase(container_network_transmit_bytes_total[$__range])) / 1024 / 1024 / 1024
    
  • 按维度拆分统计:如果需要查看单个容器/命名空间的传输量,可在sum()后添加by()子句,比如:
    sum(increase(container_network_transmit_bytes_total[24h])) by (container_name) / 1024 / 1024 / 1024
    
  • 数据保留校验:确保[24h]/[7d]在Prometheus的数据保留范围内,否则会返回部分数据或空结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 22:07:37