枫狐狸 发表于 2017-6-1 16:26:05

diskIO监控

echo "nohup iostat -m -x -d 60 >/tmp/iostat_output &" >> /etc/rc.d/rc.local

nohup iostat -m -x -d 60 >/tmp/iostat_output &

cat > /home/zabbix/bin/disk_scan.sh <<END
{
#!/bin/bash

function get_disk_name () {
      diskarray=(\$(cat /proc/diskstats|egrep "\bsd\b|\bxvd\b|\bvd\bb"|awk '{print \$3}'|sort|uniq   2>/dev/null))
    function printf_disk_name () {
      length=\${#diskarray[@]}
      for ((i=0;i<\${length};i++));do
            if [ \$i -lt \$[\${length}-1] ];then
                  printf "{ \"{#DISK_NAME}\":\"\${diskarray[\$i]}\" },\n"
            else
                  printf "{ \"{#DISK_NAME}\":\"\${diskarray[\$i]}\" }\n"
            fi
      done
    }
    printf "{ \"data\":[\n"
      printf_disk_name
    printf "]}"
}

get_disk_name \$1

exit 0
}
END

cat >> /home/zabbix/bin/disk_status.sh <<END
#/bin/sh

device=\$1
item=\$2

case \$item in
         rrqm)
            cat /tmp/iostat_output |grep "\b\$device\b"|tail -1|awk '{print \$2}'
            ;;
         wrqm)
            cat /tmp/iostat_output |grep "\b\$device\b"|tail -1|awk '{print \$3}'
            ;;
          rps)
            cat /tmp/iostat_output |grep "\b\$device\b"|tail -1|awk '{print \$4}'
            ;;
          wps)
            cat /tmp/iostat_output |grep "\b\$device\b" |tail -1|awk '{print \$5}'
            ;;
      rMBps)
            cat /tmp/iostat_output |grep "\b\$device\b" |tail -1|awk '{print \$6}'
            ;;
      wMBps)
            cat /tmp/iostat_output |grep "\b\$device\b" |tail -1|awk '{print \$7}'
            ;;
   avgrq-sz)
            cat /tmp/iostat_output |grep "\b\$device\b" |tail -1|awk '{print \$8}'
            ;;
   avgqu-sz)
            cat /tmp/iostat_output |grep "\b\$device\b" |tail -1|awk '{print \$9}'
            ;;
      await)
            cat /tmp/iostat_output |grep "\b\$device\b" |tail -1|awk '{print \$10}'
            ;;
      svctm)
            cat /tmp/iostat_output |grep "\b\$device\b" |tail -1|awk '{print \$13}'
            ;;
         util)
            cat /tmp/iostat_output |grep "\b\$device\b" |tail -1|awk '{print \$14}'
            ;;
esac
END
chmod +x /home/zabbix/bin/disk_*.sh

cat >> /etc/zabbix/zabbix_agentd.conf <<END
UserParameter=disk.discovery,/home/zabbix/bin/disk_scan.sh 2>/dev/null
UserParameter=disk.status[*],/home/zabbix/bin/disk_status.sh \$1 \$2
END

service zabbix_agentd restart




模版

kuba 发表于 2017-8-1 12:26:05

学习下{:6_388:}
页: [1]
查看完整版本: diskIO监控