2012-06-27 13 views
46

Sono interessato ad impostare un servizio di monitoraggio che effettuerà una pagina quando ci sono troppi lavori nella coda Resque (ho circa 6 code, avrò numeri diversi per ogni coda). Voglio anche configurare un servizio di monitoraggio molto simile che mi avviserà quando supererò una certa quantità di lavori falliti nella mia coda.Programmare il numero di lavori in una coda di resque

La mia domanda è, c'è un sacco di chiavi e confusione che vedo affiliato con Resque sul mio server redis. Non vedo necessariamente un modo semplice per ottenere un conteggio dei lavori per coda o il numero di lavori falliti. C'è attualmente un modo banale per prendere questi dati dai redis?

risposta

112

sì, è abbastanza facile, dato che si sta utilizzando il Resque gem:

require 'resque' 

Resque.info 

restituirà un hash

es/=>

{ 
     :pending => 54338, 
     :processed => 12772, 
     :queues => 2, 
     :workers => 0, 
     :working => 0, 
     :failed => 8761, 
     :servers => [ 
     [0] "redis://192.168.1.10:6379/0" 
    ], 
    :environment => "development" 
} 

Quindi, per ottenere il conteggio processo non riuscito , utilizzare semplicemente:

Resque.info[:failed] 

che darebbe => 8761 #in mio esempio

Per ottenere le code utilizzano:

Resque.queues 

questo restituisce una matrice

es/=>

[ 
    [0] "superQ", 
    [1] "anotherQ" 
] 

È può quindi trovare il numero di lavori per ogni coda:

Resque.size(queue_name) 

es/Resque.size("superQ") o Resque.size(Resque.queues[0]) .....

HTH?

+1

Questo è fantastico. Grazie! – randombits

+1

Grazie per il post molto utile – vinothini

+1

Ottima risposta, grazie. – sa125

7

Ecco uno script di bash che monitorerà il numero totale di lavori in coda e il numero di lavori non riusciti.

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 

Questo è per Resque 1.x, 2.0 potrebbe avere i nomi dei tasti differenti.

Problemi correlati