2013-10-31 3 views
0

때때로 rake 작업이 실패하는 경우가 있습니다. 나는 그것을 모니터하고 필요하다면 다시 시작하기 위해 monit을 사용하고 싶다.Ruby 프로그램에 대한 Monit 프로세스를 만들려면 어떻게해야합니까?

StackOverflow에서 다른 루비/모티 스레드를 읽었습니다. 내 경우는이 프로그램이 작동하려면 내 Rails 환경이 필요하다는 점에서 다릅니다. 그래서 지금은 그들에게 rake 개의 작업이 있습니다.

task(process_updates: :environment) do 
    `echo "#{Process.pid}" > #{Rails.root}/log/process_alerts.pid` 
    `echo "#{Process.ppid}" > #{Rails.root}/log/process_alerts.ppid` 
    SynchronizationService::process_alerts 
end 

SynchronizationService::process_alerts 이후, 나는 rake 작업으로이 떠나 않는 내 질문은, 작동하도록 레일을 환경이 필요합니다 : 그것은 전체가있어 여기에

, 나는 모니터링해야하는 작업 중 하나입니다? 아니면 내가 호출해야합니다 그리고 일부 * .rb 파일을 실행하는 다른 래퍼가 있습니까?

답변

1
MONIT는, PID를 실행 확인할 수 있습니다 당신이 작업을 실행할 때 PID를 만드는 때문에이 같은 모양해야 MONIT의 설정을 만들 수 있습니다

: 물론 RAILSROOT

check process alerts with pidfile RAILSROOT/log/process_alerts.pid 
    start program = "cd PATH_TO_APP; rake YOURTASK" with timeout 120 seconds 
    alert [email protected] on { nonexist, timeout } 

, PATH_TO_APPYOURTASK은 경로/레이크 작업과 일치해야합니다.

Monit은 pidfile 값을 사용하여 시스템에서 프로세스가 실행 중인지 확인하고 실행 프로세스를 찾을 수없는 경우 시작 프로그램 명령을 사용하여 프로세스를 시작합니다.