使用 Grafana 創(chuàng)建可視化面板
Grafana 是一個(gè)監(jiān)控儀表系統(tǒng),它是由 Grafana Labs 公司開源的的一個(gè)系統(tǒng)監(jiān)測工具,它可以大大幫助我們簡化監(jiān)控的復(fù)雜度,我們只需要提供需要監(jiān)控的數(shù)據(jù),它就可以幫助生成各種可視化儀表,同時(shí)它還有報(bào)警功能,可以在系統(tǒng)出現(xiàn)問題時(shí)發(fā)出通知。
Grafana 支持許多不同的數(shù)據(jù)源,每個(gè)數(shù)據(jù)源都有一個(gè)特定的查詢編輯器,每個(gè)數(shù)據(jù)源的查詢語言和能力都是不同的,我們可以把來自多個(gè)數(shù)據(jù)源的數(shù)據(jù)組合到一個(gè)儀表板,但每一個(gè)面板被綁定到一個(gè)特定的數(shù)據(jù)源。目前官方支持以下數(shù)據(jù)源:
Alertmanager AWS CloudWatch Azure Monitor Elasticsearch Google Cloud Monitoring Graphite InfluxDB Loki Microsoft SQL Server (MSSQL) MySQL OpenTSDB PostgreSQL Prometheus Jaeger Zipkin Tempo
我們這里當(dāng)然重點(diǎn)需要介紹的就是 Prometheus 這個(gè)數(shù)據(jù)源了。
安裝
接下來我們就來安裝 Grafana,Grafana 本身是非常輕量級(jí)的,不會(huì)占用大量資源,此外 Grafana 需要一個(gè)數(shù)據(jù)庫來存儲(chǔ)其配置數(shù)據(jù),比如用戶、數(shù)據(jù)源和儀表盤等,目前 Grafana 支持 SQLite、MySQL、PostgreSQL 3 種數(shù)據(jù)庫,默認(rèn)使用的是 SQLite,該數(shù)據(jù)庫文件會(huì)存儲(chǔ)在 Grafana 的安裝位置,所以需要對(duì) Grafana 的安裝目錄進(jìn)行持久化。
要安裝 Grafana 的方式有很多,我們這里使用的是 CentOS 系統(tǒng),可以在 Grafana 官方下載頁面篩選合適的版本 https://grafana.com/grafana/download?edition=oss&platform=linux 根據(jù)自己的需求來進(jìn)行安裝,比如我們這里直接使用 rpm 包進(jìn)行安裝:
????wget?https://dl.grafana.com/oss/release/grafana-8.2.1-1.x86_64.rpm
????sudo?yum?install?grafana-8.2.1-1.x86_64.rpm
安裝完成后我們就可以使用 systemd 來管理 Grafana:
????sudo?systemctl?daemon-reload
????sudo?systemctl?enable?grafana-server
????sudo?systemctl?start?grafana-server
????sudo?systemctl?status?grafana-server
默認(rèn)的啟動(dòng)配置環(huán)境變量位于 /etc/sysconfig/grafana-server 文件中:
????cat?/etc/sysconfig/grafana-server
GRAFANA_USER=grafana
GRAFANA_GROUP=grafana
GRAFANA_HOME=/usr/share/grafana
LOG_DIR=/var/log/grafana
DATA_DIR=/var/lib/grafana
MAX_OPEN_FILES=10000
CONF_DIR=/etc/grafana
CONF_FILE=/etc/grafana/grafana.ini
RESTART_ON_UPGRADE=true
PLUGINS_DIR=/var/lib/grafana/plugins
PROVISIONING_CFG_DIR=/etc/grafana/provisioning
#?Only?used?on?systemd?systems
PID_FILE_DIR=/var/run/grafana
從上面文件中可以找到 Grafana 的各種數(shù)據(jù)配置路徑,比如數(shù)據(jù)目錄、日志目錄、插件目錄等等,正常啟動(dòng)完成后 Grafana 會(huì)監(jiān)聽在 3000 端口上,所以我們可以在瀏覽器中打開 Grafana 的 WebUI。

默認(rèn)的用戶名和密碼為 admin,也可以在配置文件 /etc/grafana/grafana.ini 中配置 admin_user 和 admin_password 兩個(gè)參數(shù)來進(jìn)行覆蓋。

當(dāng)然如果我們想要部署一個(gè)高可用版本的 Grafana 的話,那么使用 SQLite 數(shù)據(jù)庫就不行了,需要切換到 MySQL 或者 PostgreSQL,我們可以在 Grafana 配置的 [database] 部分找到數(shù)據(jù)庫的相關(guān)配置,Grafana 會(huì)將所有長期數(shù)據(jù)保存在數(shù)據(jù)庫中,然后部署多個(gè) Grafana 實(shí)例使用同一個(gè)數(shù)據(jù)庫即可實(shí)現(xiàn)高可用。

創(chuàng)建面板
面板(Panel)是 Grafana 中基本可視化構(gòu)建塊,每個(gè)面板都有一個(gè)特定于面板中選擇數(shù)據(jù)源的查詢編輯器,每個(gè)面板都有各種各樣的樣式和格式選項(xiàng),面板可以在儀表板上拖放和重新排列,它們也可以調(diào)整大小,所以要在 Grafana 上創(chuàng)建可視化的圖表,面板是我們必須要掌握的知識(shí)點(diǎn)。
數(shù)據(jù)源
在創(chuàng)建面板之前我們需要指定我們的面板數(shù)據(jù)來源,也就是數(shù)據(jù)源,Grafana 支持多種數(shù)據(jù)源,我們這里當(dāng)然使用 Prometheus 作為數(shù)據(jù)源來進(jìn)行說明。在 Grafana 左側(cè)工具欄選擇 Configuration,點(diǎn)擊到下面的 Data sources,打開添加數(shù)據(jù)源的頁面:

點(diǎn)擊頁面中的 Add data source 按鈕開始添加數(shù)據(jù)源:

選擇第一項(xiàng) Prometheus 數(shù)據(jù)源進(jìn)行配置:

在 HTTP 項(xiàng)中配置 URL 地址為 http://localhost:9090,其實(shí)就是 Prometheus 的地址,由于我們這里 Grafana 和 Prometheus 都在同一個(gè)節(jié)點(diǎn)上,所以用 localhost 即可訪問,當(dāng)然用 IP 也可以,Access 選擇默認(rèn)的 Server 代理方式,這樣就相當(dāng)于 Grafana 程序去訪問 Prometheus 而不是在瀏覽器端去訪問,如果 Prometheus 配置有認(rèn)證,則還需要在下發(fā)配置 Auth 信息,配置完成后,拉到最下方點(diǎn)擊 Save & test,提示添加成功即表面數(shù)據(jù)源添加成功了。然后在數(shù)據(jù)源列表中就會(huì)出現(xiàn)我們剛剛添加的 Prometheus 這個(gè)數(shù)據(jù)源了:

如果想要添加其他支持的數(shù)據(jù)源則也可用同樣的方式進(jìn)行添加。
添加面板
面板是屬于某一個(gè) Dashboard 的,所以我們需要先創(chuàng)建一個(gè) Dashboard,在側(cè)邊欄點(diǎn)擊 + 切換到 Dashboard 下面開始創(chuàng)建 Dashboard:

在默認(rèn)創(chuàng)建的新的 Dashboard 中就有一個(gè)空的面板,點(diǎn)擊 Add an empty panel 即可開始添加面板:

進(jìn)入面板編輯器后即可添加面板了,中間位置是查詢語句的顯示結(jié)果,下方是用于配置查詢語句的地方,左側(cè)可以選擇面板顯示的類型,面板元信息,比如標(biāo)題、描述信息等。

比如我們現(xiàn)在就要來查詢節(jié)點(diǎn)的 CPU 使用率,前面在 node_exporter 章節(jié)中已經(jīng)學(xué)習(xí)了該監(jiān)控?cái)?shù)據(jù)的查詢語句為 (1 - sum(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) / sum(rate(node_cpu_seconds_total[5m])) by (instance) ) * 100,只需要將該語句填充到查詢的 PromQL 語句中即可在上面顯示出監(jiān)控的結(jié)果:

點(diǎn)擊右上角的 Apply 按鈕即可創(chuàng)建成功一個(gè) Panel 面板。

用同樣的方式我們可以創(chuàng)建一個(gè)用于查詢節(jié)點(diǎn)內(nèi)存使用率的面板:

創(chuàng)建完成后的面板我們也可以拖動(dòng)他們的排列位置:

如果還想重新編輯面板,可以點(diǎn)擊標(biāo)題,在彈出來的下拉框中選擇 Edit 編輯即可:

添加參數(shù)
現(xiàn)在我們?cè)谝粋€(gè) Dashboard 中添加了兩個(gè) Panel,我們可以很明顯看到會(huì)直接將所有的節(jié)點(diǎn)信息展示在同一個(gè)面板中,但是如果有非常多的節(jié)點(diǎn)的話數(shù)據(jù)量就非常大了,這種情況下我們最好的方式是將節(jié)點(diǎn)當(dāng)成參數(shù),可以讓用戶自己去選擇要查看哪一個(gè)節(jié)點(diǎn)的監(jiān)控信息,要實(shí)現(xiàn)這個(gè)功能,我們就需要去添加一個(gè)以節(jié)點(diǎn)為參數(shù)的變量來去查詢監(jiān)控?cái)?shù)據(jù)。
點(diǎn)擊 Dashboard 頁面右上方的 Dashboard settings 按鈕,進(jìn)入配置頁面:

在該 Settings 頁面可以來對(duì)整個(gè) Dashboard 進(jìn)行配置,比如名稱、標(biāo)簽、變量等:

這里我們點(diǎn)擊左邊的 Variables 添加一個(gè)變量,變量支持更具交互性和動(dòng)態(tài)性的儀表板,我們可以在它們的位置使用變量,而不是在指標(biāo)查詢中硬編碼,變量顯示為 Dashboard 頂部的下拉列表,這些下拉列表可以輕松更改儀表板中顯示的數(shù)據(jù)。

為了能夠選擇節(jié)點(diǎn)數(shù)據(jù),這里我們定義了一個(gè)名為 instance 的變量名,但是定義的這個(gè)變量值從哪個(gè)地方獲取呢?

監(jiān)控節(jié)點(diǎn)的相關(guān)指標(biāo)是來源于名為 node-exporter 的任務(wù),我們可以通過查詢 up 來獲取所有的監(jiān)控實(shí)例:

要想獲取到 instance 標(biāo)簽中的值,我們這里可以使用一個(gè)正則表達(dá)式 .*instance="(.*?)".* 來獲取實(shí)例數(shù)據(jù),這樣就成功定義了一個(gè)變量,回到 Dashboard 頁面就可以看到多了一個(gè)選擇節(jié)點(diǎn)的下拉框:

但是這個(gè)時(shí)候的面板并不會(huì)隨著我們下拉框的選擇而變化,我們需要將 instance 這個(gè)變量傳入查詢語句中,比如重新修改CPU使用率的查詢語句:

用同樣的方式給內(nèi)存使用率添加根據(jù)節(jié)點(diǎn)過濾的參數(shù):

回到 Dashboard 頁面就可以根據(jù)我們的下拉框來選擇需要監(jiān)控的節(jié)點(diǎn)數(shù)據(jù)了,定義參數(shù)的時(shí)候如果選擇了可以選擇所有,同樣可以查看所有節(jié)點(diǎn)的數(shù)據(jù):

面板還有很多配置細(xì)節(jié),請(qǐng)關(guān)注后續(xù)內(nèi)容......
