Class: Wellness::Services::SidekiqService

Inherits:
Base
  • Object
show all
Defined in:
lib/wellness/services/sidekiq_service.rb

Overview

Author:

  • Matthew A. Johnston

Constant Summary collapse

KEYS =
%w(redis_stats uptime_in_days connected_clients used_memory_human used_memory_peak_human)

Instance Method Summary collapse

Methods inherited from Base

dependency

Constructor Details

#initialize(args = {}) ⇒ SidekiqService

Returns a new instance of SidekiqService.



9
10
11
# File 'lib/wellness/services/sidekiq_service.rb', line 9

def initialize(args={})
  @params = args
end

Instance Method Details

#callHash

Returns:

  • (Hash)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/wellness/services/sidekiq_service.rb', line 14

def call
  sidekiq_stats = Sidekiq::Stats.new

  queue = Sidekiq::Queue.new
  redis = Redis.new(@params.fetch(:redis))

  redis_stats  = redis.info.select { |k, _| KEYS.include?(k) }
  workers_size = redis.scard('workers').to_i

  redis.disconnect

  {
    'status'  => 'HEALTHY',
    'details' => {
      'processed'       => sidekiq_stats.processed,
      'failed'          => sidekiq_stats.failed,
      'busy'            => workers_size,
      'enqueued'        => sidekiq_stats.enqueued,
      'scheduled'       => sidekiq_stats.scheduled_size,
      'retries'         => sidekiq_stats.retry_size,
      'default_latency' => queue.latency,
      'redis'           => redis_stats
    }
  }
rescue => error
  {
    'status' => 'UNHEALTHY',
    'details' => {
      'error' => error.message
    }
  }
end