Grafana表格可视化问题:无法将所有容器合并至同一列
解决Grafana容器资源表格合并列问题
问题场景
期望创建如下格式的容器资源统计表格:
Container CPU Usage (%) Memory Usage (GB) Disk Reads (MB) Network In (KB/s) cadvisor 15.5 1.2 10 200 nginx-container 20.3 0.8 15 500
但当前配置生成的表格会将不同容器拆分为独立列,使用的PromQL查询如下:
label_replace(rate(container_cpu_usage_seconds_total{name=~"$container"}[$__range]), "resource", "cpu", "", "") or #Current memory usage in GB label_replace( container_memory_usage_bytes{name=~"$container"} / (1024 * 1024 * 1024), "resource", "memory", "", "") or label_replace( container_fs_usage_bytes{name=~"$container"} / (1024 * 1024 * 1024), "resource", "disk", "", "") or label_replace( ( rate(container_network_receive_bytes_total{name=~"$container"}[$__range]) * (1024 / 1024 / 1024) + rate(container_network_transmit_bytes_total{name=~"$container"}[$__range]) * (1024 / 1024 / 1024) ), "resource", "network", "", "" )
已配置「按字段连接」「标签转字段」「正则重命名字段」转换,但未得到预期格式。
解决方案
步骤1:修正PromQL查询(对齐指标含义与单位)
调整查询,确保每个指标的含义、单位与预期表格匹配,同时保留name(容器名)和resource(资源类型)标签:
# CPU使用率(百分比) label_replace(rate(container_cpu_usage_seconds_total{name=~"$container"}[$__range]) * 100, "resource", "cpu_usage", "", "") or # 内存使用量(GB) label_replace( container_memory_usage_bytes{name=~"$container"} / (1024 * 1024 * 1024), "resource", "memory_usage", "", "" ) or # 磁盘读取量(MB,基于最近时间段的速率) label_replace( rate(container_fs_reads_bytes_total{name=~"$container"}[$__range]) / (1024 * 1024), "resource", "disk_reads", "", "" ) or # 网络入流量(KB/s) label_replace( rate(container_network_receive_bytes_total{name=~"$container"}[$__range]) / 1024, "resource", "network_in", "", "" )
说明:
- CPU部分乘以100,将核心占比转为百分比数值
- 磁盘指标替换为
container_fs_reads_bytes_total的速率,匹配「磁盘读取量」需求 - 网络指标仅保留入流量,并转换为KB/s单位
步骤2:调整Grafana转换规则
删除原有的「按字段连接」转换,按以下顺序添加转换:
标签转字段(Labels to Fields)
- 配置:将
name标签映射为字段Container,将resource标签映射为字段Resource,保留默认的Value字段 - 作用:把每个时间序列的容器名、资源类型从标签提取为表格字段
- 配置:将
透视(Pivot)
- 配置:
- 行字段:选择
Container - 列字段:选择
Resource - 值字段:选择
Value - 聚合函数:选择
Last(或根据需求选Avg)
- 行字段:选择
- 作用:将同一容器的不同资源指标从行转换为列,实现预期的表格结构
- 配置:
正则重命名字段(Rename by regex)
- 配置:
- 匹配模式:
(cpu_usage|memory_usage|disk_reads|network_in) - 替换模式:对应中文名称,比如:
cpu_usage→CPU Usage (%)memory_usage→Memory Usage (GB)disk_reads→Disk Reads (MB)network_in→Network In (KB/s)
- 匹配模式:
- 作用:将字段名改为更易读的格式,匹配期望表格的表头
- 配置:
步骤3:验证结果
完成配置后,表格将自动按容器名合并行,每个容器的CPU、内存、磁盘、网络指标作为列展示,与预期格式一致。
内容的提问来源于stack exchange,提问作者Roshan Patil
相关产品推荐
相关产品推荐

