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

如何基于cAdvisor数据在Grafana中正确计算指定时段网络带宽使用量?

问题分析与解决方案

核心错误原因

你当前的查询逻辑完全颠倒了:

  • rate() 函数返回的是每秒平均带宽速率(基于1分钟窗口计算),而非总流量。
  • Grafana的「Total」计算是对所有数据点的速率值求和,这相当于把每秒速率直接相加,完全不是总流量的计算方式。
  • 时间范围越长,Grafana会自动降采样减少数据点数量,再加上不同时间段的速率波动,就会出现「两天总量小于一天」的反逻辑结果。

正确实现方式

要获取选定时段内的总网络流量,应该使用Prometheus的increase()函数(专门计算计数器在指定时间段内的增量),配合Grafana内置的$__range变量(自动匹配右上角选择的时间范围)。

步骤1:修改PromQL查询

将原查询替换为:

sum(increase(container_network_receive_bytes_total{instance=~"$host", name=~"$container"}[$__range]))
  • increase(...)[$__range]:直接计算选定容器在Grafana时间范围内接收的总字节数增量
  • sum():对匹配的所有容器流量求和(如果只监控单个容器,可去掉sum())
  • 移除冗余的name=~".+":你的$container变量已经包含了容器筛选逻辑,无需重复判断

步骤2:调整Grafana面板设置

  1. 进入Stat面板的「Value options」设置
  2. 将「Calculation」改为Last(或Current):因为increase()返回的是整个时间范围的单个总数值,直接取最后一个值即可
  3. 在「Unit」中选择bytes:Grafana会自动根据数值大小转换为KB/MB/GB等单位

验证效果

  • 选择「最近24小时」:显示该时间段内的总接收流量
  • 选择「最近2天」:显示两天的总流量,数值必然大于单日结果

内容的提问来源于stack exchange,提问作者John Doe Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:30:38