Module: QueueClassicPlus::UpdateMetrics

Defined in:
lib/queue_classic_plus/update_metrics.rb

Class Method Summary collapse

Class Method Details

.jobs_queuedObject



29
30
31
32
33
# File 'lib/queue_classic_plus/update_metrics.rb', line 29

def self.jobs_queued
  sql_group_count "SELECT q_name AS group, COUNT(1)
          FROM queue_classic_jobs
          WHERE scheduled_at <= NOW() GROUP BY q_name"
end

.jobs_scheduledObject



35
36
37
38
39
# File 'lib/queue_classic_plus/update_metrics.rb', line 35

def self.jobs_scheduled
  sql_group_count "SELECT q_name AS group, COUNT(1)
          FROM queue_classic_jobs
          WHERE scheduled_at > NOW() GROUP BY q_name"
end

.late_countObject



41
42
43
44
45
46
# File 'lib/queue_classic_plus/update_metrics.rb', line 41

def self.late_count
  nb_late = execute("SELECT COUNT(1)
     FROM queue_classic_jobs
     WHERE scheduled_at < NOW() AND #{not_failed}")
  nb_late ? Integer(nb_late['count']) : 0
end

.metricsObject



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/queue_classic_plus/update_metrics.rb', line 17

def self.metrics
  {
    jobs_queued: jobs_queued,
    jobs_scheduled: jobs_scheduled,
    max_created_at: max_age("created_at", "created_at = scheduled_at"),
    max_locked_at: max_age("locked_at", "locked_at IS NOT NULL"),
    "max_created_at.unlocked" => max_age("locked_at", "locked_at IS NULL"),
    "jobs_delayed.lag" => max_age("scheduled_at"),
    "jobs_delayed.late_count" => late_count,
  }
end

.updateObject



3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/queue_classic_plus/update_metrics.rb', line 3

def self.update
  metrics.each do |name, values|
    if values.respond_to?(:each)
      values.each do |hash|
        hash.to_a.each do |(source, count)|
          Metrics.measure("qc.#{name}", count, source: source)
        end
      end
    else
      Metrics.measure("qc.#{name}", values)
    end
  end
end