zabbix監控linux磁盤IO性能

近期數據主機的磁盤IO經常峯值,影響業務的穩定運行。得到一個需求,要求通過zabbix監控agent主機的IO狀態,要知道zabbix默認是沒有監控zabbix模板的,那麼此時需要我們定義腳本獲取agent的IO性能,並在zabbix的web端定義模板來實現對數據庫主機監控

下面就來介紹如何通過zabbix對agent主機的IO性能進行監控:

【Agent段配置詳解】

# egrep -v "#|^$" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.15.200.72
Include=/etc/zabbix/zabbix_agentd.d/*.conf

# cat /etc/zabbix/zabbix_agentd.d/scripts/disk_discovery.sh   #編寫自動發現磁盤腳本

#!/bin/bash
diskarray=(`cat /proc/diskstats |grep -E "\bsd[a-z]\b|\bxvd[a-z]\b|\bvd[a-z]\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"

# cat /etc/zabbix/zabbix_agentd.d/scripts/disk_status.sh   #獲取磁盤IO數據

#/bin/sh
Device=$1
DISK=$2
case $DISK in
         rrqm)
            iostat -dxkt 1 2|grep "\b$Device\b"|tail -1|awk '{print $2}'
            ;;
         wrqm)
            iostat -dxkt 1 2|grep "\b$Device\b"|tail -1|awk '{print $3}'
            ;;
          rps)
            iostat -dxkt 1 2|grep "\b$Device\b"|tail -1|awk '{print $4}'
            ;;
          wps)
            iostat -dxkt 1 2|grep "\b$Device\b" |tail -1|awk '{print $5}'
            ;;
        rKBps)
            iostat -dxkt 1 2|grep "\b$Device\b" |tail -1|awk '{print $6}'
            ;;
        wKBps)
            iostat -dxkt 1 2|grep "\b$Device\b" |tail -1|awk '{print $7}'
            ;;
        avgrq-sz)
            iostat -dxkt 1 2|grep "\b$Device\b" |tail -1|awk '{print $8}'
            ;;
        avgqu-sz)
            iostat -dxkt 1 2|grep "\b$Device\b" |tail -1|awk '{print $9}'
            ;;
        await)
            iostat -dxkt 1 2|grep "\b$Device\b" |tail -1|awk '{print $10}'
            ;;
        svctm)
            iostat -dxkt 1 2|grep "\b$Device\b" |tail -1|awk '{print $11}'
            ;;
         util)
            iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $12}'
            ;;
esac

參數詳解:

rrqm/s:   每秒進行 merge 的讀操作數目。即 delta(rmerge)/s
wrqm/s:  每秒進行 merge 的寫操作數目。即 delta(wmerge)/s
rps:           每秒完成的讀 I/O 設備次數。即 delta(rio)/s
wps:         每秒完成的寫 I/O 設備次數。即 delta(wio)/s
rsec/s:    每秒讀扇區數。即 delta(rsect)/s
wsec/s:  每秒寫扇區數。即 delta(wsect)/s
rkBps:      每秒讀K字節數。是 rsect/s 的一半,因爲每扇區大小爲512字節。(需要計算)
wkBps:    每秒寫K字節數。是 wsect/s 的一半。(需要計算)
avgrq-sz: 平均每次設備I/O操作的數據大小 (扇區)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O隊列長度。即 delta(aveq)/s/1000 (因爲aveq的單位爲毫秒)。
await:    平均每次設備I/O操作的等待時間 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm:   平均每次設備I/O操作的服務時間 (毫秒)。即 delta(use)/delta(rio+wio)
%util:      一秒中有百分之多少的時間用於 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的。即 delta(use)/s/1000 (因爲use的單位爲毫秒)

# cat /etc/zabbix/zabbix_agentd.d/disk_status.conf #將兩個腳本授予執行權限,單獨寫在一個個配置文件中,

UserParameter=disk.discovery[*],/etc/zabbix/zabbix_agentd.d/scripts/disk_discovery.sh
UserParameter=disk.status[*],/etc/zabbix/zabbix_agentd.d/scripts/disk_status.sh $1 $2

【Zabbix-web端配置】

1、新建模板,命名爲DISK-IO,加入到Templates模板組。

 2、新建一個自動發現規則

 3、建立多個監控項原型

 

 4、建立觸發器類型

 5、建立圖形原型

 

 

 

 

最後將定義的模板鏈接到某個監控主機,從圖形中即可發現磁盤IO數據變化

 

 

  END!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章