Class: NewRelic::Agent::Samplers::MemorySampler
Defined Under Namespace
Classes: Base, JavaHeapSampler, ProcStatus, ShellPS
Instance Attribute Summary collapse
#id
Class Method Summary
collapse
Instance Method Summary
collapse
inherited, sampler_classes
Constructor Details
Returns a new instance of MemorySampler.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/new_relic/agent/samplers/memory_sampler.rb', line 14
def initialize
super :memory
if defined? JRuby
@sampler = JavaHeapSampler.new
elsif platform =~ /linux/
@sampler = ProcStatus.new
if !@sampler.can_run?
::NewRelic::Agent.logger.debug "Error attempting to use /proc/#{$$}/status file for reading memory. Using ps command instead."
@sampler = ShellPS.new("ps -o rsz")
else
::NewRelic::Agent.logger.debug "Using /proc/#{$$}/status for reading process memory."
end
elsif platform =~ /darwin9/ @sampler = ShellPS.new("ps -o rsz")
elsif platform =~ /darwin1\d+/ @sampler = ShellPS.new("ps -o rss")
elsif platform =~ /freebsd/
@sampler = ShellPS.new("ps -o rss")
elsif platform =~ /solaris/
@sampler = ShellPS.new("/usr/bin/ps -o rss -p")
end
raise Unsupported, "Unsupported platform for getting memory: #{platform}" if @sampler.nil?
raise Unsupported, "Unable to run #{@sampler}" unless @sampler.can_run?
end
|
Instance Attribute Details
#sampler ⇒ Object
Returns the value of attribute sampler.
12
13
14
|
# File 'lib/new_relic/agent/samplers/memory_sampler.rb', line 12
def sampler
@sampler
end
|
Class Method Details
45
46
47
48
49
50
51
|
# File 'lib/new_relic/agent/samplers/memory_sampler.rb', line 45
def self.platform
if RUBY_PLATFORM =~ /java/
%x[uname -s].downcase
else
RUBY_PLATFORM.downcase
end
end
|
41
42
43
|
# File 'lib/new_relic/agent/samplers/memory_sampler.rb', line 41
def self.supported_on_this_platform?
defined?(JRuby) or platform =~ /linux|darwin|freebsd|solaris/
end
|
Instance Method Details
#poll ⇒ Object
56
57
58
59
60
61
|
# File 'lib/new_relic/agent/samplers/memory_sampler.rb', line 56
def poll
sample = @sampler.get_sample
if sample
NewRelic::Agent.record_metric("Memory/Physical", sample)
end
end
|