development

Resque 대기열의 작업 수를 프로그래밍 방식으로 가져옵니다.

big-blog 2021. 1. 5. 21:04
반응형

Resque 대기열의 작업 수를 프로그래밍 방식으로 가져옵니다.


Resque 대기열에 작업이 너무 많을 때마다 호출되는 모니터링 서비스를 설정하는 데 관심이 있습니다 (대기열이 약 6 개이며 각 대기열에 대해 다른 번호를 지정하겠습니다). 또한 대기열에서 특정 양의 실패한 작업을 초과하면 경고하는 매우 유사한 모니터링 서비스를 설정하고 싶습니다.

내 질문은 내 redis 서버에서 Resque와 관련된 많은 키와 혼란이 있다는 것입니다. 대기열 당 작업 수 또는 실패한 작업 수를 가져 오는 간단한 방법을 반드시 확인하지는 않습니다. 현재 redis에서이 데이터를 가져 오는 간단한 방법이 있습니까?


예, Resque gem을 사용하고 있다면 매우 쉽습니다 .

require 'resque'

Resque.info 

해시를 반환합니다

예 / =>

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

따라서 실패한 작업 수를 얻으려면 다음을 사용하십시오.

Resque.info[:failed]

내 예에서 => 8761 #

큐를 얻으려면 다음을 사용하십시오.

Resque.queues

이것은 배열을 반환합니다

예 / =>

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

그런 다음 대기열 당 작업 수를 찾을 수 있습니다.

Resque.size(queue_name)

예 / Resque.size("superQ")또는 Resque.size(Resque.queues[0]).....

HTH?


다음은 대기열에있는 총 작업 수와 실패한 작업 수를 모니터링하는 bash 스크립트입니다.

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

이것은 Resque 1.X 용이며 2.0은 다른 키 이름을 가질 수 있습니다.

참조 URL : https://stackoverflow.com/questions/11235318/programmatically-get-the-number-of-jobs-in-a-resque-queue

반응형