class NetuitiveRailsAgent::Scheduler

Attributes

gc_stats_collector[R]
interaction[R]
object_space_collector[R]

Public Class Methods

new(interaction) click to toggle source
# 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

Public Instance Methods

collect_metrics() click to toggle source
# File lib/netuitive_rails_agent/scheduler.rb, line 32
def collect_metrics
  NetuitiveRailsAgent::NetuitiveLogger.log.debug 'start collecting schedule metrics'
  NetuitiveRailsAgent::ErrorLogger.guard('error during collect_metrics') do
    gc_stats_collector.collect if NetuitiveRailsAgent::ConfigManager.gc_enabled
    object_space_collector.collect if NetuitiveRailsAgent::ConfigManager.object_space_enabled
  end
  NetuitiveRailsAgent::NetuitiveLogger.log.debug 'finshed collecting schedule metrics'
end
interval() click to toggle source
# File lib/netuitive_rails_agent/scheduler.rb, line 26
def interval
  interval = interaction.interval
  interval = 60 if interval.nil?
  interval
end
start_schedule() click to toggle source
# File lib/netuitive_rails_agent/scheduler.rb, line 12
def start_schedule
  NetuitiveRailsAgent::NetuitiveLogger.log.debug 'starting schedule'
  Thread.new do
    loop do
      NetuitiveRailsAgent::ErrorLogger.guard('error during schedule') do
        collect_metrics
        sleep_time = interval
        NetuitiveRailsAgent::NetuitiveLogger.log.debug "scheduler sleeping for: #{sleep_time}"
        sleep(sleep_time)
      end
    end
  end
end