Module: Resque::Plugins::RedCrossMonitor

Defined in:
lib/red_cross/resque/plugins/red_cross_monitor.rb

Instance Method Summary collapse

Instance Method Details

#after_enqueue_send_monitor_data(*args) ⇒ Object



27
28
29
# File 'lib/red_cross/resque/plugins/red_cross_monitor.rb', line 27

def after_enqueue_send_monitor_data(*args)
  send_metrics('after_enqueue', *args)
end

#after_perform_actions(*args) ⇒ Object



36
37
38
39
40
# File 'lib/red_cross/resque/plugins/red_cross_monitor.rb', line 36

def after_perform_actions(*args)
  ::RedCross.flush
  @red_cross_job_end_time = Time.now()
  send_metrics('performed', *args)
end

#after_schedule_send_monitor_data(*args) ⇒ Object



15
16
17
# File 'lib/red_cross/resque/plugins/red_cross_monitor.rb', line 15

def after_schedule_send_monitor_data(*args)
  send_metrics('after_schedule', *args)
end

#before_delayed_enqueue_send_monitor_data(*args) ⇒ Object



19
20
21
# File 'lib/red_cross/resque/plugins/red_cross_monitor.rb', line 19

def before_delayed_enqueue_send_monitor_data(*args)
  send_metrics('before_delayed_enqueue', *args)
end

#before_enqueue_send_monitor_data(*args) ⇒ Object



23
24
25
# File 'lib/red_cross/resque/plugins/red_cross_monitor.rb', line 23

def before_enqueue_send_monitor_data(*args)
  send_metrics('before_enqueue', *args)
end

#before_perform_send_monitor_data(*args) ⇒ Object



31
32
33
34
# File 'lib/red_cross/resque/plugins/red_cross_monitor.rb', line 31

def before_perform_send_monitor_data(*args)
  @red_cross_job_start_time = Time.now()
  send_metrics('before_perform', *args)
end

#before_schedule_send_monitor_data(*args) ⇒ Object



11
12
13
# File 'lib/red_cross/resque/plugins/red_cross_monitor.rb', line 11

def before_schedule_send_monitor_data(*args)
  send_metrics('before_schedule', *args)
end

#default_event_properties(*args) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/red_cross/resque/plugins/red_cross_monitor.rb', line 47

def default_event_properties(*args)
  event_properties = { class: self.name, fields: { } }
  event_properties[:exception] = args.shift.class.to_s if args.is_a?(Array) && args[0].is_a?(Exception)
  queue = Resque.queue_from_class(self)
  (queue && !queue.to_s.empty?) ? event_properties[:queue] = queue : event_properties[:class]
  event_job_method = job_method(*args)
  if (!event_job_method.nil? && ([String, Integer, Symbol].include? event_job_method.class))
    event_properties[:event_method] = event_job_method
  else
    event_properties[:event_method] = 'no_valid_job_method'
  end
  event_properties
end

#job_method(*args) ⇒ Object

Hash of properties for RedCross.monitor Please add count: MY_NUMBER in case your metric value differs 1



6
7
8
9
# File 'lib/red_cross/resque/plugins/red_cross_monitor.rb', line 6

def job_method(*args)
  #Add the method that triggered by the job
  'no_method_job'
end

#on_failure_send_monitor_data(e, *args) ⇒ Object



42
43
44
45
# File 'lib/red_cross/resque/plugins/red_cross_monitor.rb', line 42

def on_failure_send_monitor_data(e, *args)
  @red_cross_job_end_time = Time.now()
  send_metrics('failed', *args)
end

#send_metrics(job_status, *args) ⇒ Object



61
62
63
64
65
# File 'lib/red_cross/resque/plugins/red_cross_monitor.rb', line 61

def send_metrics(job_status, *args)
  event_properties = default_event_properties(*args)
  event_properties[:fields][:run_time] = ((@red_cross_job_end_time.to_f - @red_cross_job_start_time.to_f)*1000).to_i if %w(performed failed).include? job_status
  ::RedCross.monitor_track(event: 'resque', properties: event_properties.merge({ job_status: job_status }))
end