1. 程式人生 > >zabbix4.0 自動發現監控磁碟IO

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