使用 Grafana 創建可視化面板
Grafana 是一個監控儀表系統,它是由 Grafana Labs 公司開源的的一個系統監測工具,它可以大大幫助我們簡化監控的複雜度,我們只需要提供需要監控的數據,它就可以幫助生成各種可視化儀表,同時它還有報警功能,可以在系統出現問題時發出通知。
Grafana 支持許多不同的數據源,每個數據源都有一個特定的查詢編輯器,每個數據源的查詢語言和能力都是不同的,我們可以把來自多個數據源的數據組合到一個儀表板,但每一個面板被綁定到一個特定的數據源。目前官方支持以下數據源:
-
Alertmanager
-
AWS CloudWatch
-
Azure Monitor
-
Elasticsearch
-
Google Cloud Monitoring
-
Graphite
-
InfluxDB
-
Loki
-
Microsoft SQL Server (MSSQL)
-
MySQL
-
OpenTSDB
-
PostgreSQL
-
Prometheus
-
Jaeger
-
Zipkin
-
Tempo
我們這裏當然重點需要介紹的就是 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_user
和 admin_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