우리는 monit을 통해 sidekiq 프로세스를 모니터링합니다. sidekiq 프로세스가 약 2GB의 메모리에 도달하면 프로세스를 다시 시작합니다. 90 초의 tiemout으로 정의 된 시작 및 정지 프로그램이 있습니다. 그러나 정지 프로그램이 실패합니다 (90 초의 시간 초과를 기다린 후).monit이 프로세스를 다시 시작할 때 monit stop 프로그램을 캡처하는 방법이 없습니다.
이것은 샘플 monit 구성입니다. 나는 중지 프로그램을 캡처를위한 올바른 구문을 잘 모릅니다
check process sidekiq
with pidfile /pathtopidfile
start program = "/bin/sh -c start sidekiq commmand" with timeout 90 seconds
stop program = "stop sidekiq command" with timeout 90 seconds
if totalmem is greater than 2GB for 3 cycles then restart
***## I need have some condition like this -> if "stop_program failed" then "do some action"***
end
P.S은 내가 MONIT 블로그를 확인하지만 난 할 수 없었다 .. MONIT에 실패했습니다.
안녕하세요, 그런 기능이 Monit에는 존재하지 않는다고 생각합니다. 일반적으로 init/service/daemon 스크립트는 타임 아웃을 처리하고 해당 조치를 취합니다. 시간 제한을위한 중지 스크립트를 사용자 정의하고 조치 자체를 취하지 말고, Monit 레벨 – TheCodeKiller
에서 깨끗한 솔루션을 예측할 수는 없습니다. @TheCodeKiller -> 귀하의 의견에 감사드립니다. 나는 당신이 문제를 해결하도록 제안한 것과 같은 방식으로 행동했다. 중지 스크립트를 사용자 정의했습니다 (제한 시간 내에 중지하지 않으면 sidekiq 프로세스가 강제 종료됩니다.) – Karthy