基於Docker進行部署。
相關資料
部署代碼
部署步驟
準備工作
下載部署代碼
git clone --recursive https://github.com/liqiang311/zabbix-grafana.git
下載docker鏡像
如何安裝Docker和Docker-Compose見Docker和Docker-Compose安裝
docker pull mysql:5.7
docker pull zabbix/zabbix-server-mysql:latest
docker pull zabbix/zabbix-web-nginx-mysql:latest
docker pull grafana/grafana:latest
啓動命令
cd zabbix-grafana
sudo chmod 777 grafana/grafana.db
docker-compose up -d
配置
Zabbix
登錄ip:10052
,帳號爲Admin
,密碼爲zabbix
進入後右上角可以更改語言爲中文
Grafana
webip:3000
默認帳號admin
/admin
Plugins
->app
->Zabbix
->點擊Enable
添加Data Source
點擊左上角Grafana圖標,選擇Data Sources
->Add data Source
填寫以下內容,此數據源爲Zabbix的數據庫,在第二個數據源中會用到。
注:爲提及的選項均表示不選擇。
Name: Zabbix
Type: MySQL
MySQL Connection Host: localhost:10053
Database: zabbix
User: root
Password: mysql57
然後點擊下方 Save & Test
。若成功連接,則按鈕上方會顯示綠色信息:
Success
Database Connection OK
繼續添加數據源。內容如下:
Name: zabbix
Type: Zabbix
url: http://localhost:10052/api_jsonrpc.php
Access: proxy
Basic Auth: √
Basic Auth Details User: admin
Basic Auth Details Password: zabbix
Zabbix API details Username: admin
Zabbix API details Password: zabbix
Direct DB Connection Enable: √
Direct DB Connection SQL Data Source: Zabbix
Alerting Enable alerting: √
Alerting Add thresholds: √
然後點擊下方 Save & Test
。若成功連接,則按鈕上方會顯示綠色信息:
Success
Zabbix API version: 3.2.5
客戶端安裝
若要監控磁盤使用率、CPU等,需在主機上安裝如下軟件
apt-get install zabbix-agent
然後編輯如下配置文件
vim /etc/zabbix/zabbix_agentd.conf
將其中的85行的Server改爲上文Zabbix配置的IP,如127.0.0.1
將其中的126行的ServerActive配置爲上文Zabbix的server IP,如127.0.0.1:10051
保存文件退出。
重啓zabbix-agent
service zabbix-agent restart
自定義監控選項
參考link
在/etc/zabbix/zabbix_agentd.conf
中底部添加如下代碼:
UserParameter=cpu0.temp, sensors coretemp-isa-0000|grep Physical|awk '{print $4}'|cut -d "." -f1
UserParameter=cpu1.temp, sensors coretemp-isa-0001|grep Physical|awk '{print $4}'|cut -d "." -f1
UserParameter=gpu0.temp, nvidia-smi -q -g 0 2>&1|grep -i "gpu current temp"|awk '{print $5}'| sed s/\%//g
UserParameter=gpu1.temp, nvidia-smi -q -g 1 2>&1|grep -i "gpu current temp"|awk '{print $5}'| sed s/\%//g
UserParameter=gpu2.temp, nvidia-smi -q -g 2 2>&1|grep -i "gpu current temp"|awk '{print $5}'| sed s/\%//g
UserParameter=gpu3.temp, nvidia-smi -q -g 3 2>&1|grep -i "gpu current temp"|awk '{print $5}'| sed s/\%//g
UserParameter=gpu4.temp, nvidia-smi -q -g 4 2>&1|grep -i "gpu current temp"|awk '{print $5}'| sed s/\%//g
UserParameter=gpu5.temp, nvidia-smi -q -g 5 2>&1|grep -i "gpu current temp"|awk '{print $5}'| sed s/\%//g
UserParameter=gpu6.temp, nvidia-smi -q -g 6 2>&1|grep -i "gpu current temp"|awk '{print $5}'| sed s/\%//g
UserParameter=gpu7.temp, nvidia-smi -q -g 7 2>&1|grep -i "gpu current temp"|awk '{print $5}'| sed s/\%//g
重啓zabbix-agent service zabbix-agent restart
在zabbix web中添加監控項, 其中鍵值
填寫gpu0.temp
。
Zabbix中添加模版
使用場景:公司來了一大批GPU服務器,需要對這麼服務器進行監控每個GPU卡的溫度和CPU核的溫度,以及這些服務器的磁盤使用率。
痛點:監控項太多,手動添加不易維護。
添加模版步驟如下:
在Zabbix Web界面,點擊配置
->模版
->創建模版
,填寫信息如下:
模版名稱:gpus
可見的名稱:gpus
新的羣組:gpus
點擊添加
。
然後點擊該模版的監控項
,點擊右上角的創建監控項
。
內容如下:
名稱:cpu0.temp
類型:Zabbix 客戶端
鍵值:cpu0.temp
信息類型:數字(無正負)
數據類型:十進制數字
其他默認,點擊添加
。
然後你需要利用這個監控項,來克隆出cpu0.temp
,gpu0.temp
,gpu1.temp
,gpu2.temp
,gpu3.temp
,gpu4.temp
,gpu5.temp
,gpu6.temp
,gpu7.temp
,路漫漫,加油!
還需要監控磁盤使用情況。
繼續添加
名稱:fs.size
類型:Zabbix 客戶端
鍵值:vfs.fs.size[/,pused]
信息類型:浮點數
其他默認,點擊添加
。
最後效果如圖:
繼續添加主機。點擊 Zabbix Web中的配置
->主機
->右上角創建主機
。
填寫如下:
主機名稱:10.42.10.1
可見的名稱:gpu1
agent代理程序的接口 IP地址 10.42.10.1
點擊上方主機旁邊的模版
,然後點擊選擇
,選擇剛剛創建的模板,然後選擇後,點擊添加
按鈕(帶下劃線的)。見下圖
最後點擊添加
按鈕,創建主機成功,可以發現這些主機中已經包含了很多監控項。
依次類推,通過剛剛這個主機,克隆出所有的主機。
注意:我們創建的模版中,選擇監控了8個gpu卡,但是有的服務器中只有4塊或者1塊,需要在主機中將這些監控項進行禁用。如下:
Gafana中使用Templating
上面我們在Zabbix中添加了對許多卡的監控,現在利用Grafana的模版進行監控。
在Grafana中打開Dashboards
,然後選擇你創建的Dashboards,比如GPUs
,然後進入該Dashboards首頁,點擊設置
中的Templating
選擇Variables
界面的New
,填寫內容如下:
Name: 自定義變量名,比如Host
Type: Query
Data source: zabbix
Refresh: On Dashboard Load
Query: Groups.*
Multi-value: ✔
Include All option: ✔
Query說明:格式爲Groups.Host.Application.Items,若要創建Group級變量,則填*,若要全部的Host,則填寫
*.*
,全部Items則寫*.*.*.*
,上文填寫爲獲取指定Group下的Host
若填寫正確,則Add
按鈕上方會出現所有的匹配項(Preview of values(shows max 20))(前20個)。
點擊Add
。
以此方式再添加Items變量。Query中填寫Group.*.*.*
。
添加後如圖。
接下來是如何使用。
選擇新建一個Graph
Panel,編輯這個Panel,填寫方式如下:
Query Mode: Metrics
Group: Group
Host: $Host
Item: $Items
Data Source: zabbix
若不想全部Items顯示到一個Graph中,則需要修改Graph Panel的General
選項中的Templating
,選擇Repeat Panel
,選擇要Repeat的方式,Min span
指的是分開多個後每個panel的最小寬度。最終效果圖如下:
定期備份
Zabbix
使用如下命令將Zabbix的數據庫進行備份,備份爲sql文件,自行保存到其他服務器。然後添加到Crontab中。
docker exec zabbix-mysql mysqldump -uroot -pmysql57 zabbix > init.sql
scp init.sql 10.40.64.206:/root
恢復
docker cp init.sql zabbix-mysql:/tmp/
docker exec zabbix-mysql mysql -uroot -pmysql57 zabbix -e "source /tmp/init.sql"
Grafana
備份
docker cp grafana:/var/lib/grafana/grafana.db ./
scp grafana.db 10.40.64.206:/root
恢復
docker cp grafana.db grafana:/var/lib/grafana/grafana.db
docker restart grafana