磁盘读写监控

磁盘自动发现

#!/bin/bash
if [ -z $1 ] # 如果位参1是空
then
diskarray=(`cat /proc/diskstats|awk '{print $3}'|grep -E '^[a-z]+$'|sort|uniq 2>/dev/null`)
length=${#diskarray[@]}
printf "{
"
printf  '	'""data":["
for ((i=0;i<$length;i++))
do
        printf '
		{'
        printf ""{#DISK}":"${diskarray[$i]}"}"
        if [ $i -lt $[$length-1] ];then
                printf ','
        fi
done
printf  "
	]
"
printf "}
"
else # 有位参进来进行磁盘io使用率的监测
iostat -dxk $1 1 3 | grep $1 | tail -n 1 | awk '{ print $NF }'
fi

返回磁盘io使用率v

#!/bin/bash
if [ -z $1 ]
then
    RTN='['
    DISK=`cat /proc/diskstats |grep -E "sd[a-z]|xvd[a-z]|vd[a-z]"|awk '{print $3}'|sort|uniq  2>/dev/null`
    for d in $DISK
    do
        RTN=`echo $RTN'{"{#DISK}":"'$d'"},'`
    done
    RTN=`echo ${RTN%*,}']'`
    echo '{"data":'$RTN'}'
else
Device=$1
DISK=$2
case $DISK in
    rrqm)
    	iostat -dxkt 1 2|grep "$Device"|tail -1|awk '{print $2}'
    	;;
    wrqm)
    	iostat -dxkt 1 2|grep "$Device"|tail -1|awk '{print $3}'
    	;;
    rps)
    	iostat -dxkt 1 2|grep "$Device"|tail -1|awk '{print $4}'
    	;;
    wps)
    	iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $5}'
    	;;
    rKBps)
    	iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $6}'
    	;;
    wKBps)
    	iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $7}'
    	;;
    avgrq-sz)
    	iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $8}'
    	;;
    avgqu-sz)
    	iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $9}'
    	;;
    await)
    	iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $10}'
    	;;
    svctm)
    	iostat -dxkt 1 2|grep "$Device" |tail -1|awk '{print $11}'
    	;;
    util)
    	iostat -dxkt |grep "$Device" |tail -1|awk '{print $12}'
    	;;
esac

fi


原生的zabbix对于磁盘io监控的支持

对返回的磁盘名进行监控项的创建/磁盘写入统计信息
vfs.dev.read/write[,,]
磁盘读取统计信息。
整数 - 类型 为 sectors,operations, bytes
浮点型 - 类型 为 sps, ops, bps

device - 磁盘设备 (默认为 all)

type - 可能的值: sectors, operations, bytes, sps, ops, bps必须指定此参数,因为各种操作系统的默认值不同。
sps, ops, bps 表示: sectors, operations, bytes per second, respectively.

mode - 可能的值: avg1 (1分钟平均值, 默认), avg5, avg15.
如果要获取每秒改变值,可以在进程中添加每秒改变,倍数自定义。
此参数仅支持的类型为: sps, ops, bps.

不同操作系统的“类型”参数的默认值:
AIX - operations
FreeBSD - bps
Linux - sps
OpenBSD - operations
Solaris - bytes

示例:
⇒ vfs.dev.read[,operations]
在支持的平台上的sps, ops 和 bps 曾被限制为 8 个设备(7个独立的和1个 all). 从Zabbix
2.0.1 开始,这个限制提高到1024个设备(1023个独立的和1个all).
如果默认为全部用于第一个参数,那么该key将返回摘要统计信息,包括所有块设备,
如sda,sbd及其分区(sda1,sda2,sdb3 …)和基于这些块设备/分区的多个设备(MD raid)和基于
这些设备/分区的逻辑卷(LVM)。在这种情况下,返回值只能作为相对值(动态时间)而不是绝
对值。
LVM的支持从Zabbix 1.8.6开始。
直到Zabbix 1.8.6才能使用相关的设备名称(例如,sda)。 从那时起,可选的 /dev/前缀(例
如/dev/sda)必须被使用。
旧名称: io[*]

比较关心的是磁盘的ops每秒的操作数,默认的mode使用的是avg1,出来的值就是1分钟之内的平均值

原文地址:https://www.cnblogs.com/cizao/p/11853903.html