Sha256: cb9c7d4c1678a5b1b7e49ea84a3178405fb04db2e950679a53a35565141683eb

Contents?: true

Size: 1.45 KB

Versions: 6

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

require 'redis'
require 'redis-client'
module Sidekiq
  module Instrument
    # Stores worker count with a key sidekiq_instrument_trace_workers:#{namespace}:in_queue
    # Values are hash having keys as worker names.
    class WorkerMetrics
      class_attribute :enabled, :namespace

      class << self
        def trace_workers_increment_counter(klass_name)
          return unless enabled?

          Sidekiq.redis do |redis|
            redis.hincrby(worker_metric_name, klass_name, 1)
          end
        end

        def trace_workers_decrement_counter(klass_name)
          return unless enabled?

          Sidekiq.redis do |redis|
            redis.hincrby(worker_metric_name, klass_name, -1)
          end
        end

        def reset_counters
          return unless enabled?

          Sidekiq.redis do |redis|
            all_keys = redis.hgetall(worker_metric_name)
            redis.hdel(worker_metric_name, all_keys.keys)
          end
        end

        def reset_counter(key)
          return unless enabled?

          Sidekiq.redis do |redis|
            redis.hdel(worker_metric_name, key)
          end
        end

        def workers_in_queue
          return unless enabled?
          Sidekiq.redis do |redis|
            redis.hgetall(worker_metric_name)
          end
        end

        def worker_metric_name
          "sidekiq_instrument_trace_workers:#{namespace}:in_queue"
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
sidekiq-instrument-0.7.5 lib/sidekiq/instrument/worker_metrics.rb
sidekiq-instrument-0.7.4 lib/sidekiq/instrument/worker_metrics.rb
sidekiq-instrument-0.7.3 lib/sidekiq/instrument/worker_metrics.rb
sidekiq-instrument-0.7.2 lib/sidekiq/instrument/worker_metrics.rb
sidekiq-instrument-0.7.1 lib/sidekiq/instrument/worker_metrics.rb
sidekiq-instrument-0.7.0 lib/sidekiq/instrument/worker_metrics.rb