class Sidekiq::Stats
Public Class Methods
new()
click to toggle source
# File lib/sidekiq/api.rb, line 21 def initialize fetch_stats! end
Public Instance Methods
dead_size()
click to toggle source
# File lib/sidekiq/api.rb, line 41 def dead_size stat :dead_size end
default_queue_latency()
click to toggle source
# File lib/sidekiq/api.rb, line 57 def default_queue_latency stat :default_queue_latency end
enqueued()
click to toggle source
# File lib/sidekiq/api.rb, line 45 def enqueued stat :enqueued end
failed()
click to toggle source
# File lib/sidekiq/api.rb, line 29 def failed stat :failed end
fetch_stats!()
click to toggle source
# File lib/sidekiq/api.rb, line 65 def fetch_stats! pipe1_res = Sidekiq.redis do |conn| conn.pipelined do conn.get('stat:processed') conn.get('stat:failed') conn.zcard('schedule') conn.zcard('retry') conn.zcard('dead') conn.scard('processes') conn.lrange('queue:default', -1, -1) end end processes = Sidekiq.redis do |conn| sscan(conn, 'processes') end queues = Sidekiq.redis do |conn| sscan(conn, 'queues') end pipe2_res = Sidekiq.redis do |conn| conn.pipelined do processes.each {|key| conn.hget(key, 'busy') } queues.each {|queue| conn.llen("queue:#{queue}") } end end s = processes.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) job = Sidekiq.load_json(entry) rescue {} now = Time.now.to_f thence = job['enqueued_at'] || now now - thence 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 25 def processed stat :processed end
processes_size()
click to toggle source
# File lib/sidekiq/api.rb, line 49 def processes_size stat :processes_size end
queues()
click to toggle source
# File lib/sidekiq/api.rb, line 61 def queues Sidekiq::Stats::Queues.new.lengths end
reset(*stats)
click to toggle source
# File lib/sidekiq/api.rb, line 119 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 37 def retry_size stat :retry_size end
scheduled_size()
click to toggle source
# File lib/sidekiq/api.rb, line 33 def scheduled_size stat :scheduled_size end
workers_size()
click to toggle source
# File lib/sidekiq/api.rb, line 53 def workers_size stat :workers_size end
Private Instance Methods
stat(s)
click to toggle source
# File lib/sidekiq/api.rb, line 135 def stat(s) @stats[s] end