Sha256: fe7ee235d220aa160e94f952d966f910ebc25fb9217cf5a4f09c48930803ddff

Contents?: true

Size: 1.57 KB

Versions: 27

Compression:

Stored size: 1.57 KB

Contents

require 'sidekiq/api'
require 'roo_on_rails/sidekiq/queue_latency'
require 'roo_on_rails/sidekiq/process_scaling'
require 'roo_on_rails/sidekiq/settings'
require 'roo_on_rails/statsd'

# Reports Sidekiq queue metrics for queues configured within the current Sidekiq process
# i.e. queues returned by `RooOnRails::Sidekiq::Settings.queues`
# To enable reporting for custom queues, ensure your process is running the monitoring
# queue e.g. `SIDEKIQ_QUEUES="new-queue:5seconds,monitoring" bundle exec sidekiq`

module RooOnRails
  module Sidekiq
    class MetricsWorker
      include ::Sidekiq::Worker

      sidekiq_options queue: 'monitoring', retry: false

      def perform
        RooOnRails.statsd.batch do |stats|
          queues = QueueLatency.queues
          queue_stats(stats, queues)
          process_stats(stats, queues)
        end
      end

      private

      def queue_stats(stats, queues)
        queues.each do |queue|
          tags = ["queue:#{queue.name}"]
          stats.gauge('jobs.queue.size', queue.size, tags: tags)
          stats.gauge('jobs.queue.latency', queue.latency, tags: tags)
          stats.gauge('jobs.queue.normalised_latency', queue.normalised_latency, tags: tags)
        end
      end

      def process_stats(stats, queues)
        process_stats = ProcessScaling.new(queues)
        stats.gauge('jobs.processes.max_normalised_latency', process_stats.max_normalised_latency)
        stats.gauge('jobs.processes.requested', process_stats.requested_processes)
        stats.gauge('jobs.processes.current', process_stats.current_processes)
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
roo_on_rails-2.2.2 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-2.2.1 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-2.2.0 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-2.1.2 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-2.1.0 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-2.0.0.pre.pre.2 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-2.0.0.pre.pre.1 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.22.0 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.21.0 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.20.0 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.19.0 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.18.0 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.17.0 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.16.2 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.16.1 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.16.0 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.15.0 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.14.0 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.13.1 lib/roo_on_rails/sidekiq/metrics_worker.rb
roo_on_rails-1.13.0 lib/roo_on_rails/sidekiq/metrics_worker.rb