저는 우분투 16.04를 사용하고 있으며 monit을 사용하여 gunicorn을 모니터링하고 싶지만 두 가지 문제에 직면하고 있습니다.
init.d 스크립트가 pid 파일을 지정하는 것으로 나타나더라도 pid 파일은 생성되지 않습니다.
항상 새로운 프로세스를 생성하는 gunicorn과 같은 것을 어떻게 모니터링합니까? 저는 하나의 서버에서 여러 django 사이트를 실행하고 있으며 각 사이트가 얼마나 많은 리소스를 사용하고 있는지 알고 싶습니다.
init.d 스크립트는 다음과 같습니다.
#!/bin/sh
### BEGIN INIT INFO
# Provides: gunicorn
# Required-Start: $all
# Required-Stop: $all
# Should-Start: $local_fs
# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=gunicorn
DESC="Gunicorn workers for site"
HELPER=/usr/sbin/gunicorn-debian
PID_DIR=/var/run/gunicorn
LOG_DIR=/var/log/gunicorn
CONF_DIR=/etc/gunicorn.d
test -x $HELPER || exit 0
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
. /lib/lsb/init-functions
Action() {
mkdir -p $PID_DIR
mkdir -p $LOG_DIR
chmod 750 $LOG_DIR
chown user:user $LOG_DIR
log_daemon_msg "$1"
shift
if $HELPER \
--conf-dir=$CONF_DIR \
--pid-dir=$PID_DIR \
--log-dir=$LOG_DIR \
"$@"
then
log_success_msg
else
log_failure_msg
exit 1
fi
}
action="$1"
shift
case "$action" in
start)
Action "Starting $DESC" start "$@"
;;
stop)
Action "Stopping $DESC" stop "$@"
;;
reload)
Action "Reloading $DESC" reload "$@"
;;
restart|force-reload)
$0 stop "$@"
$0 start "$@"
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|restart|reload|force-reload} [configs]" >&2
exit 1
;;
esac
exit 0
답변1
이 목적으로 감독자를 사용할 수 있습니다. Gunicorn이 실제로 추천합니다. 바라보다http://docs.gunicorn.org/en/stable/deploy.html#supervisor
내 VPS에서 여러 Django 사이트를 실행하고 Supervisord를 사용하여 관리합니다. 다음은 구성 예입니다.
[program:blog]
command = /var/www/blog/django-gunicorn.sh
autostart = true
[program:extra]
command = /var/www/extra/django-gunicorn.sh
autostart = true