Class: NetuitiveRailsAgent::Scheduler
- Inherits:
-
Object
- Object
- NetuitiveRailsAgent::Scheduler
- Defined in:
- lib/netuitive_rails_agent/scheduler.rb
Instance Attribute Summary collapse
-
#gc_stats_collector ⇒ Object
readonly
Returns the value of attribute gc_stats_collector.
-
#interaction ⇒ Object
readonly
Returns the value of attribute interaction.
-
#object_space_collector ⇒ Object
readonly
Returns the value of attribute object_space_collector.
Instance Method Summary collapse
- #collect_metrics ⇒ Object
-
#initialize(interaction) ⇒ Scheduler
constructor
A new instance of Scheduler.
- #interval ⇒ Object
- #start_schedule ⇒ Object
Constructor Details
#initialize(interaction) ⇒ Scheduler
Returns a new instance of Scheduler.
6 7 8 9 10 |
# File 'lib/netuitive_rails_agent/scheduler.rb', line 6 def initialize(interaction) @gc_stats_collector = NetuitiveRailsAgent::GCStatsCollector.new(interaction) @object_space_collector = NetuitiveRailsAgent::ObjectSpaceStatsCollector.new(interaction) @interaction = interaction end |
Instance Attribute Details
#gc_stats_collector ⇒ Object (readonly)
Returns the value of attribute gc_stats_collector.
3 4 5 |
# File 'lib/netuitive_rails_agent/scheduler.rb', line 3 def gc_stats_collector @gc_stats_collector end |
#interaction ⇒ Object (readonly)
Returns the value of attribute interaction.
5 6 7 |
# File 'lib/netuitive_rails_agent/scheduler.rb', line 5 def interaction @interaction end |
#object_space_collector ⇒ Object (readonly)
Returns the value of attribute object_space_collector.
4 5 6 |
# File 'lib/netuitive_rails_agent/scheduler.rb', line 4 def object_space_collector @object_space_collector end |
Instance Method Details
#collect_metrics ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/netuitive_rails_agent/scheduler.rb', line 34 def collect_metrics NetuitiveRailsAgent::NetuitiveLogger.log.debug 'collecting schedule metrics' begin gc_stats_collector.collect if NetuitiveRailsAgent::ConfigManager.gc_enabled object_space_collector.collect if NetuitiveRailsAgent::ConfigManager.object_space_enabled rescue => e NetuitiveRailsAgent::NetuitiveLogger.log.error "unable to collect schedule metrics: message:#{e.message} backtrace:#{e.backtrace}" end end |
#interval ⇒ Object
28 29 30 31 32 |
# File 'lib/netuitive_rails_agent/scheduler.rb', line 28 def interval interval = interaction.interval interval = 60 if interval.nil? interval end |
#start_schedule ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/netuitive_rails_agent/scheduler.rb', line 12 def start_schedule NetuitiveRailsAgent::NetuitiveLogger.log.debug 'starting schedule' Thread.new do loop do begin collect_metrics sleep_time = interval NetuitiveRailsAgent::NetuitiveLogger.log.debug "scheduler sleeping for: #{sleep_time}" sleep(sleep_time) rescue => e NetuitiveRailsAgent::NetuitiveLogger.log.error "error during schedule: #{e.message}, backtrace: #{e.backtrace}" end end end end |