У меня запущен специальный процесс (приложение с эликсиром). Я хочу настроить для него 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]
Я не знаю, почему он не может выполнить процесс запуска в состоянии сбоя, как ожидалось. Может ли кто-нибудь просмотреть это и сообщить мне, если я что-нибудь упустил?