近期数据主机的磁盘IO经常峰值,影响业务的稳定运行。得到一个需求,要求通过zabbix监控agent主机的IO状态,要知道zabbix默认是没有监控zabbix模板的,那么此时需要我们定义脚本获取agent的IO性能,并在zabbix的web端定义模板来实现对数据库主机监控
下面就来介绍如何通过zabbix对agent主机的IO性能进行监控:
【Agent段配置详解】
# egrep -v "#|^$" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0Server=10.15.200.72Include=/etc/zabbix/zabbix_agentd.d/*.conf
# cat /etc/zabbix/zabbix_agentd.d/scripts/disk_discovery.sh #编写自动发现磁盘脚本
#!/bin/bash
diskarray=(`cat /proc/diskstats |grep -E "sd[a-z]|xvd[a-z]|vd[a-z]"|awk '{print $3}'|sort|uniq 2>/dev/null`)
length=${#diskarray[@]}
printf"{"printf''""data":["
for ((i=0;i
if [ $i -lt $[$length-1] ];then
printf','fi
done
printf"]"printf"}"
# cat /etc/zabbix/zabbix_agentd.d/scripts/disk_status.sh #获取磁盘IO数据
#/bin/sh
Device=$1DISK=$2
case $DISK inrrqm)
iostat-dxkt 1 2|grep "$Device"|tail -1|awk '{print $2}';;
wrqm)
iostat-dxkt 1 2|grep "$Device"|tail -1|awk '{print $3}';;
rps)
iostat-dxkt 1 2|grep "$Device"|tail -1|awk '{print $4}';;
wps)
iostat-dxkt 1 2|grep "$Device" |tail -1|awk '{print $5}';;
rKBps)
iostat-dxkt 1 2|grep "$Device" |tail -1|awk '{print $6}';;
wKBps)
iostat-dxkt 1 2|grep "$Device" |tail -1|awk '{print $7}';;
avgrq-sz)
iostat-dxkt 1 2|grep "$Device" |tail -1|awk '{print $8}';;
avgqu-sz)
iostat-dxkt 1 2|grep "$Device" |tail -1|awk '{print $9}';;await)
iostat-dxkt 1 2|grep "$Device" |tail -1|awk '{print $10}';;
svctm)
iostat-dxkt 1 2|grep "$Device" |tail -1|awk '{print $11}';;
util)
iostat-dxkt |grep "$Device" |tail -1|awk '{print $12}';;
esac
参数详解:
rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
rps: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
wps: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkBps: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkBps: 每秒写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 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
# cat /etc/zabbix/zabbix_agentd.d/disk_status.conf #将两个脚本授予执行权限,单独写在一个个配置文件中,
UserParameter=disk.discovery[*],/etc/zabbix/zabbix_agentd.d/scripts/disk_discovery.sh
UserParameter=disk.status[*],/etc/zabbix/zabbix_agentd.d/scripts/disk_status.sh $1 $2
【Zabbix-web端配置】
1、新建模板,命名为DISK-IO,加入到Templates模板组。
2、新建一个自动发现规则
3、建立多个监控项原型
4、建立触发器类型
5、建立图形原型
最后将定义的模板链接到某个监控主机,从图形中即可发现磁盘IO数据变化
END!