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