转载至http://www.jianshu.com/p/62c86a397b4d
服务器磁盘的运作情况在一定程度上反应系统的负载。
磁盘通常是服务器最慢的设备,极容易出现瓶颈,通过监控可以判断出整个系统的短板。
zabbix自带的“Template OS Linux”模板可自动发现磁盘并监控空间利用率,小编这次介绍利用zabbix LLD功能监控磁盘IO的方法,使用的到的系统命令有/proc/diskstats
动态磁盘IO监控用到的三个文件我已经上传至github
https://github.com/JPOPS/Monitor/tree/master/zabbix-DiskIO
1
2
3
4
|
#自动发现脚本文件
/usr/local/zabbix/scripts/discover_disk
.pl
#模板文件web端导入即可
Template_Linux_Disk_IO_Stats.xml
#zabbix 自定义key文件
/usr/local/zabbix/etc/zabbix_agentd
.conf.d
/zabbix_io_stats
|
自动发现脚本
脚本非小编亲写,来自网络。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#!/usr/bin/perlsub get_vmname_by_id
{
$vmname=`
cat
/etc/qemu-server/
$_[0].conf |
grep
name |
cut
-d \: -f 2`;
$vmname =~ s/^\s+
//
;
#remove leading spaces
$vmname =~ s/\s+$
//
;
#remove trailing spaces
return
$vmname
}
$first = 1;print
"{\n"
;print
"\t\"data\":[\n\n"
;
for
(`
cat
/proc/diskstats
`)
{
($major,$minor,$disk) = m/^\s*([0-9]+)\s+([0-9]+)\s+(\S+)\s.*$/;
$dmnamefile =
"/sys/dev/block/$major:$minor/dm/name"
;
$vmid=
""
;
$vmname =
""
;
$dmname = $disk;
$diskdev =
"/dev/$disk"
;
# DM name
if
(-e $dmnamefile) {
$dmname = `
cat
$dmnamefile`;
$dmname =~ s/\n$
//
;
#remove trailing \n
$diskdev =
"/dev/mapper/$dmname"
;
# VM name and ID
if
($dmname =~ m/^.*--([0-9]+)--.*$/) {
$vmid = $1;
#$vmname = get_vmname_by_id($vmid);
}
}
#print("$major $minor $disk $diskdev $dmname $vmid $vmname \n");
print
"\t,\n"
if
not $first;
$first = 0; print
"\t{\n"
; print
"\t\t\"{#DISK}\":\"$disk\",\n"
; print
"\t\t\"{#DISKDEV}\":\"$diskdev\",\n"
; print
"\t\t\"{#DMNAME}\":\"$dmname\",\n"
; print
"\t\t\"{#VMNAME}\":\"$vmname\",\n"
; print
"\t\t\"{#VMID}\":\"$vmid\"\n"
; print
"\t}\n"
;
}print
"\n\t]\n"
;print
"}\n"
;
|
zabbix agent 配置
-
编辑zabbix agent配置文件,设置Include目录:
1
|
Include=
/usr/local/zabbix/etc/zabbix_agentd
.conf.d/
|
-
将key文件放置agent配置文件夹下,并重启客户端
1
|
# diskio discoveryUserParameter=discovery.disks.iostats,/usr/local/zabbix/scripts/discover_disk.pl#读扇区的次数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}'#合并读完成次数UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 |awk '{print $$4}'#合并写完成次数UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}'#读花费的毫秒数UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}'#写操作花费的毫秒数UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}'
|
Web配置
-
导入Template_Linux_Disk_IO_Stats.xml
-
管理 > 一般 > 正则表达式 > 新的正则表达式
正则表达式内容根据自己主机硬盘名称填写,类型为结果为真
1
2
|
#Linux disks for autodiscovery
^(xvda|xvdb|xvdc|sda|sdb|sdc)$
|
添加模板稍后就会画出图形
本文转自YU文武貝 51CTO博客,原文链接:http://blog.51cto.com/linuxerxy/1907344,如需转载请自行联系原作者