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