Class: Statue::SidekiqStatistics::SidekiqMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/statue/sidekiq_statistics.rb

Overview

Middleware for tracking common job run metrics

Instance Method Summary collapse

Instance Method Details

#call(worker, message, _queue) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/statue/sidekiq_statistics.rb', line 41

def call(worker, message, _queue)
  job_metric_name = Statue::SidekiqStatistics.job_metric_name(worker, message)

  if message["retry_count"]
    # Count retried jobs
    Statue.report_increment("#{job_metric_name}.retry")
  else
    # Track latency for new jobs only (we can't know since when the failed job is waiting)
    enqueued_at = Time.at(message["enqueued_at"])
    Statue.report_duration("#{job_metric_name}.latency", Time.now - enqueued_at)
  end

  Statue.report_duration(job_metric_name) do
    Statue.report_success_or_failure(job_metric_name) do
      yield
      true # We only count exceptions as failure
    end
  end
end