zabbix3.4.2使用discovery对磁盘IO进行监控
一、导入zbx-disk-io-stats.xml模板文件
注:复制里面的内容,重新新建一个文件如:zbx-disk-io-stats.xml,在zabbix-web端导入模板
二、主机添加Template_Linux_Disk_IO_Stats模板
三、修改zabbix-server配置文件
[root@host-47-98-97-124 ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf
四、创建Disk-discovery.sh脚本脚本
[root@host-47-106-141-17 scripts]# cat Disk-discovery.sh
#!/bin/bash
disk_array=(`grep -E "(vd[a-z]$|sd[a-z]$)" /proc/partitions | awk '{print $4}'`)
length=${#disk_array[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#DISK_NAME}\":\"${disk_array[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n"
注:注意脚本执行权限及属主和属组
五、创建Disk-io-stat.sh脚本文件
[root@host-47-98-97-124 ~]# vi /usr/local/zabbix/scripts/Disk-discovery.sh
#!/bin/bash
Device=$1
DISK=$2
case $DISK in
rrqm)
iostat -dxk 1 2|grep "\b$Device\b" |tail -1| awk '{print $2}'
;;
wrqm)
iostat -dxk 1 2|grep "\b$Device\b" |tail -1| awk '{print $3}'
;;
rps)
iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $4}'
;;
wps)
iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $5}'
;;
rKBps)
iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $6}'
;;
wKBps)
iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $7}'
;;
avgrq-sz)
iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $8}'
;;
avgqu-sz)
iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $9}'
;;
await)
iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $10}'
;;
svctm)
iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $13}'
;;
util)
iostat -dxk 1 2|grep "\b$Device\b" |tail -1|awk '{print $14}'
;;
DiskAvaliable)
df -k | head -2 | grep "\b$Device\b" | awk '{print $4}'
;;
*)
echo -e "\e[033mUsage: sh $0 [rrqm|wrqm|rps|wps|rKBps|wKBps|avgqu-sz|avgrq-sz|await|svctm|util]\e[0m"
esac
六、创建zabbix-disk-io-stats.conf文件
[root@host-47-98-97-124 ~]# vi /usr/local/zabbix/scripts/zabbix-disk-io-stats.conf
UserParameter=disk.discovery[*],/usr/local/zabbix/scripts/Disk-discovery.sh
UserParameter=disk.io[*],/usr/local/zabbix/scripts/Disk-io-stat.sh $1 $2
注:检查zabbix-disk-io-stats.con文件的属主和属组
rrqm/s: 每秒进行 merge 的读操作数目.即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目.即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数.即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数.即 delta(wio)/s
rsec/s: 每秒读扇区数.即 delta(rsect)/s
wsec/s: 每秒写扇区数.即 delta(wsect)/s
rkB/s: 每秒读K字节数.是 rsect/s 的一半,因为每扇区大小为512字节.(需要计算)
wkB/s: 每秒写K字节数.是 wsect/s 的一半.(需要计算)
avgrq-sz:平均每次设备I/O操作的数据大小 (扇区).delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列长度.即 delta(aveq)/s/1000 (因为aveq的单位为毫秒).
await: 平均每次设备I/O操作的等待时间 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒).即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O,也就是磁盘IO带宽使用率
七、重启zabbix服务
[root@host-47-98-97-124 ~]# pkill zabbix
[root@host-47-98-97-124 ~]# /usr/local/zabbix/sbin/zabbix_server
[root@host-47-98-97-124 ~]# /usr/local/zabbix/sbin/zabbix_agentd
八、创建自动发现规则
九、创建监控项原型
这里以disk.io[{#DISK_NAME},util]为例
名称 键值
$1 IO操作率 disk.io[{#DISK_NAME},util]
$1 平均IO队列长度 disk.io[{#DISK_NAME},avgqu-sz]
$1 平均每次IO操作服务时间(毫秒) disk.io[{#DISK_NAME},svctm]
$1 平均每次IO操作的数据大小(扇区) disk.io[{#DISK_NAME},avgrq-sz]
$1 平均每次IO操作等待时间(毫秒) disk.io[{#DISK_NAME},await]
$1 每秒写数据量(KB) disk.io[{#DISK_NAME},wKBps]
$1 每秒读数据量(KB) disk.io[{#DISK_NAME},rKBps]
十、查看主机item是否正常
根据上图发现部分监控item出现报错,根据提示信息类型选择有问题
解决:将所有监控项信息类型的数字类型改为浮点数
恢复正常!!!
如果想更好的展示监控的效果,可结合grafana一起做!