我对设置一个监控服务感兴趣,每当Resque队列中有太多作业(job)时,它都会呼叫我(我有大约6个队列,每个队列的编号都不同).我还想设置一个非常类似的监控服务,当我的队列中超过一定数量的失败作业(job)时,它会提醒我.
我的问题是,在我的redis服务器上,我看到了许多与Resque相关的密钥和混乱.我不一定能直接获得每个队列的作业(job)数或失败作业(job)数.目前有没有一种简单的方法从redis获取这些数据?
我对设置一个监控服务感兴趣,每当Resque队列中有太多作业(job)时,它都会呼叫我(我有大约6个队列,每个队列的编号都不同).我还想设置一个非常类似的监控服务,当我的队列中超过一定数量的失败作业(job)时,它会提醒我.
我的问题是,在我的redis服务器上,我看到了许多与Resque相关的密钥和混乱.我不一定能直接获得每个队列的作业(job)数或失败作业(job)数.目前有没有一种简单的方法从redis获取这些数据?
是的,考虑到你使用的是Resque gem:
require 'resque'
Resque.info
将返回一个哈希
e.g/ =>
{
:pending => 54338,
:processed => 12772,
:queues => 2,
:workers => 0,
:working => 0,
:failed => 8761,
:servers => [
[0] "redis://192.168.1.10:6379/0"
],
:environment => "development"
}
因此,要获得失败的作业(job)计数,只需使用:
Resque.info[:failed]
which would give => 8761 #in my example
要获取队列,请使用:
Resque.queues
这将返回一个数组
e.g./ =>
[
[0] "superQ",
[1] "anotherQ"
]
然后,您可以找到每个队列的作业(job)数:
Resque.size(queue_name)
e、 g/Resque.size("superQ")
或Resque.size(Resque.queues[0])
.....