Class: Sidekiq::Monitor::Status

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq/monitor.rb

Defined Under Namespace

Classes: QUEUE_STRUCT

Constant Summary collapse

VALID_SECTIONS =
%w[all version overview processes queues]
COL_PAD =
2

Instance Method Summary collapse

Instance Method Details

#allObject



23
24
25
26
27
28
29
30
31
# File 'lib/sidekiq/monitor.rb', line 23

def all
  version
  puts
  overview
  puts
  processes
  puts
  queues
end

#display(section = nil) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/sidekiq/monitor.rb', line 11

def display(section = nil)
  section ||= "all"
  unless VALID_SECTIONS.include? section
    puts "I don't know how to check the status of '#{section}'!"
    puts "Try one of these: #{VALID_SECTIONS.join(", ")}"
    return
  end
  send(section)
rescue => e
  puts "Couldn't get status: #{e}"
end

#overviewObject



38
39
40
41
42
43
44
45
46
47
# File 'lib/sidekiq/monitor.rb', line 38

def overview
  puts "---- Overview ----"
  puts "  Processed: #{delimit stats.processed}"
  puts "     Failed: #{delimit stats.failed}"
  puts "       Busy: #{delimit stats.workers_size}"
  puts "   Enqueued: #{delimit stats.enqueued}"
  puts "    Retries: #{delimit stats.retry_size}"
  puts "  Scheduled: #{delimit stats.scheduled_size}"
  puts "       Dead: #{delimit stats.dead_size}"
end

#processesObject



49
50
51
52
53
54
55
56
57
58
# File 'lib/sidekiq/monitor.rb', line 49

def processes
  puts "---- Processes (#{process_set.size}) ----"
  process_set.each_with_index do |process, index|
    puts "#{process["identity"]} #{tags_for(process)}"
    puts "  Started: #{Time.at(process["started_at"])} (#{time_ago(process["started_at"])})"
    puts "  Threads: #{process["concurrency"]} (#{process["busy"]} busy)"
    puts "   Queues: #{split_multiline(process["queues"].sort, pad: 11)}"
    puts "" unless (index + 1) == process_set.size
  end
end

#queuesObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/sidekiq/monitor.rb', line 60

def queues
  puts "---- Queues (#{queue_data.size}) ----"
  columns = {
    name: [:ljust, (["name"] + queue_data.map(&:name)).map(&:length).max + COL_PAD],
    size: [:rjust, (["size"] + queue_data.map(&:size)).map(&:length).max + COL_PAD],
    latency: [:rjust, (["latency"] + queue_data.map(&:latency)).map(&:length).max + COL_PAD]
  }
  columns.each { |col, (dir, width)| print col.to_s.upcase.public_send(dir, width) }
  puts
  queue_data.each do |q|
    columns.each do |col, (dir, width)|
      print q.send(col).public_send(dir, width)
    end
    puts
  end
end

#versionObject



33
34
35
36
# File 'lib/sidekiq/monitor.rb', line 33

def version
  puts "Sidekiq #{Sidekiq::VERSION}"
  puts Time.now.utc
end