在使用zabbix監控Linux主機的時候,咱們但願zabbix可以自動發現Linux主機上有多少塊硬盤,而不是咱們手動去添加。linux
實驗目的:ios
讓zabbix可以自動發現Linux服務器的磁盤,並可以監控磁盤IO且繪出圖形web
實驗設備:json
zabbix-server: 172.17.5.230vim
zabbix-client: 172.17.5.219centos
實驗環境:瀏覽器
linux centos 6.6bash
zabbix-2.4.6服務器
實驗步驟ide
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