Я хотел бы обработать своего рода цепное действие в monit.
- проверить процесс и немедленно предупредить.
- перезапустить процесс после определенного количества циклов.
Мои попытки (пока):
check process myprocess with pidfile /run/my.pid
start program = "/path/to/binary start" with timeout 60 seconds
stop program = "/path/to/binary stop" with timeout 60 seconds
if not exist for 3 cycles then restart
if not exist then alert
if 3 restarts within 3 cycles then timeout
Не предупреждает и остается в состоянии «работает» при сбое PID, но перезапускается после 3 циклов.
check process myprocess with pidfile /run/my.pid
start program = "/path/to/binary start" with timeout 60 seconds
stop program = "/path/to/binary stop" with timeout 60 seconds
if not exist for 3 cycles then restart
if children < 1 for 1 cycles then alert
if 3 restarts within 3 cycles then timeout
Нет предупреждений о дочерних элементах ‹ 1, но перезапустите после 5.
monit.log
[CEST Aug 1 15:09:30] error : 'myprocess' process is not running
сводка монитора
Process 'myprocess' Running
Вот часть ist monit -v:
Existence = if does not exist 3 times within 3 cycle(s) then restart else
if succeeded 1 times within 1 cycle(s) then alert
Pid = if changed 1 times within 1 cycle(s) then alert
Ppid = if changed 1 times within 1 cycle(s) then alert
Children = if less than 1 1 times within 1 cycle(s) then alert else if
succeeded 1 times within 1 cycle(s) then alert
Timeout = If restarted 3 times within 3 cycle(s) then unmonitor
Итак, вопрос: можно ли отправить оповещение и изменить статус на «не работает» в течение 1 цикла и перезапустить через 3?