dd io测试

写25G

time dd if=/dev/zero of=/opt/iotest/test.dbf bs=8k count=3000000

time dd if=/opt/iotest/test.dbf  of=/dev/null bs=8k



cd /usr/local/zabbix/etc/zabbix_agentd.conf.d

cat vfsiojohn.conf 

UserParameter=vfsiojohn.discovery,/usr/bin/python /usr/local/zabbix/bin/disk_discovery.py

UserParameter=disk.status[*],/usr/local/zabbix/bin/disk_status.sh $1 $2


cat /usr/local/zabbix/bin/disk_discovery.py

#/usr/bin/python
#This script is used to discovery disk on the server
import subprocess
import json
args="cat /proc/diskstats |grep -E '\ssd[a-z]\s|\sxvd[a-z]\s|\svd[a-z]\s'|awk '{print $3}'|sort|uniq 2>/dev/null"
t=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0]
 
disks=[]
 
for disk in t.split('\n'):
    if len(disk) != 0:
       disks.append({'{#DISK_NAME}':disk})
print json.dumps({'data':disks},indent=4,separators=(',',':'))


cat /usr/local/zabbix/bin/disk_status.sh

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


运行后台脚本

cd /tmp && nohup /usr/bin/iostat -dxkt 1  > /tmp/iostat_output 2>/dev/null &


ansible.sh

ansible -i hosts all -m script -a '/etc/ansible/iostatkill.sh'

ansible -i hosts all -m shell -a 'cd /tmp && echo `/usr/bin/iostat -dxkt`>iostat_output'

ansible -i hosts all -m shell -a 'nohup /usr/bin/iostat -dxkt 1  > /tmp/iostat_output 2>/dev/null &'

cat /etc/ansible/iostatkill.sh

kill -9 `pgrep iostat`


系统自带io监控模板有点问题

不然数据不准确