一、场景说明:
需要使用Zabbix监控服务器上各个磁盘的I/O使用率,当zabbix自身带的item
无法满足我们的时候,则需自定义item。
包括:
-
磁盘读的次数
-
磁盘读的毫秒数
-
磁盘写的次数
-
磁盘写的毫秒数
-
正在处理的输入/输出请求数
-
花费在I/O操作上的毫秒数
-
读扇区的次数(一个扇区等于512B)
-
写扇区的次数(一个扇区等于512B)
注意:本环境要监控的服务器在阿里云上,所以每台服务器上的设备名称不同,为解决此问题,我定义了多个模板来解决此问题!
各位小伙伴请根据实际情况进行配置
二、步骤概览
1.数据来源:/proc/diskstats
/proc/diskstats文件说明
$1: 主设备号
$2: 次设备号
$3: 设备名称
$4: 读完成次数
$6: 读扇区的次数(一个扇区等于512B)
$7: 读磁盘的毫秒数
$8: 写完成次数
$10: 写扇区的次数(一个扇区等于512B)
$11: 磁盘写的毫秒数
$12: 正在处理的输入/输出请求数
$13: 花费在I/O操作上的毫秒数
2.自定义item
3.在zabbix_server端测试
4.配置Zabbix-server WEB UI
5.监测最新数据
二、操作步骤:
1.自定义item并重新加载Agent.
~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_disk_io.conf #磁盘读的次数 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}' #花费在IO操作上的毫秒数 UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}' #读扇区的次数(一个扇区的等于512B) UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}' #写扇区的次数(一个扇区的等于512B) UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10} ~]# systemctl restart zabbix-agent
2.在zabbix-server端测试
~]# zabbix_get -s 192.168.1.100 -k custom.vfs.dev.io.ms[xvda1] // 如果没有这个命令的话则需要使用yum安装(yum -y install zabbix-get) 2547825 ~]# zabbix_get -s 192.168.1.100 -k custom.vfs.dev.read.sectors[xvda1] 7716602 ....等等,当全部数据都可获取时,则说明item生效.
3.配置Zabbix-server WEB UI
(1)如图操作:配置 → 模板 → 创建模板.
(2)如图操作:自定义模板名称 → 将被监控主机群组加入到"群组"中.
(3)如图操作:监控项 → 创建监控项
(4)如图操作:自定义名称 → 采集数据的方式 → 手动指定键值 → 指定单位 → 指定应用集 → 进程 → 每秒更改 → 点击更新.
(5)如图操作:再次新建监控项 → 名称 → 获取数据方式 → 自定义key → 数值类型 → 数据单位 → 进程 → 自定义倍数(512) → 每秒更改 → 更新.
(6)如图所示:下面的操作都与上述描述差的不多,在此不做注释.
(7) 如图操作:
(8)如图操作:
(9) 如图操作:
4.监测最新数据,如图所示(如果有多块磁盘,那么就配置多个模板,模板间可互相克隆后修改$1位置的磁盘名称)