使用zabbix监控磁盘IO

zabbix默认的磁盘监控中没有磁盘IO方面的监控,于是我在网上找到这样一个模版,可以实现对磁盘IO的监控。

首先编辑zabbix安装目录下etc/zabbix_agentd.conf,添加如下内容

1
2
3
4
5
6
7
8
9
##IO monitor
UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}'
UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}'
UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}'
UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}'
UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$12}'
UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}'
UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}'
UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}'

编辑完成后,我们可以先来修改一下上述的命令,测试能否成功获取相关数据。其中需要修改的有:$1,使用自己在使用的磁盘代替,我使用的是sda,所以改成sda;$$4,去掉一个$。修改好的命令如下:

1
cat /proc/diskstats | grep sda | head -1 | awk '{print $4}'

若返回的是具体的数值,则说明命令运行成功。那么现在可以愉快的重启zabbix_agentd服务了。

上述操作成功完成后,可以登陆到zabbix_server端,使用zabbix_get测试能否获取到agent端的数据,命令如下:

1
zabbix_get -s 客户端地址 -p 10050 -k custom.vfs.dev.write.ops[所用磁盘]

如果反馈结果为数字,则服务端亦可顺利接收到客户端的数据,若返回的是ZBX_NOTSUPPORTED,就得检查客户端是否成功重启、客户端的防火墙是否放行10050端口等。

最后,我们只需要在Configration→Template中import下载的zabbix FileServer template.xml,再关联到需要监控的主机上就可以了。

 

详细信息参见:http://www.muck.net/19/getting-hard-disk-performance-stats-from-zabbix