2012-06-27 29 views
46

Tôi quan tâm đến việc thiết lập dịch vụ giám sát sẽ trang cho tôi bất cứ khi nào có quá nhiều công việc trong hàng đợi Resque (Tôi có khoảng 6 hàng đợi, tôi sẽ có các số khác nhau cho mỗi hàng đợi). Tôi cũng muốn thiết lập một dịch vụ giám sát rất giống nhau sẽ cảnh báo tôi khi tôi vượt quá một số lượng công việc thất bại nhất định trong hàng đợi của tôi.Lập trình có số lượng công việc trong hàng đợi Resque

Câu hỏi của tôi là, có rất nhiều khóa và nhầm lẫn mà tôi thấy được liên kết với Resque trên máy chủ redis của tôi. Tôi không nhất thiết phải nhìn thấy một cách thẳng về phía trước để có được số lượng công việc trên mỗi hàng đợi hoặc số lượng công việc thất bại. Có cách nào nhỏ nhặt để lấy dữ liệu này từ redis không?

Trả lời

112

vâng nó khá dễ dàng, vì bạn đang sử dụng Resque gem:

require 'resque' 

Resque.info 

sẽ trả về một băm

ví dụ/=>

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

Vì vậy, để có được số lượng công việc thất bại , chỉ cần sử dụng:

Resque.info[:failed] 

mà sẽ cung cấp cho => 8761 #in ví dụ của tôi

Để có được hàng đợi sử dụng:

Resque.queues 

này trả về một mảng

ví dụ/=>

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

Bạn sau đó có thể tìm số lượng việc làm trên mỗi hàng đợi:

Resque.size(queue_name) 

ví dụ: Resque.size("superQ") hoặc Resque.size(Resque.queues[0]) .....

HTH?

+1

Điều này thật tuyệt vời. Cảm ơn bạn! – randombits

+1

Cảm ơn bài đăng rất hữu ích – vinothini

+1

Câu trả lời hay, cảm ơn. – sa125

7

Đây là tập lệnh bash sẽ theo dõi tổng số công việc đã xếp hàng và số lượng công việc thất bại.

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 

Đây là dành cho Resque 1.X, 2.0 có thể có các tên khóa khác nhau.

Các vấn đề liên quan