求Kubernetes集群中计算指定时间段总入站流量字节数的PromQL查询
计算Kubernetes容器指定时间段总入站网络流量的PromQL查询
核心查询语句(容器级)
要统计指定时间段内容器的总入站流量字节数,使用cAdvisor暴露的container_network_receive_bytes_total计数器指标(主流K8s监控采集方案如kube-prometheus-stack默认包含该指标),结合increase()和sum()函数实现:
1. 统计单个容器的入站流量
increase(container_network_receive_bytes_total{namespace="your-namespace", pod="your-pod", container="your-container"}[1h])
2. 统计整个命名空间所有容器的总入站流量
sum(increase(container_network_receive_bytes_total{namespace="your-namespace"}[24h]))
3. 按Pod分组统计命名空间内各Pod的入站流量
sum(increase(container_network_receive_bytes_total{namespace="your-namespace"}[12h])) by (pod)
关键说明
container_network_receive_bytes_total:单调递增的计数器,记录容器从启动到当前累计接收的网络字节数。increase(metric[duration]):计算指定时间段内计数器的增量,直接对应这段时间的实际入站流量总和(自动处理计数器重置场景,比sum_over_time更适合计数器类型指标)。- 标签过滤:通过
namespace、pod、container标签精准定位目标对象,可根据需求添加或移除标签条件。 - 时间段替换:将
[1h]、[24h]替换为你需要统计的时间段,比如[30m](30分钟)、[7d](7天)。
补充:节点级入站流量查询(如果需要)
如果要统计整个节点的入站流量,使用node-exporter的node_network_receive_bytes_total指标:
sum(increase(node_network_receive_bytes_total{instance="your-node-ip"}[24h])) by (device)
关于流量限制的思路
基于该监控数据设置流量限制时,可通过以下方式实现:
- 结合Prometheus Alertmanager配置告警规则,当容器/命名空间流量超过阈值时触发告警。
- 利用Kubernetes的
NetworkPolicy配合监控数据,通过自定义控制器动态调整带宽限制(需额外实现逻辑)。
内容的提问来源于stack exchange,提问作者Hesam Norin
相关产品推荐
相关产品推荐

