在使用zabbix監控Linux主機的時候,我們希望zabbix能夠自動發現Linux主機上有多少塊硬盤,而不是我們手動去添加。
實驗目的:
讓zabbix能夠自動發現Linux服務器的磁盤,並能夠監控磁盤IO且繪出圖形
實驗設備:
zabbix-server: 172.17.5.230
zabbix-client: 172.17.5.219
實驗環境:
linux centos 6.6
zabbix-2.4.6
實驗步驟
1. 在zabbix客戶端的安裝目錄,如/usr/local/zabbix/bin/目錄下添加名爲diskiocheck.sh的腳本
2. 進入/usr/local/zabbix/bin/目錄
3. 創建新文件touch diskiocheck.sh
4. 編寫vim diskiocheck.sh
#!/bin/sh #disk_io monitor disk=$2 function disk_count { diskarray=(`cat /proc/diskstats | grep -E "\bsd[a-z]\b| \ \bxvd[a-z]\b|cciss/c[0-9]d[0-9]\b" | grep -i "\b$1\b" \ |awk '{print $3}' | sort|uniq 2>/dev/null`) length=${#diskarray[@]} printf "{\n" printf '\t'"\"data\":[" for ((i=0;i<$length;i++));do printf '\n\t\t{' printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}" if [ $i -lt $[$length-1] ];then printf ',' fi done printf "\n\t]\n" printf "}\n" } function qps { qps=$(iostat $disk -x 1 2 | grep -E "^sd|^cciss" | awk '{if(NR==2)print $NF}') echo $qps } $1
爲了zabbix能夠讀取執行結果,需要把它輸出爲json格式。如下所示執行腳本里函數disk_count
sh /usr/local/zabbix/bin/disk_io_check.sh disk_count
輸出如下:
{ "data":[ {"{#DISK_NAME}":"sda"}, {"{#DISK_NAME}":"sdb"}, {"{#DISK_NAME}":"sdc"}, {"{#DISK_NAME}":"sdd"} ] }
腳本執行驗證通過,我們還需要修改zabbix-client端,修改zabbix_agentd.conf配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf
添加(沒有註銷的是新增的,把註銷的也寫出來主要是爲了方便查看在什麼位置添加)如下所示
# Include=/usr/local/etc/zabbix_agentd.userparams.conf # Include=/usr/local/etc/zabbix_agentd.conf.d/ # Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
然後在/usr/local/zabbix/etc/zabbix_agentd.conf.d/目錄底下創建文件,名字可以隨便起個,在這裏文件名爲:zabbixd.conf 編輯文件
cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/ vim zabbixd.conf
在文件中添加zabbix監控項目的key值,文件內容如下
UserParameter=iostat.count[*],/usr/local/zabbix/bin/disk_io_check.sh disk_count $1 UserParameter=iostat.util[*],/usr/local/zabbix/bin/disk_io_check.sh qps $1
添加完畢後重啓 zabbix_agentd
/etc/init.d/zabbix_agentd
到此在服務器端配置完成,接下來需要打開zabbix服務器端web頁面進行配置在瀏覽器中打開點configuration--->templates----->create tempalte如果有現有的模版也可以直接編輯現有的模版,這裏我們直接編輯一個現有的模版如下圖所示:
然後再點擊右上角的create item prototype
這個key值寫iostat.count,填寫完這個後保存,然後點擊item prototypes 如下圖所示
然後再點擊右上角的create item prototype