module Usagewatch
Public Class Methods
bandrx()
click to toggle source
Bandwidth Received Method
# File lib/usagewatch_ext/skcript_linux.rb, line 154 def self.bandrx if File.exists?("/proc/net/dev") File.open("/proc/net/dev", "r") do |file| @result = file.read end end @arrRows = @result.split("\n") @arrEthLoRows = @arrRows.grep(/eth|lo/) rowcount = (@arrEthLoRows.count - 1) for i in (0..rowcount) @arrEthLoRows[i] = @arrEthLoRows[i].gsub(/\s+/m, ' ').strip.split(" ") end @arrColumns = Array.new for l in (0..rowcount) @temp = Array.new @temp[0] = @arrEthLoRows[l][1] @temp[1] = @arrEthLoRows[l][9] @arrColumns << @temp end columncount = (@arrColumns[0].count - 1) @arrTotal = Array.new for p in (0..columncount) @arrTotal[p] = 0 end for j in (0..columncount) for k in (0..rowcount) @arrTotal[j] = @arrColumns[k][j].to_i + @arrTotal[j] end end @bandrxtx = @arrTotal end
bandtx()
click to toggle source
Bandwidth Transmitted Method
# File lib/usagewatch_ext/skcript_linux.rb, line 209 def self.bandtx if File.exists?("/proc/net/dev") File.open("/proc/net/dev", "r") do |file| @result = file.read end end @arrRows = @result.split("\n") @arrEthLoRows = @arrRows.grep(/eth|lo/) rowcount = (@arrEthLoRows.count - 1) for i in (0..rowcount) @arrEthLoRows[i] = @arrEthLoRows[i].gsub(/\s+/m, ' ').strip.split(" ") end @arrColumns = Array.new for l in (0..rowcount) @temp = Array.new @temp[0] = @arrEthLoRows[l][1] @temp[1] = @arrEthLoRows[l][9] @arrColumns << @temp end columncount = (@arrColumns[0].count - 1) @arrTotal = Array.new for p in (0..columncount) @arrTotal[p] = 0 end for j in (0..columncount) for k in (0..rowcount) @arrTotal[j] = @arrColumns[k][j].to_i + @arrTotal[j] end end @bandrxtx = @arrTotal end
diskio()
click to toggle source
Disk Usage Method
# File lib/usagewatch_ext/skcript_linux.rb, line 264 def self.diskio if File.exists?("/proc/diskstats") File.open("/proc/diskstats", "r") do |file| @result = file.read end end @arrRows = @result.split("\n") rowcount = (@arrRows.count - 1) for i in (0..rowcount) @arrRows[i] = @arrRows[i].gsub(/\s+/m, ' ').strip.split(" ") end @arrColumns = Array.new for l in (0..rowcount) @temp = Array.new @temp[0] = @arrRows[l][3] @temp[1] = @arrRows[l][7] @arrColumns << @temp end columncount = (@arrColumns[0].count - 1) @arrTotal = Array.new for p in (0..columncount) @arrTotal[p] = 0 end for j in (0..columncount) for k in (0..rowcount) @arrTotal[j] = @arrColumns[k][j].to_i + @arrTotal[j] end end @diskiorw= @arrTotal end
uw_bandrx()
click to toggle source
# File lib/usagewatch_ext/mac.rb, line 114 def self.uw_bandrx read1 =`netstat -ib | grep -e "en1" -m 1 | awk '{print $7}'` sleep 1 read2=`netstat -ib | grep -e "en1" -m 1 | awk '{print $7}'` (((read2.to_f - read1.to_f)/1024)/1024).round(3) end
uw_bandtx()
click to toggle source
# File lib/usagewatch_ext/mac.rb, line 121 def self.uw_bandtx send1=`netstat -ib | grep -e "en1" -m 1 | awk '{print $10}'` sleep 1 send2=`netstat -ib | grep -e "en1" -m 1 | awk '{print $10}'` (((send2.to_f - send1.to_f)/1024)/1024).round(3) end
uw_cputop()
click to toggle source
return hash of top ten proccesses by cpu consumption example [[“apache2”, 12.0], [“passenger”, 13.2]]
# File lib/usagewatch_ext/mac.rb, line 76 def self.uw_cputop top %w"$11 $3" end
uw_cpuused()
click to toggle source
Show the percentage of cpu used
# File lib/usagewatch_ext/mac.rb, line 68 def self.uw_cpuused top = `top -l1 | awk '/CPU usage/'` top = top.gsub(/[\,a-zA-Z:]/, "").split(" ") top[0].to_f end
uw_diskavailable()
click to toggle source
Show disk space available in GB
# File lib/usagewatch_ext/mac.rb, line 30 def self.uw_diskavailable df = `df -kl` sum = 0.00 df.each_line.with_index do |line, line_index| next if line_index.eql? 0 line = line.split(" ") next if line[0] =~ /localhost/ #ignore backup filesystem sum += ((line[3].to_f)/1024)/1024 end totaldiskavailable = sum.round(2) end
uw_diskavailable_on(location)
click to toggle source
Show disk space available on location(partition) in GB
# File lib/usagewatch_ext/mac.rb, line 43 def self.uw_diskavailable_on(location) df = `df` df.split("\n")[1..-1].each do |line| parts = line.split(" ") if parts.last == location diskavailableon = ((parts[3].to_i.round(2)/1024)/1024).round(2) break end end diskavailableon ? diskavailableon : "location invalid" end
uw_diskioreads()
click to toggle source
Current Disk Reads Completed
# File lib/usagewatch_ext/skcript_linux.rb, line 305 def self.uw_diskioreads @new0 = self.diskio sleep 1 @new1 = self.diskio @diskreads = @new1[0].to_i - @new0[0].to_i end
uw_diskiowrites()
click to toggle source
Current Disk Writes Completed
# File lib/usagewatch_ext/skcript_linux.rb, line 315 def self.uw_diskiowrites @new0 = self.diskio sleep 1 @new1 = self.diskio @diskwrites = @new1[1].to_i - @new0[1].to_i end
uw_diskused()
click to toggle source
Show disk used in GB
# File lib/usagewatch_ext/mac.rb, line 4 def self.uw_diskused df = `df -kl` sum = 0.00 df.each_line.with_index do |line, line_index| next if line_index.eql? 0 line = line.split(" ") next if line[0] =~ /localhost/ #ignore backup filesystem sum += ((line[2].to_f)/1024)/1024 end sum.round(2) end
uw_diskused_on(location)
click to toggle source
Show disk space used on location(partition) in GB
# File lib/usagewatch_ext/mac.rb, line 17 def self.uw_diskused_on(location) df = `df` df.split("\n")[1..-1].each do |line| parts = line.split(" ") if parts.last == location diskusedon = ((parts[2].to_i.round(2)/1024)/1024).round(2) break end end diskusedon ? diskusedon : "location invalid" end
uw_diskused_perc()
click to toggle source
Show the percentage of disk used.
# File lib/usagewatch_ext/mac.rb, line 56 def self.uw_diskused_perc df, total, used = `df -kl`, 0.0, 0.0 df.each_line.with_index do |line, line_index| line = line.split(" ") next if line_index.eql? 0 or line[0] =~ /localhost/ #ignore backup filesystem total += to_gb line[3].to_f used += to_gb line[2].to_f end ((used/total) * 100).round(2) end
uw_httpconns()
click to toggle source
Show the current http connections on 80 port
# File lib/usagewatch_ext/linux.rb, line 3 def self.uw_httpconns `netstat -an | grep :80 |wc -l`.to_i end
uw_load()
click to toggle source
Show the average of load in the last minute
# File lib/usagewatch_ext/mac.rb, line 104 def self.uw_load iostat = `iostat -w1 -c 2 | awk '{print $7}'` cpu = 0.0 iostat.each_line.with_index do |line, line_index| next if line_index.eql? 0 or line_index.eql? 1 or line_index.eql? 2 cpu = line.split(" ").last.to_f.round(2) end cpu end
uw_memtop()
click to toggle source
return hash of top ten proccesses by mem consumption example [[“apache2”, 12.0], [“passenger”, 13.2]]
# File lib/usagewatch_ext/mac.rb, line 92 def self.uw_memtop top %w"$11 $4" end
uw_memused()
click to toggle source
Percentage of mem used
# File lib/usagewatch_ext/mac.rb, line 97 def self.uw_memused top = `top -l1 | awk '/PhysMem/'` top = top.gsub(/[\.\,a-zA-Z:]/, "").split(" ").reverse ((top[1].to_f / (top[0].to_f + top[1].to_f)) * 100).round(2) end
uw_tcpused()
click to toggle source
Show the number of TCP connections used
# File lib/usagewatch_ext/skcript_linux.rb, line 69 def self.uw_tcpused if File.exists?("/proc/net/sockstat") File.open("/proc/net/sockstat", "r") do |ipv4| @sockstat = ipv4.read end @tcp4data = @sockstat.split @tcp4count = @tcp4data[5] end if File.exists?("/proc/net/sockstat6") File.open("/proc/net/sockstat6", "r") do |ipv6| @sockstat6 = ipv6.read end @tcp6data = @sockstat6.split @tcp6count = @tcp6data[2] end @totaltcpused = @tcp4count.to_i + @tcp6count.to_i end
uw_udpused()
click to toggle source
Show the number of UDP connections used
# File lib/usagewatch_ext/skcript_linux.rb, line 93 def self.uw_udpused if File.exists?("/proc/net/sockstat") File.open("/proc/net/sockstat", "r") do |ipv4| @sockstat = ipv4.read end @udp4data = @sockstat.split @udp4count = @udp4data[16] end if File.exists?("/proc/net/sockstat6") File.open("/proc/net/sockstat6", "r") do |ipv6| @sockstat6 = ipv6.read end @udp6data = @sockstat6.split @udp6count = @udp6data[5] end @totaludpused = @udp4count.to_i + @udp6count.to_i end
Private Class Methods
to_gb(bytes)
click to toggle source
# File lib/usagewatch_ext/mac.rb, line 156 def self.to_gb(bytes) (bytes/1024)/1024 end
top(lines)
click to toggle source
# File lib/usagewatch_ext/mac.rb, line 146 def self.top(lines) ps = `ps aux | awk '{print #{lines.join(", ")}}' | sort -k2nr | head -n 10` array = [] ps.each_line do |line| line = line.chomp.split(" ") array << [line.first.gsub(/[\[\]]/, "").split("/").last, line.last] end array end