Skip to content

Instantly share code, notes, and snippets.

@libertyy
Last active August 29, 2015 14:19
Show Gist options
  • Save libertyy/f8053383b7e0f9e23bd6 to your computer and use it in GitHub Desktop.
Save libertyy/f8053383b7e0f9e23bd6 to your computer and use it in GitHub Desktop.
sidekiq_collectd.rb example
require 'sidekiq/api'
require 'collectd'
def get_metrics(sidekiq_stats)
metrics = Hash.new()
[:enqueued, :failed, :processed, :scheduled_size, :retry_size].each do |name|
metrics[name] = sidekiq_stats.send(name)
end
metrics
end
def get_queue_stats(sidekiq_stats)
sidekiq_stats.queues
end
url = 'redis://redis.server.com:6379'
Sidekiq.configure_client do |config|
config.redis = { :url => url }
end
sidekiqer = Sidekiq::Stats.new
Collectd.add_server(10, 'logstash.server.com', 25826)
stats = Collectd.sidekiq(:my_application)
metrics_old = get_metrics(sidekiqer)
loop do
sleep 5
get_queue_stats(sidekiqer).each { |qname, val|
stats.queue_length(qname).gauge = val
}
get_metrics(sidekiqer).each { |qname, val|
delta = val - metrics_old[qname]
stats.sidekiq_metrics(qname).counter = delta
metrics_old[qname] = val
}
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment