如何用Grafana将Prometheus聚合指标生成分行列式表格含总计
解决Grafana中Prometheus Gauge指标行列转换并添加总计列的问题
第一步:调整Prometheus查询语句
需要同时获取各service对应不同status的聚合值,以及每个service的总计值,用以下查询合并两个结果集:
sum by (service, status) (service_results_total) or label_replace(sum by (service) (service_results_total), "status", "total", "", "")
- 第一行保留原有的按service和status聚合的逻辑
- 第二行先按service聚合得到总计,再用
label_replace给总计结果添加status="total"的标签,方便后续统一处理
第二步:Grafana Table面板配置
- 添加查询:新建Table面板,数据源选择你的Prometheus,粘贴上面的PromQL语句
- 清理字段:切换到「Transform」标签,添加「Organize fields」转换:
- 移除
Time字段(不需要时序时间) - 保留
service、status、Value三个字段,可调整顺序为service在前
- 移除
- 行列转换(Pivot):添加「Pivot」转换:
- Rows:选择
service(按服务分组作为行) - Columns:选择
status(按状态作为列) - Values:选择
Value,聚合方式选Last(取Gauge指标的最新值)
- Rows:选择
- 填充空值:添加「Replace all fields」转换:
- 替换条件:
is null - 替换值:
0(确保没有数据的状态显示0而非空)
- 替换条件:
- 调整样式:在「Panel options」中,可设置表头名称、列宽等,确保列顺序为
service、ok、fail、warning、total
完成以上配置后,就能得到你预期的表格样式,每个服务作为行,各状态作为列,最后附带总计列。
内容的提问来源于stack exchange,提问作者Erick
相关产品推荐
相关产品推荐

