基於Docker的Zabbix+Grafana監控

基於Docker進行部署。

相關資料

部署代碼

部署代碼Github

部署步驟

準備工作

下載部署代碼

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]
信息類型:浮點數

其他默認,點擊添加

最後效果如圖:

img

繼續添加主機。點擊 Zabbix Web中的配置->主機->右上角創建主機

填寫如下:

主機名稱:10.42.10.1
可見的名稱:gpu1
agent代理程序的接口 IP地址 10.42.10.1

點擊上方主機旁邊的模版,然後點擊選擇,選擇剛剛創建的模板,然後選擇後,點擊添加按鈕(帶下劃線的)。見下圖

img

最後點擊添加按鈕,創建主機成功,可以發現這些主機中已經包含了很多監控項。

依次類推,通過剛剛這個主機,克隆出所有的主機。

注意:我們創建的模版中,選擇監控了8個gpu卡,但是有的服務器中只有4塊或者1塊,需要在主機中將這些監控項進行禁用。如下:

img

Gafana中使用Templating

上面我們在Zabbix中添加了對許多卡的監控,現在利用Grafana的模版進行監控。

在Grafana中打開Dashboards,然後選擇你創建的Dashboards,比如GPUs,然後進入該Dashboards首頁,點擊設置中的Templating

img

選擇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.*.*.*

添加後如圖。

img

接下來是如何使用。

選擇新建一個GraphPanel,編輯這個Panel,填寫方式如下:

Query Mode: Metrics
Group: Group
Host: $Host
Item: $Items
Data Source: zabbix

img

若不想全部Items顯示到一個Graph中,則需要修改Graph Panel的General選項中的Templating,選擇Repeat Panel,選擇要Repeat的方式,Min span指的是分開多個後每個panel的最小寬度。最終效果圖如下:

img

定期備份

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
發佈了45 篇原創文章 · 獲贊 61 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章