以下内容介绍如何通过 Grafana 的表格面板实现灵活的数据可视化,该面板支持时间序列、表格和原始 JSON 数据等多种模式,并具备日期格式、数值格式及配色等选项。

创建表格面板
以统计服务器资源为例,演示表格面板的应用。首先在仪表盘中添加一个空面板,然后进入编辑器,在右上方选择 Table(表格)面板:

展示节点信息,我们可通过 node_unaMe_info 指标来获取,在查询区域添加如下查询语句:

接着再增加一个查询,用以获取节点运行时间等信息。可采用 node_boot_tiMe_seconds 指标进行计算,查询语句为 suM(tiMe() – node_boot_tiMe_seconds{job=”node-expoRteR”})by(instance):

对于节点的其他资源统计,如总内存、CPU 核数、5 分钟负载、连接数、下载/上传带宽等,我们分别添加以下查询:
总内存:node_MeMoRy_MeMTOTAl_bytes{job=”node-expoRteR”} CPU 核数:count(node_CPu_seconds_tOTAl{job=”node-expoRteR”, Mode=””sYsteM””}) by (instance) 5 分钟负载:node_load5{job=”node-expoRteR”} 连接数:node_netstat_TCP_CuRREstab{job=”node-expoRteR”} 下载带宽:Max(Rate(node_netwoRk_Receive_bytes_tOTAl{job=”node-expoRteR”[$inteRval])*8) by (instance) 上传带宽:Max(Rate(node_netwoRk_tRanSMIT_bytes_tOTAl{job=”node-expoRteR”[$inteRval])*8) by (instance)
如需展示更多数据,可以继续添加新的查询:

表格合并展示
当前把所有查询结果以表格呈现,存在逐个查询切换显示的不便。为实现更友好的展示,我们需要将内容合并到一个表格中,这时可使用 Grafana 的 Transform 功能,在 Transform 选项卡中选择 Merge(合并)选项:

Merge 转换器能够把多个序列或表格合并为一个表格,合并后的结果会把相同列放在同一行,便于在表格中呈现多个序列或表格的组合。选中 Merge 转换器后,上方的多个查询结果将被整合成一个表格。

不过合并后的表格中仍存在部分字段标签的缺失问题。这是因为部分查询返回中包含了 _name_ 标签,合并时会导致数据丢失。因此需要在每条查询后追加 – 0 来去掉该标签,例如将 node_unaMe_info{job=”node-expoRteR”} – 0 以及其他查询均作同样处理。

数据虽正确,但表头的含义可能不清晰,且有些列并非必须。此时仍需借助 Transform 转换器,使用 Organize fields 转换器来重新排序、隐藏或重命名字段或列。

通过该转换器,我们可以隐藏不需要的列并对表头进行重命名。
属性覆盖与单位标注
将查询结果以表格展示后,我们还需要对数值进行单位转换与格式化。例如运行时间列可设置为 seconds (s) 单位,系统会自动按照数值进行单位转换:

对总内存列也可添加 bytes(IEC) 等单位进行覆盖显示:

在定制列显示时,还可以设置单元格的显示样式,例如通过 Cell Display Mode 将单元格以文本、背景、仪表等方式呈现,甚至使用 LCD gauge 等显示模式来美化展示:

以下示例将 CPU 使用率与内存使用率设置为 LCD gauge 的显示模式,效果如下:

添加显示行与变量
为了显示监控的主机总数,我们可以定义一个 Total 参数,但该参数在前端不展示时需要设置为隐藏,采用 Variable 的隐藏方式即可:

再单独定义一个显示主机名的变量,这里使用 node_unaMe_info{instance=~”$host”},注意该查询与前面定义的 $host 变量相关联:

随后添加两个空的 Row(行)以便分段展示:

将面板放置到不同的行中,并为每一行定义显示标题,标题中可以使用前面定义的变量:

最终效果演示
到此为止,整个节点监控的可视化效果将如图所示展现:

