2017-12-15 10 views
0

우리는 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에 실패했습니다.

+0

안녕하세요, 그런 기능이 Monit에는 존재하지 않는다고 생각합니다. 일반적으로 init/service/daemon 스크립트는 타임 아웃을 처리하고 해당 조치를 취합니다. 시간 제한을위한 중지 스크립트를 사용자 정의하고 조치 자체를 취하지 말고, Monit 레벨 – TheCodeKiller

+0

에서 깨끗한 솔루션을 예측할 수는 없습니다. @TheCodeKiller -> 귀하의 의견에 감사드립니다. 나는 당신이 문제를 해결하도록 제안한 것과 같은 방식으로 행동했다. 중지 스크립트를 사용자 정의했습니다 (제한 시간 내에 중지하지 않으면 sidekiq 프로세스가 강제 종료됩니다.) – Karthy

답변

0

monit에서 정지 또는 시작 프로그램의 실패를 캡처하는 옵션이 없다고 생각합니다. 따라서 우리는 각각의 프로그램 자체에서 이러한 실패 사례를 처리해야합니다. 내 정지 프로그램이 실패하면, 왜 실패했는지 찾아야하며, 정지 프로그램 자체에서 해당 조치를 취해야합니다.

내 원래 문제는 사이드 키크 프로세스가 타임 아웃 시간 내에 죽지 않으므로 프로그램 중지에 실패했습니다. 이 문제를 해결하기 위해 sidekiq 프로세스가 제한 시간 내에 종료되지 않으면 프로세스를 강제 종료하는 중지 프로그램을 처리했습니다.

+0

추가 정보를 추가하려면 질문에 편집 링크를 사용하십시오. 답변 게시 버튼은 질문에 대한 완전한 대답을 위해서만 사용되어야합니다. - [검토 중] (리뷰/저품절 게시물/18711012) – diceler

+0

이 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. - [리뷰에서] (리뷰/저품절 게시물/18711012) –