mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-21 14:50:08 +03:00
F 2921: get disk IO information from kvm probes
This commit is contained in:
parent
b43bc21b1a
commit
a46863fab0
@ -49,6 +49,7 @@ module KVM
|
||||
:list => 'virsh --connect LIBVIRT_URI --readonly list',
|
||||
:dumpxml => 'virsh --connect LIBVIRT_URI --readonly dumpxml',
|
||||
:domifstat => 'virsh --connect LIBVIRT_URI --readonly domifstat',
|
||||
:domblkstat => 'virsh --connect LIBVIRT_URI --readonly domblkstat',
|
||||
:top => 'top -b -d2 -n 2 -p ',
|
||||
'LIBVIRT_URI' => 'qemu:///system'
|
||||
}
|
||||
@ -154,6 +155,8 @@ module KVM
|
||||
vm[:name] = uuid
|
||||
end
|
||||
|
||||
values.merge!(get_diskio_statistics(name, xml))
|
||||
|
||||
vms_info[vm[:name]] = values
|
||||
end
|
||||
|
||||
@ -322,6 +325,52 @@ module KVM
|
||||
values
|
||||
end
|
||||
|
||||
def self.get_disk_names(vmid, text = nil)
|
||||
text = dump_xml(vmid) if !text
|
||||
|
||||
doc=REXML::Document.new(text)
|
||||
disks = []
|
||||
doc.elements.each('domain/devices/disk/target') do |ele|
|
||||
disks << ele.attributes["dev"]
|
||||
end
|
||||
|
||||
disks
|
||||
end
|
||||
|
||||
def self.get_diskio_statistics(vmid, text = nil)
|
||||
disks=get_disk_names(vmid, text)
|
||||
|
||||
if disks && !disks.empty?
|
||||
values={}
|
||||
values[:diskrdbytes]=0
|
||||
values[:diskwrbytes]=0
|
||||
values[:diskrdiops]=0
|
||||
values[:diskwriops]=0
|
||||
|
||||
disks.each do |disk|
|
||||
text=`#{virsh(:domblkstat)} #{vmid} #{disk}`
|
||||
|
||||
text.each_line do |line|
|
||||
columns=line.split(/\s+/)
|
||||
case columns[1]
|
||||
when 'rd_bytes'
|
||||
values[:diskrdbytes]+=columns[2].to_i
|
||||
when 'wr_bytes'
|
||||
values[:diskwrbytes]+=columns[2].to_i
|
||||
when 'rd_req'
|
||||
values[:diskrdiops]+=columns[2].to_i
|
||||
when 'wr_req'
|
||||
values[:diskwriops]+=columns[2].to_i
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
values
|
||||
else
|
||||
{}
|
||||
end
|
||||
end
|
||||
|
||||
# Translate libvirt state to Opennebula monitor state
|
||||
# @param state [String] libvirt state
|
||||
# @return [String] OpenNebula state
|
||||
|
Loading…
x
Reference in New Issue
Block a user