diff --git a/src/im_mad/remotes/ganglia.d/ganglia_probe b/src/im_mad/remotes/ganglia.d/ganglia_probe index 1fc6a43071..2be364e322 100755 --- a/src/im_mad/remotes/ganglia.d/ganglia_probe +++ b/src/im_mad/remotes/ganglia.d/ganglia_probe @@ -87,5 +87,5 @@ info.each do |key, value| GangliaHost.print_info(key, value) end - +system("../../vmm/kvm/poll_ganglia #{host}") diff --git a/src/vmm_mad/remotes/poll_ganglia.rb b/src/vmm_mad/remotes/poll_ganglia.rb index c151dfacbc..97a1dedf43 100755 --- a/src/vmm_mad/remotes/poll_ganglia.rb +++ b/src/vmm_mad/remotes/poll_ganglia.rb @@ -49,9 +49,34 @@ GANGLIA_PORT=8649 #GANGLIA_FILE='data.xml' -domain=ARGV[0] -dom_id=ARGV[2] -host=ARGV[1] +def info_string(dom_info) + if dom_info + info=dom_info.map do |key, value| + "#{key.to_s.upcase}=#{value}" + end.join(' ') + else + '' + end +end + +def vm_info(name, dom_info) + number=name.split('-').last + string="VM=[\n" + string<<" ID=\"#{number}\",\n" + string<<" POLL=\"#{info_string(dom_info)}\" ]" + string +end + + +if ARGV.length==1 + host=ARGV[0] + ALL=true +else + domain=ARGV[0] + dom_id=ARGV[2] + host=ARGV[1] + ALL=false +end # Gets monitoring data from ganglia or file begin @@ -66,24 +91,24 @@ rescue end doms_info=ganglia.get_vms_information -dom_id=domain.split('-').last -# Unknown state when the VM is not found -if !doms_info || !(doms_info[domain] || doms_info[dom_id]) - puts "STATE=d" - exit(0) +if !ALL + dom_id=domain.split('-').last + + # Unknown state when the VM is not found + if !doms_info || !(doms_info[domain] || doms_info[dom_id]) + puts "STATE=d" + exit(0) + end + + # Get key one- or key from the hash + dom_info=doms_info[domain] + dom_info=doms_info[dom_id] if !dom_info + + puts info_string(dom_info) +else + doms_info.each do |name, data| + puts vm_info(name, data) + end end -# Get key one- or key from the hash -dom_info=doms_info[domain] -dom_info=doms_info[dom_id] if !dom_info - -if dom_info - info=dom_info.map do |key, value| - "#{key.to_s.upcase}=#{value}" - end.join(' ') - - puts info -end - -