web-dev-qa-db-fra.com

Obtenir par programme le nombre de travaux dans une file d'attente Resque

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?

55
randombits

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?

131
gef

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.

8
The Who