Class: NewRelic::Agent::Samplers::MemorySampler
- Inherits:
-
NewRelic::Agent::Sampler
- Object
- NewRelic::Agent::Sampler
- NewRelic::Agent::Samplers::MemorySampler
- Defined in:
- lib/new_relic/agent/samplers/memory_sampler.rb
Defined Under Namespace
Classes: Base, JavaHeapSampler, ProcStatus, ShellPS
Instance Attribute Summary collapse
-
#sampler ⇒ Object
Returns the value of attribute sampler.
Attributes inherited from NewRelic::Agent::Sampler
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize ⇒ MemorySampler
constructor
A new instance of MemorySampler.
- #platform ⇒ Object
- #poll ⇒ Object
Methods inherited from NewRelic::Agent::Sampler
enabled?, inherited, named, sampler_classes
Constructor Details
#initialize ⇒ MemorySampler
Returns a new instance of MemorySampler.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/new_relic/agent/samplers/memory_sampler.rb', line 16 def initialize @sampler = nil # macos, linux, solaris if defined? JRuby @sampler = JavaHeapSampler.new elsif platform.include?('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.include?('darwin9') # 10.5 @sampler = ShellPS.new('ps -o rsz') elsif /darwin(1|2)\d+/.match?(platform) # >= 10.6 @sampler = ShellPS.new('ps -o rss') elsif platform.include?('freebsd') @sampler = ShellPS.new('ps -o rss') elsif platform.include?('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.
14 15 16 |
# File 'lib/new_relic/agent/samplers/memory_sampler.rb', line 14 def sampler @sampler end |
Class Method Details
.platform ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/new_relic/agent/samplers/memory_sampler.rb', line 48 def self.platform if RUBY_PLATFORM.include?('java') begin NewRelic::Helper.run_command('uname -s').downcase rescue NewRelic::CommandRunFailedError, NewRelic::CommandExecutableNotFoundError 'unknown' end else RUBY_PLATFORM.downcase end end |
.supported_on_this_platform? ⇒ Boolean
44 45 46 |
# File 'lib/new_relic/agent/samplers/memory_sampler.rb', line 44 def self.supported_on_this_platform? defined?(JRuby) or platform =~ /linux|darwin|freebsd|solaris/ end |
Instance Method Details
#platform ⇒ Object
60 61 62 |
# File 'lib/new_relic/agent/samplers/memory_sampler.rb', line 60 def platform NewRelic::Agent::Samplers::MemorySampler.platform end |
#poll ⇒ Object
64 65 66 67 68 69 |
# File 'lib/new_relic/agent/samplers/memory_sampler.rb', line 64 def poll sample = @sampler.get_sample if sample NewRelic::Agent.record_metric('Memory/Physical', sample) end end |