ran*_*its 55 ruby ruby-on-rails resque redis
我有兴趣设置一个监控服务,只要在Resque队列中有太多的工作就会给我发信息(我有大约6个队列,每个队列都有不同的编号).我还想设置一个非常相似的监控服务,当我在队列中超过一定数量的失败作业时,它会提醒我.
我的问题是,我在redis服务器上看到与Resque有关的密钥和混乱.我不一定能看到一种直接的方法来获得每个队列的作业数或失败的作业数.目前有一种从redis获取此数据的简单方法吗?
gef*_*gef 133
是的,这很容易,因为你正在使用Resque gem:
require 'resque'
Resque.info
Run Code Online (Sandbox Code Playgroud)
将返回哈希值
例如/ =>
{
:pending => 54338,
:processed => 12772,
:queues => 2,
:workers => 0,
:working => 0,
:failed => 8761,
:servers => [
[0] "redis://192.168.1.10:6379/0"
],
:environment => "development"
}
Run Code Online (Sandbox Code Playgroud)
因此,要获得失败的工作计数,只需使用:
Resque.info[:failed]
Run Code Online (Sandbox Code Playgroud)
在我的例子中,它会给=> 8761#
要使用队列:
Resque.queues
Run Code Online (Sandbox Code Playgroud)
这会返回一个数组
例如/ =>
[
[0] "superQ",
[1] "anotherQ"
]
Run Code Online (Sandbox Code Playgroud)
然后,您可以找到每个队列的作业数:
Resque.size(queue_name)
Run Code Online (Sandbox Code Playgroud)
例如/ Resque.size("superQ") 或 Resque.size(Resque.queues[0]) .....
HTH?
这是一个bash脚本,它将监视排队的作业总数和失败的作业数.
while :
do
let sum=0
let errors=$(redis-cli llen resque:failed)
for s in $(redis-cli keys resque:queue:*)
do
let sum=$sum+$(redis-cli llen $s)
done
echo $sum jobs queued, with $errors errors
sleep 1 # sleep 1 second, probably want to increase this
done
Run Code Online (Sandbox Code Playgroud)
这适用于Resque 1.X,2.0可能有不同的键名.
| 归档时间: |
|
| 查看次数: |
22693 次 |
| 最近记录: |