Module: Yabeda::SolidQueue

Defined in:
lib/yabeda/solid_queue.rb

Class Method Summary collapse

Class Method Details

.install!Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/yabeda/solid_queue.rb', line 3

def self.install!
  Yabeda.configure do
    group :solid_queue

    gauge :jobs_failed_count, comment: "Number of failed jobs"
    gauge :jobs_unreleased_count, comment: "Number of claimed jobs that don't belong to any process"
    gauge :jobs_scheduled_and_delayed_count, comment: "Number of scheduled jobs that have over 5 minutes delay"
    gauge :recurring_tasks_count, comment: "Number of recurring jobs scheduled"
    gauge :recurring_tasks_delayed_count, comment: "Number of recurring jobs that haven't been enqueued within their schedule"

    collect do
      if ::SolidQueue.supervisor?
        solid_queue.jobs_failed_count.set({}, ::SolidQueue::FailedExecution.count)
        solid_queue.jobs_unreleased_count.set({}, ::SolidQueue::ClaimedExecution.where(process: nil).count)
        solid_queue.jobs_scheduled_and_delayed_count.set({}, ::SolidQueue::ScheduledExecution.where(scheduled_at: ..5.minutes.ago).count)
        solid_queue.recurring_tasks_count.set({}, ::SolidQueue::RecurringTask.count)
        solid_queue.recurring_tasks_delayed_count.set({}, ::SolidQueue::RecurringTask.count do |task|
          task.last_enqueued_time.present? && (task.previous_time - task.last_enqueued_time) > 5.minutes
        end)
      end
    end
  end
end