From aaf77b9dd1d96865ab0f6e01ea32df30951b89e8 Mon Sep 17 00:00:00 2001 From: Cherdancev Evgeni Date: Tue, 19 May 2015 14:02:21 +0600 Subject: [PATCH 1/5] add enp2 interface AND refactor mem&cpu for using /proc --- src/im_mad/remotes/kvm-probes.d/kvm.rb | 43 ++++++++++++-------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/src/im_mad/remotes/kvm-probes.d/kvm.rb b/src/im_mad/remotes/kvm-probes.d/kvm.rb index 7209dd67b5..c8b84cd34f 100755 --- a/src/im_mad/remotes/kvm-probes.d/kvm.rb +++ b/src/im_mad/remotes/kvm-probes.d/kvm.rb @@ -26,7 +26,7 @@ end # TODO : use virsh freecell when available ###### -nodeinfo_text = `virsh -c qemu:///system nodeinfo` +nodeinfo_text = `LANG=C virsh -c qemu:///system nodeinfo` exit(-1) if $?.exitstatus != 0 nodeinfo_text.split(/\n/).each{|line| @@ -43,33 +43,30 @@ nodeinfo_text.split(/\n/).each{|line| # for everything else, top & proc ##### -NETINTERFACE = "eth|bond|em|p[0-9]+p[0-9]+" +NETINTERFACE = "eth|bond|em|enp2|p[0-9]+p[0-9]+" -top_text=`top -bin2` -exit(-1) if $?.exitstatus != 0 +stat = `cat /proc/stat` -top_text.gsub!(/^top.*^top.*?$/m, "") # Strip first top output +stat.each_line do |line| + if /\Acpu (.*)\Z/.match(line) + stat_cpu = Regexp.last_match[1].to_s.split + stat_total_cpu = stat_cpu.inject(0) {|s,sum| sum.to_i+s.to_i}.to_i + $free_cpu = $total_cpu * stat_cpu[3].to_f / stat_total_cpu + $used_cpu = $total_cpu - $free_cpu + end +end -top_text.split(/\n/).each{|line| - if line.match('^%?Cpu') - line[7..-1].split(",").each{|elemento| - temp = elemento.strip.split(/[% ]/) - if temp[1]=="id" - idle = temp[0] - $free_cpu = idle.to_f * $total_cpu.to_f / 100 - $used_cpu = $total_cpu.to_f - $free_cpu - break - end +memory = `cat /proc/meminfo` +meminfo = Hash.new() +memory.each_line do |line| + key, value = line.split(':') + meminfo[key] = /\d+/.match(value)[0].to_i +end - } - end -} +$total_memory = meminfo['MemTotal'] -$total_memory = `free -k|grep "Mem:" | awk '{print $2}'` -tmp=`free -k|grep "buffers\/cache"|awk '{print $3 " " $4}'`.split - -$used_memory=tmp[0] -$free_memory=tmp[1] +$used_memory = meminfo['MemTotal'] - meminfo['MemFree'] - meminfo['Buffers'] - meminfo['Cached'] +$free_memory = $total_memory - $used_memory net_text=`cat /proc/net/dev` exit(-1) if $?.exitstatus != 0 From 0728ea0bacd1da8918a59c9ac937fe65e5c06e71 Mon Sep 17 00:00:00 2001 From: Cherdancev Evgeni Date: Tue, 19 May 2015 14:10:23 +0600 Subject: [PATCH 2/5] change enp2 to enp interfaces --- src/im_mad/remotes/kvm-probes.d/kvm.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/im_mad/remotes/kvm-probes.d/kvm.rb b/src/im_mad/remotes/kvm-probes.d/kvm.rb index c8b84cd34f..946934827c 100755 --- a/src/im_mad/remotes/kvm-probes.d/kvm.rb +++ b/src/im_mad/remotes/kvm-probes.d/kvm.rb @@ -43,7 +43,7 @@ nodeinfo_text.split(/\n/).each{|line| # for everything else, top & proc ##### -NETINTERFACE = "eth|bond|em|enp2|p[0-9]+p[0-9]+" +NETINTERFACE = "eth|bond|em|enp|p[0-9]+p[0-9]+" stat = `cat /proc/stat` From bc3b4a53880de6aeaf71ca5db43cc0ad5e7a116b Mon Sep 17 00:00:00 2001 From: Cherdancev Evgeni Date: Tue, 19 May 2015 14:28:55 +0600 Subject: [PATCH 3/5] inject swap arguments --- src/im_mad/remotes/kvm-probes.d/kvm.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/im_mad/remotes/kvm-probes.d/kvm.rb b/src/im_mad/remotes/kvm-probes.d/kvm.rb index 946934827c..9dad514323 100755 --- a/src/im_mad/remotes/kvm-probes.d/kvm.rb +++ b/src/im_mad/remotes/kvm-probes.d/kvm.rb @@ -50,7 +50,7 @@ stat = `cat /proc/stat` stat.each_line do |line| if /\Acpu (.*)\Z/.match(line) stat_cpu = Regexp.last_match[1].to_s.split - stat_total_cpu = stat_cpu.inject(0) {|s,sum| sum.to_i+s.to_i}.to_i + stat_total_cpu = stat_cpu.inject(0) {|sum,s| sum.to_i+s.to_i}.to_i $free_cpu = $total_cpu * stat_cpu[3].to_f / stat_total_cpu $used_cpu = $total_cpu - $free_cpu end From df4cbea89be201332535679ded256916984a13de Mon Sep 17 00:00:00 2001 From: Cherdancev Evgeni Date: Tue, 19 May 2015 17:42:23 +0600 Subject: [PATCH 4/5] use vmstat instead of /proc/stat for cpu --- src/im_mad/remotes/kvm-probes.d/kvm.rb | 28 ++++++++++++-------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/im_mad/remotes/kvm-probes.d/kvm.rb b/src/im_mad/remotes/kvm-probes.d/kvm.rb index 9dad514323..77b4dbac54 100755 --- a/src/im_mad/remotes/kvm-probes.d/kvm.rb +++ b/src/im_mad/remotes/kvm-probes.d/kvm.rb @@ -40,22 +40,15 @@ nodeinfo_text.split(/\n/).each{|line| } ###### -# for everything else, top & proc -##### - -NETINTERFACE = "eth|bond|em|enp|p[0-9]+p[0-9]+" - -stat = `cat /proc/stat` - -stat.each_line do |line| - if /\Acpu (.*)\Z/.match(line) - stat_cpu = Regexp.last_match[1].to_s.split - stat_total_cpu = stat_cpu.inject(0) {|sum,s| sum.to_i+s.to_i}.to_i - $free_cpu = $total_cpu * stat_cpu[3].to_f / stat_total_cpu - $used_cpu = $total_cpu - $free_cpu - end -end +# CPU +###### +vmstat = `vmstat 1 2` +$free_cpu = $total_cpu * ((vmstat.split("\n").to_a.last.split)[14].to_i)/100 +$used_cpu = $total_cpu - $free_cpu +###### +# MEMORY +###### memory = `cat /proc/meminfo` meminfo = Hash.new() memory.each_line do |line| @@ -68,6 +61,11 @@ $total_memory = meminfo['MemTotal'] $used_memory = meminfo['MemTotal'] - meminfo['MemFree'] - meminfo['Buffers'] - meminfo['Cached'] $free_memory = $total_memory - $used_memory +###### +# INTERFACE +###### +NETINTERFACE = "eth|bond|em|enp|p[0-9]+p[0-9]+" + net_text=`cat /proc/net/dev` exit(-1) if $?.exitstatus != 0 From d880cc6c6b644465967771ec322ffada62c26bec Mon Sep 17 00:00:00 2001 From: Cherdancev Evgeni Date: Tue, 19 May 2015 20:32:09 +0600 Subject: [PATCH 5/5] fix LANG=C --- src/im_mad/remotes/kvm-probes.d/kvm.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/im_mad/remotes/kvm-probes.d/kvm.rb b/src/im_mad/remotes/kvm-probes.d/kvm.rb index 77b4dbac54..32db20488f 100755 --- a/src/im_mad/remotes/kvm-probes.d/kvm.rb +++ b/src/im_mad/remotes/kvm-probes.d/kvm.rb @@ -26,7 +26,9 @@ end # TODO : use virsh freecell when available ###### -nodeinfo_text = `LANG=C virsh -c qemu:///system nodeinfo` +ENV['LANG'] = 'C' + +nodeinfo_text = `virsh -c qemu:///system nodeinfo` exit(-1) if $?.exitstatus != 0 nodeinfo_text.split(/\n/).each{|line|