使用 Grafana 創建可視化面板

Grafana 是一個監控儀表系統,它是由 Grafana Labs 公司開源的的一個系統監測工具,它可以大大幫助我們簡化監控的複雜度,我們只需要提供需要監控的數據,它就可以幫助生成各種可視化儀表,同時它還有報警功能,可以在系統出現問題時發出通知。

Grafana 支持許多不同的數據源,每個數據源都有一個特定的查詢編輯器,每個數據源的查詢語言和能力都是不同的,我們可以把來自多個數據源的數據組合到一個儀表板,但每一個面板被綁定到一個特定的數據源。目前官方支持以下數據源:

我們這裏當然重點需要介紹的就是 Prometheus 這個數據源了。

安裝

接下來我們就來安裝 Grafana,Grafana 本身是非常輕量級的,不會佔用大量資源,此外 Grafana 需要一個數據庫來存儲其配置數據,比如用戶、數據源和儀表盤等,目前 Grafana 支持 SQLite、MySQL、PostgreSQL 3 種數據庫,默認使用的是 SQLite,該數據庫文件會存儲在 Grafana 的安裝位置,所以需要對 Grafana 的安裝目錄進行持久化。

要安裝 Grafana 的方式有很多,我們這裏使用的是 CentOS 系統,可以在 Grafana 官方下載頁面篩選合適的版本 https://grafana.com/grafana/download?edition=oss&platform=linux 根據自己的需求來進行安裝,比如我們這裏直接使用 rpm 包進行安裝:

☸ ➜ 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

默認的啓動配置環境變量位於 /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 的各種數據配置路徑,比如數據目錄、日誌目錄、插件目錄等等,正常啓動完成後 Grafana 會監聽在 3000 端口上,所以我們可以在瀏覽器中打開 Grafana 的 WebUI。

默認的用戶名和密碼爲 admin,也可以在配置文件 /etc/grafana/grafana.ini 中配置 admin_useradmin_password 兩個參數來進行覆蓋。

當然如果我們想要部署一個高可用版本的 Grafana 的話,那麼使用 SQLite 數據庫就不行了,需要切換到 MySQL 或者 PostgreSQL,我們可以在 Grafana 配置的 [database] 部分找到數據庫的相關配置,Grafana 會將所有長期數據保存在數據庫中,然後部署多個 Grafana 實例使用同一個數據庫即可實現高可用。

創建面板

面板(Panel)是 Grafana 中基本可視化構建塊,每個面板都有一個特定於面板中選擇數據源的查詢編輯器,每個面板都有各種各樣的樣式和格式選項,面板可以在儀表板上拖放和重新排列,它們也可以調整大小,所以要在 Grafana 上創建可視化的圖表,面板是我們必須要掌握的知識點。

數據源

在創建面板之前我們需要指定我們的面板數據來源,也就是數據源,Grafana 支持多種數據源,我們這裏當然使用 Prometheus 作爲數據源來進行說明。在 Grafana 左側工具欄選擇 Configuration,點擊到下面的 Data sources,打開添加數據源的頁面:

點擊頁面中的 Add data source 按鈕開始添加數據源:

選擇第一項 Prometheus 數據源進行配置:

在 HTTP 項中配置 URL 地址爲 http://localhost:9090,其實就是 Prometheus 的地址,由於我們這裏 Grafana 和 Prometheus 都在同一個節點上,所以用 localhost 即可訪問,當然用 IP 也可以,Access 選擇默認的 Server 代理方式,這樣就相當於 Grafana 程序去訪問 Prometheus 而不是在瀏覽器端去訪問,如果 Prometheus 配置有認證,則還需要在下發配置 Auth 信息,配置完成後,拉到最下方點擊 Save & test,提示添加成功即表面數據源添加成功了。然後在數據源列表中就會出現我們剛剛添加的 Prometheus 這個數據源了:

如果想要添加其他支持的數據源則也可用同樣的方式進行添加。

添加面板

面板是屬於某一個 Dashboard 的,所以我們需要先創建一個 Dashboard,在側邊欄點擊 + 切換到 Dashboard 下面開始創建 Dashboard:

在默認創建的新的 Dashboard 中就有一個空的面板,點擊 Add an empty panel 即可開始添加面板:

進入面板編輯器後即可添加面板了,中間位置是查詢語句的顯示結果,下方是用於配置查詢語句的地方,左側可以選擇面板顯示的類型,面板元信息,比如標題、描述信息等。

比如我們現在就要來查詢節點的 CPU 使用率,前面在 node_exporter 章節中已經學習了該監控數據的查詢語句爲 (1 - sum(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) / sum(rate(node_cpu_seconds_total[5m])) by (instance) ) * 100,只需要將該語句填充到查詢的 PromQL 語句中即可在上面顯示出監控的結果:

點擊右上角的 Apply 按鈕即可創建成功一個 Panel 面板。

用同樣的方式我們可以創建一個用於查詢節點內存使用率的面板:

創建完成後的面板我們也可以拖動他們的排列位置:

如果還想重新編輯面板,可以點擊標題,在彈出來的下拉框中選擇 Edit 編輯即可:

添加參數

現在我們在一個 Dashboard 中添加了兩個 Panel,我們可以很明顯看到會直接將所有的節點信息展示在同一個面板中,但是如果有非常多的節點的話數據量就非常大了,這種情況下我們最好的方式是將節點當成參數,可以讓用戶自己去選擇要查看哪一個節點的監控信息,要實現這個功能,我們就需要去添加一個以節點爲參數的變量來去查詢監控數據。

點擊 Dashboard 頁面右上方的 Dashboard settings 按鈕,進入配置頁面:

在該 Settings 頁面可以來對整個 Dashboard 進行配置,比如名稱、標籤、變量等:

這裏我們點擊左邊的 Variables 添加一個變量,變量支持更具交互性和動態性的儀表板,我們可以在它們的位置使用變量,而不是在指標查詢中硬編碼,變量顯示爲 Dashboard 頂部的下拉列表,這些下拉列表可以輕鬆更改儀表板中顯示的數據。

爲了能夠選擇節點數據,這裏我們定義了一個名爲 instance 的變量名,但是定義的這個變量值從哪個地方獲取呢?

監控節點的相關指標是來源於名爲 node-exporter 的任務,我們可以通過查詢 up 來獲取所有的監控實例:

要想獲取到 instance 標籤中的值,我們這裏可以使用一個正則表達式 .*instance="(.*?)".* 來獲取實例數據,這樣就成功定義了一個變量,回到 Dashboard 頁面就可以看到多了一個選擇節點的下拉框:

但是這個時候的面板並不會隨着我們下拉框的選擇而變化,我們需要將 instance 這個變量傳入查詢語句中,比如重新修改CPU使用率的查詢語句:

用同樣的方式給內存使用率添加根據節點過濾的參數:

回到 Dashboard 頁面就可以根據我們的下拉框來選擇需要監控的節點數據了,定義參數的時候如果選擇了可以選擇所有,同樣可以查看所有節點的數據:

面板還有很多配置細節,請關注後續內容......

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Pwlg8C_pPU-TayWbZz8A-A