UserParameter=disk.discover,python /home/admin/sbin/disk_discover.py
UserParameter=disk.status[*],sh /home/admin/sbin/disk_check.sh -d $1 -o $2
$ cat /home/admin/sbin/disk_discover.py
#coding:utf-8
#zabbix 硬盘发现监控脚本
try:
import json
import commands
except:
import simplejson as json
import commands
(status, output) = commands.getstatusoutput('''cat /proc/diskstats |awk '{print $3}'|egrep 'sd|vd|hd'|egrep -v '[0-9]'|sort -u''')
if output:
outputs = output.split('\n')
disks = []
for disk in outputs:
disks += [{'{#DISKONE}': disk}]
print json.dumps({'data':disks},sort_keys=True,indent=4)
$ cat /home/admin/sbin/disk_check.sh
#!/bin/sh
# 80 sda 76880282531 8117316 937263519846 4237854729 62989000438 35668103347 777694636224 1190396494 3 2895102137 899093508
while getopts "d:o:" opt
do
case $opt in
d ) disk=$OPTARG;;
o ) option=$OPTARG;;
? )
echo 'parameter is wrong!'
exit 1;;
esac
done
if [ ! "${disk}" ] || [ ! "${option}" ];then
echo "parameter is null"
exit 1
fi
if [[ ${option} == "read" ]];then
cat /proc/diskstats |grep "${disk} "|awk '{print $6}'
elif [[ ${option} == "write" ]];then
cat /proc/diskstats |grep "${disk} "|awk '{print $10}'
elif [[ ${option} == "readops" ]];then
cat /proc/diskstats |grep "${disk} "|awk '{print $4}'
elif [[ ${option} == "writeops" ]];then
cat /proc/diskstats |grep "${disk} "|awk '{print $8}'
elif [[ ${option} == "readtime" ]];then
cat /proc/diskstats |grep "${disk} "|awk '{print $7}'
elif [[ ${option} == "writetime" ]];then
cat /proc/diskstats |grep "${disk} "|awk '{print $11}'
fi