IOSTAT获取磁盘性能参数后,通过Zabbix Agent传值给Zabbix Server即可
IOSTAT
单独执行iostat,显示的结果为从系统开机到当前执行时刻的统计信息。以上输出中,除最上面指示系统版本、主机名和日期的一行外,另有两部分:
- avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值;
- Device: 各磁盘设备的IO统计信息.
环境:
Centos 7.3
Zabbix 3.0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [root@localhost ~] Linux 3.10.0-123.9.3.el7.x86_64 (uulend-Sstones-250) 08/27/2017 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 7.05 0.00 1.52 8.46 0.00 82.96 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn vda 8.53 23.92 101.76 190838701 811715460 vdb 1508.27 8334.43 896.07 66480462117 7147631044 dm-0 11.32 135.41 181.72 1080084008 1449488199 dm-1 0.02 0.07 0.08 563269 645028 dm-2 0.04 0.35 0.45 2825226 3588173 vdc 0.86 58.49 65.16 466571469 519767308 [root@localhost ~]
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| [root@localhost ~] Linux 3.10.0-123.9.3.el7.x86_64 (uulend-Sstones-250) 08/27/2017 _x86_64_ (4 CPU) 08/27/2017 08:02:50 PM Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.02 3.27 2.05 6.48 23.93 101.79 29.48 0.02 2.91 3.63 2.69 0.80 0.68 vdb 0.10 105.55 1436.35 72.02 8334.63 896.07 12.24 0.29 0.19 0.15 1.12 0.21 31.72 dm-0 0.00 0.00 3.36 7.96 135.39 181.69 56.02 0.04 3.28 2.77 3.49 0.62 0.70 dm-1 0.00 0.00 0.00 0.01 0.07 0.08 18.98 0.00 4.70 2.55 5.31 3.70 0.01 dm-2 0.00 0.00 0.02 0.02 0.35 0.45 38.14 0.00 3.58 1.41 6.00 2.56 0.01 vdc 0.00 0.19 0.60 0.25 58.61 65.29 288.35 0.05 59.65 2.49 195.64 2.03 0.17 [root@localhost ~]
|
- rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
- wrqm/s: 每秒对该设备的写请求被合并次数
- r/s: 每秒完成的读次数
- w/s: 每秒完成的写次数
- rkB/s: 每秒读数据量(kB为单位)
- wkB/s: 每秒写数据量(kB为单位)
- avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
- avgqu-sz: 平均等待处理的IO请求队列长度
- await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
- svctm: 平均每次IO请求的处理时间(毫秒为单位)
- %util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率
Zabbix监控
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| [root@localhost ~] [root@localhost scripts] #!/bin/bash diskarray=(`cat /proc/diskstats |grep -E "\bvd[abcdefg]\b|\bvd[abcdefg]\b"|grep -i "\b$1\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 "\"{#DISKNAME}\":\"${diskarray[$i]}\"}" if [ $i -lt $[$length-1] ];then printf ',' fi done printf "\n\t]\n" printf "}\n" [root@localhost scripts]
|
1 2 3 4 5 6 7 8 9 10
| [root@localhost scripts] { "data":[ {"{#DISKNAME}":"vda"}, {"{#DISKNAME}":"vdb"}, {"{#DISKNAME}":"vdc"} ] } [root@localhost scripts]
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| [root@localhost scripts] device=$1 item=$2 case $item in rps) iostat -dxkt |grep "\b$device\b"|tail -1|awk '{print $4}' ;; wps) iostat -dxkt |grep "\b$device\b" |tail -1|awk '{print $5}' ;; util) iostat -dxkt |grep "\b$device\b" |tail -1|awk '{print $NF}' ;; idle) iostat -x | grep -iA1 "\b$device\b" | tail -1 | awk '{print $NF}' ;; iowait) iostat -x | grep -iA1 "\b$device\b" | tail -1 | awk '{print $(NF-2)}' ;; esac [root@localhost scripts]
|
1 2 3 4
| [root@Localhost scripts] 31.72 [root@Localhost scripts]
|
1 2 3 4 5 6 7 8
| [root@localhost ~] [root@localhost zabbix_agentd.d] UserParameter=disk.scandisk[*],sh /etc/zabbix/scripts/disk_scan.sh $1 UserParameter=disk.status[*],sh /etc/zabbix/scripts/disk_status.sh $1 $2 [root@localhost zabbix_agentd.d] [root@localhost ~]
|
1 2 3 4 5 6 7 8 9 10 11 12
| [root@localhost ~] { "data":[ {"{#DISKNAME}":"vda"}, {"{#DISKNAME}":"vdb"}, {"{#DISKNAME}":"vdc"} ] } [root@localhost ~] 31.72 [root@localhost ~]
|
配置Zabbix Monitor
附件:
disk_scan.sh
disk_status.sh
userparameter_io.conf
Template IO status.xml
关于Zabbix其他监控指标,请参考:http://yfshare.blog.51cto.com/8611708/d-5
本文出自”Jack Wang Blog”:http://www.yfshare.vip/2017/08/28/Zabbix监控磁盘IO/