[Ubuntu] Supervisor 를 이용한 서비스 동작 및 모니터링 Computer Tip

nodejs 에서 forever 라는 npm 모듈이 있습니다.
node app가 동작하면서 해당 프로세스가 죽으면 끊임 없이
재시동 시켜 주기 때문에 '영원' 이라는 이름을 붙였나 싶은데요.

아뭏든 유사하게 프로세스를 기동시키고 모니터링 하고 있다가 
죽으면 다시 띄워주고 하는 등의 역할을 수행하는 파이썬 패키지가 
있는데 "Supervisor" 라는 것입니다.

일단 아래 링크에 있는 다음과 같은 소스를 특정 폴더에 저장합니다.


와 같은 파일을 특정 폴더에 옮기고
build.sh 를 수행하면 됩니다. (우분투 12.04 LTS에서 수행 및 테스트)

xmlrpc 소스는 예전에 non-blocking XMLRPC 구현 방법 내용을 수정한 것입니다.


테스트는 간단한 xmlrpc 서버를 돌립니다.
특정 포트를 받아 그 포트로 서비스를 열고 있습니다.

xt_8997.conf 는 다음과 같이 구성되어 있습니다.


[program:xmlrpc_test_8997]
command=/usr/bin/python /opt/xmlrpc_server.py 8997 ; 프로그램 명령행
environment=PYTHONPATH='/opt/F3work',MYENV='another secret' ; 환경변수
directory=/opt ; 실행 디렉터리
autostart=true ; 자동 실행 여부
autorestart=true ; 자동 재시작 여부
startretries=3 ; 시작 시도 회수
stderr_logfile=/opt/log/8997_stderr.log ; stdout 결과 로깅 파일
stderr_logfile_maxbytes=10MB ; stdout 최대 보관 크기
stderr_logfile_backups=5 ; stdout 백업 개수
stdout_logfile=/opt/log/8997_stdout.log ; stderr 결과 로깅 파일
stdout_logfile_maxbytes=10MB ; stderr 최대 보관 크기
stdout_logfile_backups=5 ; stderr 백업 개수

위와 같이 지정하고,
$ sudo service supervisor start
로 기동시키고
$ sudo service supervisor stop
로 멈춥니다.

시스템을 재기동 시켜도
위와 같이 동작하는 것을 확인가능합니다.
$ watch -n 1 'ps -ef | grep python | grep -v grep'

위와 같은 conf 파일을 /etc/supervisor/conf.d 에 넣으면 자동으로 가져옵니다.

또한 /etc/supervisor/supervisord.conf 파일에

[inet_http_server]
port = 0.0.0.0:9001
username = future
password = future_01

내용이 들어 있으면, 웹브라우저로

위와 같이 결과를 확인할 수도 있고 멈추거나 재시작 시킬 수도 있습니다.

관리하고 있는 프로세스 자체는 데몬화 되지 않고 forground 상태이어야
수퍼바이저가 알아서 데몬서비스화 시킵니다.


또한 각 프로세스는 아래와 같은 트랜지션 다이어그램을 따른다 하네요.


대부분의 경우 정상동작한다면 "RUNNING" 상태입니다.


어느분께는 도움이 되셨기를...

덧글

댓글 입력 영역

구글애드텍스트