class OneApm::Collector::ShellPoller

Attributes

pid[RW]

Public Class Methods

kb_page_size() click to toggle source
# File lib/one_apm/collector/support/shell_poller.rb, line 22
def self.kb_page_size
  @size ||= `getconf PAGE_SIZE`.to_f / 1024.0 rescue 4.0
end

Public Instance Methods

cpu_utilization() click to toggle source
# File lib/one_apm/collector/support/shell_poller.rb, line 13
def cpu_utilization
  @pid = Process.pid
  ps_float('%cpu') / 100.0
end
memory() click to toggle source
# File lib/one_apm/collector/support/shell_poller.rb, line 9
def memory
  pids.inject(0.0){|m, pid| m + get_memory_by_pid(pid) }
end
to_s() click to toggle source
# File lib/one_apm/collector/support/shell_poller.rb, line 18
def to_s
  "ShellPoller from: ps -p #{pid}"
end

Protected Instance Methods

get_memory_by_pid(pid) click to toggle source
# File lib/one_apm/collector/support/shell_poller.rb, line 42
def get_memory_by_pid pid
  return 0.0 if pid.empty?
  @pid = pid
  poll_memory rescue 0.0
end
pgrp_id() click to toggle source
# File lib/one_apm/collector/support/shell_poller.rb, line 28
def pgrp_id
  Process.getpgrp
end
pids() click to toggle source
# File lib/one_apm/collector/support/shell_poller.rb, line 36
def pids
  @pids = pids_cmd.split(/\s+/).uniq rescue [Process.pid.to_s]
  @pids = [Process.pid.to_s] if @pids.empty?  
  @pids
end
pids_cmd() click to toggle source
# File lib/one_apm/collector/support/shell_poller.rb, line 32
def pids_cmd
  `ps -o pid,pgid -e | grep -w "#{pgrp_id}"`
end
poll_memory() click to toggle source
# File lib/one_apm/collector/support/shell_poller.rb, line 48
def poll_memory
  ps_float('rss') / 1024.0
end
ps_float(keyword) click to toggle source
# File lib/one_apm/collector/support/shell_poller.rb, line 52
def ps_float keyword
  `ps -o #{keyword}= -p #{pid}`.to_f
end