zabbix4.0 自動發現監控磁碟IO
操作環境
Centos 7.2
zabbix 4.0
操作步驟
1.在zabbix agent獲取硬碟資訊,可通過下述指令碼獲取資訊disk_scan.sh
#!/bin/bash diskarray=(`cat /proc/diskstats |grep -E "\bsd[abcdefg]\b|\bvd[abcdefg]\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 "\"{#DISKNAME}\":\"${diskarray[$i]}\"}" if [ $i -lt $[$length-1] ];then printf ',' fi done printf "\n\t]\n" printf "}\n"
在zabbix agent端通過zabbix使用者執行該指令碼結果如下:
[[email protected] ~]# su -s /bin/bash zabbix
bash-4.2$ /etc/zabbix/zabbix_agentd.d/disk_scan.sh
{
"data":[
{"{#DISKNAME}":"sda"}
]
}
2.在zabbix agent通過iostat獲取硬碟效能資訊,並將該資訊寫入文字中
# nohup iostat -m -x -d 30 >> /tmp/iostat_output &
為了以後方便使用,可將該命令寫入到自動啟動中。
我們檢視下iostat的效能引數[
[email protected] ~]# iostat -mx -d 30 Linux 3.10.0-327.36.2.el7.x86_64 (ovirt-host-227) 11/30/2016 _x86_64_ (16 CPU) Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.17 1.80 6.99 0.06 0.06 27.62 0.06 7.12 5.38 7.57 4.39 3.85 dm-0 0.00 0.00 0.01 0.00 0.00 0.00 16.30 0.00 24.89 24.89 0.00 24.13 0.01 dm-1 0.00 0.00 0.20 0.14 0.01 0.00 90.54 0.01 17.26 23.12 9.06 5.32 0.18 dm-2 0.00 0.00 1.57 6.32 0.04 0.06 26.50 0.08 10.11 2.90 11.90 4.68 3.69
3.在瞭解硬碟的基本資訊以及效能資訊後,我們來設定zabbix-agent,新增下述內容至zabbix agent配置檔案中
UserParameter=io.scandisk[*],/etc/zabbix/zabbix_agentd.d/disk_scan.sh $1
UserParameter=io.rps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b"|tail -1|awk '{print $$4}'
UserParameter=io.wps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$5}'
UserParameter=io.rMBps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$6}'
UserParameter=io.wMBps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$7}'
UserParameter=io.avgrq-sz[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$8}'
UserParameter=io.avgqu-sz[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$9}'
UserParameter=io.await[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$10}'
UserParameter=io.r_await[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$11}'
UserParameter=io.w_await[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$12}'
UserParameter=io.svctm[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$13}'
UserParameter=io.util[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$14}'
重啟 zabbix-agent
[[email protected] ~]# systemctl restart zabbix-agent
bash-4.2$ zabbix_get -s 10.10.200.227 -p 10050 -k io.scandisk
{
"data":[
{"{#DISKNAME}":"sda"}
]
}
bash-4.2$ zabbix_get -s 10.10.200.227 -p 10050 -k io.util[sda]
4.05
bash-4.2$ zabbix_get -s 10.10.200.227 -p 10050 -k io.rps[sda]
0.00
bash-4.2$ zabbix_get -s 10.10.200.227 -p 10050 -k io.wps[sda]
6.77
通過以上zabbix_get的測試,可以確定zabbix-agent與zabbix-server之前獲取數值沒有問題,下面我們在zabbix web console來建立Template
建立discovery rule,注意在key中填寫io.scandisk為zabbix-agent中設定的引數
建立item prototype,注意這裡是在discovery rule下面的item prototype
下面我們來建立item prototype,以io.util為例,注意“#DISKNAME”引數,為zabbix-agent的disk_scan.sh指令碼中的引數,io.util為zabbix-agent配置檔案中的引數,在這裡設定
資料型別為Numeric(float)
建立完成所有item prototype,如下圖所示
我們將該template新增至zabbix-agent 被監控機器中,在新增完成以後,我們檢視被監控機器的item列表中,可以檢視到自動發現的硬碟以及上面所建立的監控引數
我們建立graphs來顯示這些內容
顯示硬碟各種利用率(多塊磁碟可以同時新增進來)
建立完成後點選preview可以檢視該graph