2012-06-27 17 views
46

Interesuje mnie ustawienie usługi monitorowania, która będzie strona strona mnie, gdy jest zbyt wiele zadań w kolejce Resque (mam około 6 kolejek, będę mieć różne numery dla każda kolejka). Chcę również skonfigurować bardzo podobną usługę monitorowania, która ostrzeże mnie, gdy przekroczę określoną liczbę nieudanych zadań w mojej kolejce.Programowo uzyskać liczbę zadań w kolejce Resque

Moje pytanie brzmi: istnieje wiele kluczy i zamieszania, które widzę w związku z Resque na moim serwerze redis. Niekoniecznie widzę prosty sposób, aby uzyskać liczbę zadań na kolejkę lub liczbę nieudanych prac. Czy istnieje obecnie trywialny sposób na pobranie tych danych z redis?

Odpowiedz

112

tak to dość łatwe, zważywszy, że używasz Resque gem:

require 'resque' 

Resque.info 

zwróci Hash

np/=>

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

Tak, aby uzyskać uszkodzony licznik pracy , po prostu użyj:

Resque.info[:failed] 

co dałoby => 8761 #W moim przykładzie

aby uzyskać kolejki użyć:

Resque.queues 

ta zwraca tablicę

np/=>

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

You może następnie znaleźć liczbę zadań w kolejce:

Resque.size(queue_name) 

np/Resque.size("superQ") lub Resque.size(Resque.queues[0]) .....

HTH?

+1

To jest niesamowite. Dziękuję Ci! – randombits

+1

Dzięki za bardzo przydatny post – vinothini

+1

Świetna odpowiedź, dzięki. – sa125

7

Oto skrypt bash, który będzie monitorować całkowitą liczbę oczekujących w kolejce i liczbę nieudanych prac.

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 

To jest dla Resque 1.X, 2.0 może mieć różne nazwy kluczy.

Powiązane problemy