Следите за laravel websocket с помощью monit centos

Я пытаюсь контролировать laravel-websocket с помощью monit вместо supervisord, потому что он предоставляет больше возможностей. Итак, в моем /home/rabter/laravelwebsocket.sh:

#!/bin/bash
case $1 in
        start)
                echo $$ > /var/run/laravelwebsocket.pid;
                exec 2>&1 php /home/rabter/core/artisan websockets:serve  1>/tmp/laravelwebsocket.out
                ;;
        stop)  
                kill `cat /var/run/laravelwebsocket.pid` ;;
        *)  
                echo "usage: laravelwebsocket.sh {start|stop}" ;;
esac
exit 0

И в etc / monit.d я создал файл cwp.laravelwebsocket с кодом

check process laravelwebsocket with pidfile /var/run/laravelwebsocket.pid
start program "/bin/bash -c  /home/rabter/laravelwebsocket.sh start"
stop program "/bin/bash -c  /home/rabter/laravelwebsocket.sh stop"
if failed port 6001 then restart
if 4 restarts within 8 cycles then timeout

к сожалению, когда я запускаю monit, все начинает получать monitord, но laravel websocket, и он не запускается один раз, и в таблице мониторинга спереди я вижу Process - laravelwebsocket Execution failed | Does not existКак я могу настроить мониторинг и запускать laravel-websocket при запуске, а также при сбоях, ошибках или сбоях?

Я просмотрел Monitor a Laravel Queue Worker с Monit, но не повезло!

1 ответ

Ваш сценарий bash вставляет свой собственный pid в ваш файл pid. Кроме того, при использовании monit процесс php должен быть отправлен в фоновый режим, поскольку monit- это инструмент мониторинга, а не супервизор.

#!/usr/bin/env bash

case $1 in
    start)
        php /home/rabter/core/artisan websockets:serve & 2>&1 >/tmp/laravelwebsocket.out
        echo $! > /var/run/laravelwebsocket.pid;
        ;;
    stop)
        kill $(cat /var/run/laravelwebsocket.pid) ;;
    *)
        echo "usage: $(basename $0) {start|stop}" ;;
    esac
exit 0

Затем сделайте этот файл исполняемым с помощью chmod +x FILEPATH.

Теперь это должно работать:

check process laravelwebsocket with pidfile /var/run/laravelwebsocket.pid
    start program "/home/rabter/laravelwebsocket.sh start"
    stop program "/home/rabter/laravelwebsocket.sh stop"

    if failed port 6001 then restart
    if 4 restarts within 8 cycles then timeout

Вы используете monit в качестве системы инициализации для контейнера? Если это так, пожалуйста, дайте мне знать. Затем применимы еще несколько деталей.

Другие вопросы по тегам