ruby-on-rails - redis rails
Obtenga programáticamente el número de trabajos en una cola de Resque (2)
Aquí hay un script de bash que controlará el número total de trabajos en cola y el número de trabajos fallidos.
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
Esto es para Resque 1.X, 2.0 puede tener diferentes nombres de clave.
Estoy interesado en configurar un servicio de monitoreo que me llame cuando haya demasiados trabajos en la cola de Resque (tengo alrededor de 6 colas, tendré diferentes números para cada cola) También quiero configurar un servicio de monitoreo muy similar que me avise cuando exceda una cierta cantidad de trabajos fallidos en mi cola.
Mi pregunta es, hay muchas claves y confusión que veo afiliada con Resque en mi servidor redis. No necesariamente veo una forma directa de obtener un recuento de trabajos por cola o el número de trabajos fallidos. ¿Existe actualmente una forma trivial de obtener estos datos de redis?
sí, es bastante fácil, dado que estás usando la gema Resque :
require ''resque''
Resque.info
devolverá un hash
por ejemplo / =>
{
:pending => 54338,
:processed => 12772,
:queues => 2,
:workers => 0,
:working => 0,
:failed => 8761,
:servers => [
[0] "redis://192.168.1.10:6379/0"
],
:environment => "development"
}
Así que para obtener el recuento de trabajos fallidos, simplemente use:
Resque.info[:failed]
lo que daría => 8761 #en mi ejemplo
Para obtener las colas use:
Resque.queues
esto devuelve una matriz
por ejemplo / =>
[
[0] "superQ",
[1] "anotherQ"
]
A continuación, puede encontrar el número de trabajos por cola:
Resque.size(queue_name)
ej. / Resque.size("superQ")
o Resque.size(Resque.queues[0])
.....
HTH?