class Sidekiq::Stats
Public Class Methods
new()
click to toggle source
# File lib/sidekiq/api.rb, line 7 def initialize fetch_stats! end
Public Instance Methods
dead_size()
click to toggle source
# File lib/sidekiq/api.rb, line 27 def dead_size stat :dead_size end
default_queue_latency()
click to toggle source
# File lib/sidekiq/api.rb, line 43 def default_queue_latency stat :default_queue_latency end
enqueued()
click to toggle source
# File lib/sidekiq/api.rb, line 31 def enqueued stat :enqueued end
failed()
click to toggle source
# File lib/sidekiq/api.rb, line 15 def failed stat :failed end
fetch_stats!()
click to toggle source
# File lib/sidekiq/api.rb, line 51 def fetch_stats! pipe1_res = Sidekiq.redis do |conn| conn.pipelined do conn.get('stat:processed'.freeze) conn.get('stat:failed'.freeze) conn.zcard('schedule'.freeze) conn.zcard('retry'.freeze) conn.zcard('dead'.freeze) conn.scard('processes'.freeze) conn.lrange('queue:default'.freeze, -1, -1) conn.smembers('processes'.freeze) conn.smembers('queues'.freeze) end end pipe2_res = Sidekiq.redis do |conn| conn.pipelined do pipe1_res[7].each {|key| conn.hget(key, 'busy'.freeze) } pipe1_res[8].each {|queue| conn.llen("queue:#{queue}") } end end s = pipe1_res[7].size workers_size = pipe2_res[0...s].map(&:to_i).inject(0, &:+) enqueued = pipe2_res[s..-1].map(&:to_i).inject(0, &:+) default_queue_latency = if (entry = pipe1_res[6].first) Time.now.to_f - Sidekiq.load_json(entry)['enqueued_at'.freeze] else 0 end @stats = { processed: pipe1_res[0].to_i, failed: pipe1_res[1].to_i, scheduled_size: pipe1_res[2], retry_size: pipe1_res[3], dead_size: pipe1_res[4], processes_size: pipe1_res[5], default_queue_latency: default_queue_latency, workers_size: workers_size, enqueued: enqueued } end
processed()
click to toggle source
# File lib/sidekiq/api.rb, line 11 def processed stat :processed end
processes_size()
click to toggle source
# File lib/sidekiq/api.rb, line 35 def processes_size stat :processes_size end
queues()
click to toggle source
# File lib/sidekiq/api.rb, line 47 def queues Sidekiq::Stats::Queues.new.lengths end
reset(*stats)
click to toggle source
# File lib/sidekiq/api.rb, line 96 def reset(*stats) all = %w(failed processed) stats = stats.empty? ? all : all & stats.flatten.compact.map(&:to_s) mset_args = [] stats.each do |stat| mset_args << "stat:#{stat}" mset_args << 0 end Sidekiq.redis do |conn| conn.mset(*mset_args) end end
retry_size()
click to toggle source
# File lib/sidekiq/api.rb, line 23 def retry_size stat :retry_size end
scheduled_size()
click to toggle source
# File lib/sidekiq/api.rb, line 19 def scheduled_size stat :scheduled_size end
workers_size()
click to toggle source
# File lib/sidekiq/api.rb, line 39 def workers_size stat :workers_size end
Private Instance Methods
stat(s)
click to toggle source
# File lib/sidekiq/api.rb, line 112 def stat(s) @stats[s] end