如何基于Prometheus指标在Grafana中生成正确的分组柱状图?
解决Grafana分组柱状图配置问题
第一步:用正确的PromQL获取数据
你的基础查询sum by (location, sellable) (articles_sellable_total)本身没问题,但要确保是即时查询(而非范围查询)——因为分组柱状图需要的是每个维度的静态聚合值,而非时间序列的变化。如果需要取最新的样本值,也可以用:
sum by (location, sellable) (last_over_time(articles_sellable_total[1h]))
先在Grafana Explore里运行这个查询,确认返回的结果包含所有location和sellable的组合(比如Warehouse0的true/false、Warehouse1的true/false等)。
第二步:调整Grafana可视化配置
- 新建Bar chart面板,把上述查询添加到Query标签,确保查询类型选Instant(即时)。
- 切换到Transform标签,添加Label to Fields转换:
- 选择
sellable作为「Field name source」 - 选择
location作为「Row identifier」
这一步会把每个sellable的数值转换成单独的字段,表格视图会变成location列 +true列 +false列的格式,方便生成分组柱子。
- 选择
- 回到Visualization标签:
- 在Axes设置里,X轴选择location(类别模式),Y轴对应数值字段;
- 在Bar settings里,设置Group width调整柱子间距,确保同一location下的两个柱子(true/false)并排显示。
为什么你之前的查询出问题?
count by (location, sellable):count统计的是时间序列的数量,不是指标值的总和,得到的是每个标签组合有多少个样本,不是你要的库存数量。sum by (location) (...) + (...):这个查询把true和false的数值合并成了每个location的总数,丢失了sellable维度,自然没法做分组柱状图。- 表格视图只显示单维度:大概率是Grafana默认只展开了一个系列,你可以在表格的Legend或字段设置里,勾选显示所有返回的系列。
内容的提问来源于stack exchange,提问作者imTachu
相关产品推荐
相关产品推荐

