class Sidewatch::Sidekiq
Attributes
namespace[RW]
Public Class Methods
new(config = {})
click to toggle source
# File lib/sidewatch/sidekiq.rb, line 8 def initialize(config = {}) self.namespace = config.fetch(:namespace){ "Sidekiq" } ::Sidekiq.redis = config[:redis].symbolize_keys if config[:redis] end
Public Instance Methods
global_metrics()
click to toggle source
# File lib/sidewatch/sidekiq.rb, line 20 def global_metrics stats = sidekiq_stats metrics = [] [:failed, :enqueued, :processed, :retry_size, :scheduled_size].each do |stat| name = camelcase(stat) value = stats.send(stat) metrics << Metric.new(namespace: namespace, name: name, value: value, unit: "Count", dimensions: default_dimensions) end metrics end
metrics()
click to toggle source
# File lib/sidewatch/sidekiq.rb, line 13 def metrics metrics = [] metrics += global_metrics metrics += per_queue_metrics metrics end
per_queue_metrics()
click to toggle source
# File lib/sidewatch/sidekiq.rb, line 31 def per_queue_metrics metrics = [] sidekiq_queues.each do |queue| dimensions = default_dimensions.merge("QueueName" => queue.name) metrics << Metric.new(namespace: namespace, name: "Enqueued", value: queue.size, unit: "Count", dimensions: dimensions) metrics << Metric.new(namespace: namespace, name: "Latency", value: queue.latency, unit: "Seconds", dimensions: dimensions) end metrics end
Private Instance Methods
camelcase(term)
click to toggle source
# File lib/sidewatch/sidekiq.rb, line 66 def camelcase(term) string = term.to_s string.gsub(/(?:^|_)([a-z\d]*)/){ $1.capitalize } end
default_dimensions()
click to toggle source
# File lib/sidewatch/sidekiq.rb, line 62 def default_dimensions { "RedisURI" => redis_uri } end
redis_uri()
click to toggle source
# File lib/sidewatch/sidekiq.rb, line 51 def redis_uri # is there a simpler way to get this? uri = ::Sidekiq.redis {|redis| redis = redis.redis if redis.is_a?(Redis::Namespace) redis.client.id } uri = URI.parse(uri) uri.password = "*****" if uri.password uri.to_s end
sidekiq_queues()
click to toggle source
# File lib/sidewatch/sidekiq.rb, line 47 def sidekiq_queues ::Sidekiq::Queue.all end
sidekiq_stats()
click to toggle source
# File lib/sidewatch/sidekiq.rb, line 43 def sidekiq_stats ::Sidekiq::Stats.new end