39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/yabeda/resque.rb', line 39
def install!(**config)
config = DEFAULT_CONFIG.merge(config)
Yabeda.configure do
group :resque do
default_options = {aggregation: :most_recent}
gauge :jobs_pending, **default_options, comment: "Number of pending jobs"
gauge :jobs_processed, **default_options, comment: "Number of processed jobs"
gauge :jobs_failed, **default_options, comment: "Number of failed jobs"
if config[:jobs_processing_oldest_age_unit]
gauge :jobs_processing_oldest_age, **default_options, comment: "How long the longest processing job has been running in #{config[:jobs_processing_oldest_age_unit]}"
end
gauge :queue_sizes, tags: %i[queue], **default_options, comment: "Number of jobs in a specific queue"
gauge :workers_total, **default_options, comment: "Number of workers"
gauge :workers_working, **default_options, comment: "Number of workers busy"
if ::Yabeda::Resque.monitor_delayed?
gauge :jobs_delayed, **default_options, comment: "Number of delayed jobs"
end
end
collect do
resque_info = ::Resque.info
resque.jobs_failed.set({}, resque_info[:failed])
resque.jobs_pending.set({}, resque_info[:pending])
resque.jobs_processed.set({}, resque_info[:processed])
if config[:jobs_processing_oldest_age_unit]
value = ::Yabeda::Resque.jobs_processing_oldest_age(config)
resque.jobs_processing_oldest_age.set({}, value)
end
if ::Yabeda::Resque.monitor_delayed?
resque.jobs_delayed.set({}, ::Resque.count_all_scheduled_jobs)
end
::Resque.queue_sizes.each do |queue, size|
resque.queue_sizes.set({queue: queue}, size)
end
resque.workers_total.set({}, resque_info[:workers])
resque.workers_working.set({}, resque_info[:working])
end
end
end
|