Je suis intéressé par la mise en place d'un service de surveillance qui me mettra en page chaque fois qu'il y aura trop de tâches dans la file d'attente Resque (j'ai environ 6 files d'attente, j'aurai des numéros différents pour chaque file d'attente). Je souhaite également configurer un service de surveillance très similaire qui m'alerte lorsque je dépasse un certain nombre de travaux ayant échoué dans ma file d'attente.
Ma question est, il y a beaucoup de clés et de confusion que je vois affilié à Resque sur mon serveur redis. Je ne vois pas nécessairement un moyen simple d'obtenir un nombre de travaux par file d'attente ou le nombre de travaux ayant échoué. Existe-t-il actuellement un moyen trivial d'extraire ces données de redis?
oui c'est assez facile, étant donné que vous utilisez Resque gem :
require 'resque'
Resque.info
retournera un hachage
par exemple/=>
{
:pending => 54338,
:processed => 12772,
:queues => 2,
:workers => 0,
:working => 0,
:failed => 8761,
:servers => [
[0] "redis://192.168.1.10:6379/0"
],
:environment => "development"
}
Donc, pour obtenir le nombre de tâches ayant échoué, utilisez simplement:
Resque.info[:failed]
ce qui donnerait => 8761 # dans mon exemple
Pour obtenir les files d'attente, utilisez:
Resque.queues
cela renvoie un tableau
par exemple/ =>
[
[0] "superQ",
[1] "anotherQ"
]
Vous pouvez alors trouver le nombre de travaux par file d'attente:
Resque.size(queue_name)
par exemple/Resque.size("superQ")
ou Resque.size(Resque.queues[0])
.....
HTH?
Voici un script bash qui surveillera le nombre total de travaux mis en file d'attente et le nombre de travaux ayant échoué.
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
Il s'agit de Resque 1.X, 2.0 peut avoir des noms de clé différents.