Mackerel のサービスメトリックで Resque のキュー数を可視化してみる
Resque で非同期処理をすることが多いので、Mackerel のサービスメトリックで Resque のキュー数を可視化してみた。
ソースコード #
各キューごとのキュー数と、その合計値をサービスメトリックで登録するようにしている。
#!/usr/bin/ruby
require 'mackerel-client'
require 'optparse'
require 'redis'
params = ARGV.getopts('', 'host:localhost', 'port:6379', 'namespace:resque', 'api-key:', 'service-name:')
redis = Redis.new(host: params['host'], port: params['port'].to_i)
metrics = []
time = Time.now.to_i
total = 0
redis.smembers("#{params['namespace']}:queues").each do |queue|
value = redis.llen("#{params['namespace']}:queue:#{queue}").to_i
total += value
metrics << { name: "custom.resque.queue.#{queue}", time: time, value: value }
end
metrics << { name: 'custom.resque.pending', time: time, value: total }
mackerel = Mackerel::Client.new(mackerel_api_key: params['api-key'])
mackerel.post_service_metrics(params['service-name'], metrics)
使い方 #
cron で 1 分毎に実行する。