
monit에서 서비스가 정상이면 다른 모니터링 시스템(nagios)에 연결하기 위해 쉘 스크립트를 실행해야 합니다.
기본적으로 내가 달성해야 할 것은 서비스가 다시 시작될 때 monit이 경고를 보내고 서비스가 정상일 때 또 다른 경고를 보내도록 하는 것입니다.
나는 운없이 다음을 시도했습니다.
if 1 restarts within 1 cycles then exec "<send WARNING alert here>"
if 0 restarts within 5 cycles then exec "<send OK alert here>"
위의 내용은 "오류: 조치율 설명 ''OK''에 0 또는 음수 값이 허용되지 않습니다"에 대해 불평합니다.
if 1 restarts within 1 cycles then exec "<send WARNING alert here>"
else if succeeded for 5 cycles then exec "<send OK alert here>"
위의 내용은 "else"에 대해 불평합니다... 저는 "If X Restarts"가 "else"를 지원하지 않는다고 생각합니다.
이를 달성하기 위한 제안이 있습니까?
답변1
monit이 NAGIOS에 공급된다고 하셨는데, NAGIOS를 사용하여 무거운 작업(예: 알림 결정 및 전송)을 수행하는 것은 어떻습니까? monit이 재시작을 모니터링하는 경우, send_nsca
재시작이 발생했음을 NAGIOS에 알리는 데 사용할 수 있습니다 .
NAGIOS는 이를 단일 경고에 대해 알리도록 설계된 수동 서비스로 수신할 수 있지만 특정 기간(여기서는 60분) 동안 아무 소리도 들리지 않으면 다음을 반환하는 스크립트를 호출하도록 신선도 테스트로 정의됩니다. "0 OK"이므로 다시 시작 알림 후 해당 시간 동안 "OK"를 알립니다.
define service{
use <standard template>
host_name foo
service_description bar
active_checks_enabled 0
passive_checks_enabled 1
check_command no-restarts-ok
check_freshness 1
max_check_attempts 1
normal_check_interval 60
}
그리고
define command{
command_name no-restarts-ok
command_line $USER1$/check_dummy 0 OK
}