Grafana 使用表格面板進(jìn)行數(shù)據(jù)可視化
前面我們了解了如何使用基于時(shí)序數(shù)據(jù)的面板,接下來我們了解另外一個(gè)表格面板,表格面板可視化非常靈活,支持時(shí)間序列和表格和原始 JSON 數(shù)據(jù)的多種模式,此面板還提供日期格式、值格式和著色選項(xiàng)。

添加表格面板
接下來我們以統(tǒng)計(jì)服務(wù)器資源為例,對表格面板的使用進(jìn)行說明。在 Dashboard 中添加添加一個(gè)空的 Panel 面板,進(jìn)入面板編輯器后在右側(cè)上方選擇 Table 面板:

首先我們需要展示節(jié)點(diǎn)信息,我們可以使用 node_uname_info 指標(biāo)來獲取,在查詢區(qū)域添加如下所示查詢語句:

然后再添加一個(gè)查詢來獲取節(jié)點(diǎn)運(yùn)行時(shí)間的相關(guān)信息,可以使用 node_boot_time_seconds 指標(biāo)來進(jìn)行計(jì)算,查詢語句為 sum(time() - node_boot_time_seconds{job="node-exporter"})by(instance):

然后我們對于節(jié)點(diǎn)其他資源統(tǒng)計(jì)也非常關(guān)心,比如節(jié)點(diǎn)總內(nèi)存、總 CPU 數(shù)、負(fù)載、帶寬等等信息,接下來分別添加如下查詢:
總內(nèi)存: node_memory_MemTotal_bytes{job="node-exporter"}CPU 核數(shù): count(node_cpu_seconds_total{job="node-exporter", mode='system'}) by (instance)5 分鐘負(fù)載: node_load5{job="node-exporter"}連接數(shù): 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)
如還有其他需要展示的也可以直接添加新的查詢即可:

表格轉(zhuǎn)換
現(xiàn)在我們將所有需要展示的信息都通過 Table 形式展示出來了,但是現(xiàn)在有一個(gè)很大的問題,就是需要對每一個(gè)查詢切換顯示:

這顯然是非常不友好的顯示方式,我們需要將這些表格內(nèi)容合并成一個(gè)表格進(jìn)行展示,這個(gè)時(shí)候就需要用到 Grafana 的 Transform 轉(zhuǎn)換功能了,在 Transform 選項(xiàng)卡中選擇 Merge 選項(xiàng):

Merge 轉(zhuǎn)換器可以合并多個(gè)序列或者多個(gè)表格為一個(gè)表格,其中可合并的值將合并到同一行中,用于顯示在表格中可視化的多個(gè)序列、表格或兩者的組合。當(dāng)我們選擇了 Merge 轉(zhuǎn)換器過后就會將上面的多個(gè)查詢結(jié)果合并成一個(gè)表格。

但其實(shí)合并后的表格數(shù)據(jù)有一些地方?jīng)]有顯示,這是因?yàn)槲覀儾樵兊慕Y(jié)果實(shí)際上是包含 __name__ 這個(gè)標(biāo)簽的,在合并的時(shí)候會造成數(shù)據(jù)丟失,我們可以將所有的查詢語句后面添加上一個(gè) - 0 來去掉這個(gè)標(biāo)簽,這樣合并的時(shí)候就不會丟失數(shù)據(jù)了。比如查詢主機(jī)信息的語句變成 node_uname_info{job="node-exporter"} - 0,其他的語句也都加上 - 0 這個(gè)操作。

數(shù)據(jù)雖然正確了,但是表頭卻看不出來是表達(dá)的什么意義,有的列還是不需要的,這個(gè)時(shí)候同樣也要用到 Transform 轉(zhuǎn)換器了,這里我們需要用到的是 Organize fields 轉(zhuǎn)換器,該轉(zhuǎn)換器允許用戶重新排序、隱藏或重命名字段或者列。

這里我們將不需要的一些列隱藏掉了,將表頭進(jìn)行了重命名。
屬性覆蓋
上面我們將查詢的數(shù)據(jù)結(jié)果用一個(gè)表格展示出來了,但是現(xiàn)在我們的數(shù)據(jù)都是直接的一個(gè)結(jié)果,我們需要進(jìn)行轉(zhuǎn)換加上我們的單位。
比如對于運(yùn)行時(shí)間這一列,我們需要添加覆蓋,設(shè)置一個(gè) seconds (s) 類型的單位,然后會根據(jù)我們的結(jié)果進(jìn)行自動(dòng)轉(zhuǎn)換:

同樣對總內(nèi)存這一列的數(shù)據(jù)結(jié)果進(jìn)行覆蓋添加 bytes(IEC) 類型的單位:

此外在定制某列數(shù)據(jù)的顯示效果的時(shí)候我們還可以為其配置背景顏色,只需要設(shè)置 Cell display mode 表格模式,該屬性可以配置文本顏色、背景、按照 gauge 進(jìn)行顯示等方式:

比如我們可以為 CPU使用率 與 內(nèi)存使用率 配置顯示模式為 LCD gauge,顯示效果如下所示:

添加顯示行
我們還可以定義一個(gè) total 參數(shù)來表示監(jiān)控的主機(jī)總數(shù),不過需要注意的是這里的參數(shù)我們不需要展示,需要選擇隱藏方式為 Variable:

再單獨(dú)定義一個(gè)顯示主機(jī)名的變量,這里我們使用的查詢語句為 node_uname_info{instance=~"$host"},需要注意的是這里關(guān)聯(lián)的是前面定義的 $host 這個(gè)變量:

然后我們可以添加兩個(gè)空的 Row 行:

把我們的面板放到不同的行中去,并為每一行定義顯示標(biāo)題,標(biāo)題里面就可以使用前面定義的變量:

到這里我們的節(jié)點(diǎn)監(jiān)控的完整效果如下所示:

