Class: OneApm::Collector::SamplerCollection
- Inherits:
-
Object
- Object
- OneApm::Collector::SamplerCollection
- Includes:
- Enumerable
- Defined in:
- lib/one_apm/collector/support/sampler_collection.rb
Instance Method Summary collapse
- #add_sampler(sampler_class) ⇒ Object
- #clear ⇒ Object
- #each(&blk) ⇒ Object
-
#initialize(event_listener) ⇒ SamplerCollection
constructor
A new instance of SamplerCollection.
- #load_samplers ⇒ Object
- #poll_samplers ⇒ Object
- #poller ⇒ Object
- #sampler_class_registered?(sampler_class) ⇒ Boolean
Constructor Details
#initialize(event_listener) ⇒ SamplerCollection
Returns a new instance of SamplerCollection.
11 12 13 14 15 |
# File 'lib/one_apm/collector/support/sampler_collection.rb', line 11 def initialize(event_listener) @samplers = [] @event_listener = event_listener @event_listener.subscribe(:before_harvest) { poll_samplers } end |
Instance Method Details
#add_sampler(sampler_class) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/one_apm/collector/support/sampler_collection.rb', line 47 def add_sampler(sampler_class) supported = sampler_class.supported_on_this_platform? enabled = sampler_class.enabled? if supported && enabled && !sampler_class_registered?(sampler_class) sampler = sampler_class.new sampler.setup_events(@event_listener) if sampler.respond_to?(:setup_events) sampler.set_poller(poller) if sampler.respond_to?(:set_poller) @samplers << sampler OneApm::Manager.logger.debug("Registered #{sampler_class.name} for harvest time sampling.") else OneApm::Manager.logger.debug("#{sampler_class.name} not supported on this platform.") end rescue OneApm::Collector::Sampler::Unsupported => e OneApm::Manager.logger.info("#{sampler_class.name} not available: #{e}") rescue => e OneApm::Manager.logger.error("Error registering sampler:", e) end |
#clear ⇒ Object
21 22 23 |
# File 'lib/one_apm/collector/support/sampler_collection.rb', line 21 def clear() @samplers.clear end |
#each(&blk) ⇒ Object
17 18 19 |
# File 'lib/one_apm/collector/support/sampler_collection.rb', line 17 def each(&blk) @samplers.each(&blk) end |
#load_samplers ⇒ Object
29 30 31 32 33 |
# File 'lib/one_apm/collector/support/sampler_collection.rb', line 29 def load_samplers Sampler.sampler_classes.each do |subclass| add_sampler(subclass) end end |
#poll_samplers ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/one_apm/collector/support/sampler_collection.rb', line 35 def poll_samplers @samplers.delete_if do |sampler| begin sampler.poll false rescue => e OneApm::Manager.logger.warn("Removing #{sampler} from list", e) true end end end |
#poller ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/one_apm/collector/support/sampler_collection.rb', line 65 def poller @pller ||= begin if OneApm::Collector::JrubyPoller.enable? OneApm::Collector::JrubyPoller.new elsif OneApm::Collector::ProcPoller.enable? OneApm::Collector::ProcPoller.new else OneApm::Collector::ShellPoller.new end end end |
#sampler_class_registered?(sampler_class) ⇒ Boolean
25 26 27 |
# File 'lib/one_apm/collector/support/sampler_collection.rb', line 25 def sampler_class_registered?(sampler_class) self.any? { |s| s.class == sampler_class } end |