基于Prometheus在Grafana v9.5.1中实现每日容器网络发送流量统计图表
解决container_network_transmit_bytes_total每日总流量统计问题
针对你用Grafana v9.5.1 + Prometheus统计容器每日发送总流量的需求,以下是具体实现方案:
核心PromQL/MetricsQL写法
1. 基础单容器/指定标签统计(PromQL)
increase(container_network_transmit_bytes_total{<你的标签过滤条件>}[1d])
这个查询会计算每个时间点往前1天的流量增量,当Grafana按天聚合时,每个数据点就对应当日的总发送流量。
如果需要聚合多个容器的总流量,用sum分组:
# 按实例聚合 sum(increase(container_network_transmit_bytes_total{<你的标签过滤条件>}[1d])) by (instance) # 全局总流量 sum(increase(container_network_transmit_bytes_total{<你的标签过滤条件>}[1d]))
2. MetricsQL简化写法
如果你的数据源支持MetricsQL(比如VictoriaMetrics),可以用更直观的daily_increase函数:
daily_increase(container_network_transmit_bytes_total{<你的标签过滤条件>})
该函数专门处理每日增量计算,无需手动指定[1d]区间。
解决你之前increase无效的问题
你之前用increase没达到预期,大概率是以下原因:
- 时间范围不足:查询时间范围必须覆盖至少1天以上,否则无法计算1天区间的增量
- 步长设置错误:Grafana查询步长需设为1天(在查询编辑器的「Options」→「Min interval」设为
1d),步长过小会导致increase重复计算重叠区间的流量 - 标签过滤问题:如果未过滤无效标签(比如已停止的容器),会导致数据混乱,建议明确指定
pod、container等标签缩小范围
Grafana图表配置
- 时间范围:选择「最近N天」(比如最近7天)
- X轴设置:在图表的「Axes」选项中,将X轴模式设为「Time」,格式选择
YYYY-MM-DD - Y轴单位:在「Axes」→「Y轴」中,单位选择「bytes」或自动转换为「MB」「GB」更易读
获取每日数值和时间戳列表
切换到Grafana的「Table」面板,使用上述PromQL/MetricsQL查询,即可看到最近N天的每日时间戳(当日起始时间)和对应的流量数值列表。
注意事项
- 确保Prometheus中该指标有至少N天的历史数据
- counter类型指标重置(如容器重启)时,
increase和daily_increase会自动处理,不会出现负数 - 如果需要统计接收流量,替换指标为
container_network_receive_bytes_total即可
内容的提问来源于stack exchange,提问作者Hesam Norin
相关产品推荐
相关产品推荐

