1、在zabbix的agentd端配置文件添加如下:
$ vim /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=htczabbix01
StartAgents=30
ServerActive=htczabbix01
Hostname=htcap01
Timeout=30
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UserParameter=discovery.disks.iostats,/etc/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}'
1、编写脚本discover_disk.pl
#!/usr/bin/perl
# give disk dmname, returns Proxmox VM name
sub 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\"{#DMNAME}\":\"$dmname\",\n";
print "\t\t\"{#VMNAME}\":\"$vmname\",\n";
print "\t\t\"{#VMID}\":\"$vmid\"\n";
print "\t}\n";
}
print "\n\t]\n";
print "}\n";