Назад | Перейти на главную страницу

Монит бросает неудачный тест протокола [HTTP] вместо запуска процесса

У меня запущен специальный процесс (приложение с эликсиром). Я хочу настроить для него monit. Я настраиваю проверку монитора в /etc/monit.d следующим образом:

set daemon 30

check host meraj-pc with address 192.168.3.124
    start program = "/meraj/app/ex_app/check_port.sh start"
    stop program = "/meraj/app/ex_app/check_port.sh stop"

    if failed port 4000 type tcp protocol http then start

И файл check_port.sh:

case $1 in
     start)
            sh /meraj/app/ex_app/startup.sh & echo $! > /var/run/ex_app.pid ;
            ;;
     stop)
       pkill -F /var/run/ex_app.pid ;;
     *)
       echo "usage: checkport {start|stop}" ;;
    esac
    exit 0 

Хотя файл startup.sh содержит фактическую команду запуска для приложения elixir, например. mix clean && mix compile && iex -S mix phx.server

Теперь, когда запущен monit, он продолжает выдавать мне эту ошибку (в то время моя служба на порту 4000 не работает):

10 августа 10:40:48 meraj monit [28316]: «meraj-pc» не прошел тест протокола [HTTP] на [192.168.3.124]: 4000 [TCP / IP] - соединение отклонено 10 августа 10:40:48 meraj monit [28316]: начало meraj-pc: начало /meraj/app/ex_app/check_port.sh

Если приложение работает на 4000, оно показывает это сообщение в журналах мониторинга:

10 августа 10:43:19 meraj monit [28316]: соединение 'meraj-pc' успешно установлено на [192.168.3.124]: 4000 [TCP / IP]

Я не знаю, почему он не может выполнить процесс запуска в состоянии сбоя, как ожидалось. Может ли кто-нибудь просмотреть это и сообщить мне, если я что-нибудь упустил?