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

Grafana表格可视化能否拆分列或横向重复展示设备状态?

解决Grafana设备在线状态表格多列布局问题

原生Grafana表格面板确实没有直接实现“单列满N条后横向换行”的设置,以下是三种可行的实现方案:

方案一:HTML面板自定义网格布局(最灵活,适配未来设备扩容)

通过自定义代码直接渲染多列网格,完全可控布局:

  1. 新建HTML面板,进入面板设置,关闭「Sanitize HTML」选项(否则JavaScript无法执行)
  2. 在面板内容中粘贴以下代码(根据你的数据源字段名调整):
<style>
  .device-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 10px;
    padding: 10px;
  }
  .device-item {
    padding: 8px;
    border-radius: 4px;
    background: #f5f5f5;
  }
  .device-online {
    color: #2ecc71;
    font-weight: bold;
  }
  .device-offline {
    color: #e74c3c;
    font-weight: bold;
  }
</style>
<div class="device-grid" id="deviceGrid"></div>

<script>
  // 从Grafana数据源提取字段(替换成你的实际字段名,比如"device_name"和"status")
  const dataSeries = grafanaData.series[0].fields;
  const deviceNames = dataSeries.find(f => f.name === "device_name").values;
  const statuses = dataSeries.find(f => f.name === "status").values;

  const gridContainer = document.getElementById("deviceGrid");
  // 循环生成设备状态项
  for (let i = 0; i < deviceNames.length; i++) {
    const item = document.createElement("div");
    item.className = "device-item";
    const statusClass = statuses[i] === "online" ? "device-online" : "device-offline";
    item.innerHTML = `<div>${deviceNames[i]}</div><div class="${statusClass}">${statuses[i]}</div>`;
    gridContainer.appendChild(item);
  }
</script>
  1. 调整CSS中的grid-template-columns控制每列宽度,gap控制项间距,确保一屏能放下所有列;替换代码中的字段名匹配你的数据源。

方案二:数据源查询预处理+Transform转置多列

通过给数据添加分组标识,再转置成多列表格:

  1. 查询阶段添加列组编号:以SQL数据源为例,用窗口函数生成行号,按每15条分组:
    SELECT 
      device_name, 
      status,
      CEIL(ROW_NUMBER() OVER (ORDER BY device_name) / 15) AS column_group
    FROM device_status
    
  2. 配置Transform:
    • 添加「Group by」,按column_group分组,将每组的device_name和status聚合为数组
    • 添加「Organize fields」,将不同列组的字段重命名为「列1设备」「列1状态」「列2设备」「列2状态」等,实现多列展示

方案三:Stat面板+重复面板(适合当前36台设备规模)

快速生成多列状态卡片:

  1. 创建模板变量device,类型为Query,从数据源获取所有设备名
  2. 新建Stat面板,配置查询,根据$device变量显示对应设备的在线状态,设置状态文本颜色(在线绿色、离线红色)
  3. 在面板设置中开启「Repeat」,选择device变量,设置每行显示15个面板,自动生成多列布局

内容的提问来源于stack exchange,提问作者TeeLan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:21:09