[Node.js] PM2 프로세스 관리 도구[Node.js] PM2 프로세스 관리 도구
Posted at 2019. 1. 22. 11:52 | Posted in Node.jsAPI : https://pm2.keymetrics.io/docs/usage/pm2-doc-single-page
참고 : https://blog.outsider.ne.kr/1197
참고 : https://jybaek.tistory.com/716
■ PM2( Process Manager )란?
· PM2는 노드 프로세스를 관리해주는 Node.js의 프로세스 매니저( Process Manager )이다.
· 서비스중인 Node.js 프로세스가 예상하지 못한 오류로 종료( exit ) 이벤트가 발생하면 해당 프로세스를 자동으로 재시작해준다.
( 주로 채팅이나 웹 서비스같은 계속 서버가 종료되지 않고 유지되어야 하는 경우에 사용된다. )
· 재시작이라는 점에서 유사한 매니저 프로그램으로 qmail에서 사용하는 svscna이 존재하지만, svscna은 그냥 죽으면 프로세스만 살리는 역할만 수행한다.
· PM2는 프로세스 재시작 이외에 로그처리등의 기능을 추가적인 기능을 제공한다.
■ PM2 설치
PM2는 한곳이 아니라 여러 곳에서 사용하게 되는 경우가 많아
기본적으로 글로벌( --global ) 셋팅으로 설치하는 것을 권장한다.
$ npm install --global pm2 |
설치가 완료되면 아래 명령어를 실행하여
PM2가 정상적으로 설치가 되었는지 확인해 보자.
$ pm2 version |
위와같이 PM2가 정상적으로 설치된 모습을 확인할 수 있다.
■ PM2 실행
진행에 앞서 필요한 예제 파일을 하나 생성해보자.
간단한 http 모듈을 프로세스를 생성하여 예제로 사용할 것이다.
pm2_test.js( 예제노드.js ) |
const http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type":"text/html"}); response.end("Hello World\n"); }).listen(52275, function() { console.log("Server Running at localhost:52273"); }); |
이제 PM2를 실행해볼 것이다.
위에서 작성한 예제노드.js 파일을 등록시켜보자.
#01. PM2에 프로스세 등록
먼저 PM2에 프로세스를 등록시켜 보자.
위에서 작성한 예제파일.js 파일을 실행시켜보려고 한다.
start 명령을 통해 진행할 수 있다.
$ pm2 start 예제파일.js |
start 옵션 명령을 통해 프로세스를 등록하면
PM2 리스트에 해당 프로세스가 등록된것을 바로 확인할 수 있다.
여기서 name 부분을 보면 예제노드의 이름이 자동으로 들어간 것을 확인 할 수 있는데.
--name "프로세스명" or "앱이름" 을 지정하여 원하는 명칭을 지정하여 지정하는것도 가능하다.
$ pm2 start 예제노드.js --name "APP이름" |
그럼 위와같이 name 항목에 예제파일( pm2_test )명이 아닌 직접 지정한 프로세스명( http_server )가 등록된 것을 확인할 수 있다.
#02. PM2에 등록된 프로세스 확인
그럼 위와같이 PM2에 해당 프로세스가 등록된 것을 확인 할 수 있다.
실행중인 PM2 목록을 다시 확인 하기 위해서는 list 명령으로 다시 확인 할 수 있다.
$ pm2 list |
#03. PM2 프로세스 정지
이제 등록된 예제노드를 정지 시켜 보자.
stop 명령을 통해 정지시킬 수 있는데 방법은 2가지 이다.
id 번호를 입력하거나, name으로 지정된( 예제노드.js ) 파일명을 입력하면 정지 시킬 수 있다.
$ pm2 stop 인덱스번호 $ pm2 stop APP이름 |
#04. PM2 정지시킨 프로세스 재시작
정지시킨 PM2 항목은 다시 실행 시킬 수 있다.
start 명령 옵션을 통해 정시켰던 프로세스를 다시 실행 할 수 있다.
정지시켰던 프로세스를 다시 실행시켜보자.
$ pm2 start 인덱스번호 $ pm2 start APP이름 |
그럼 PM2 리스트 목록에 stopped → online으로 변경된 것을 확인 할 수 있다.
#05. PM2 프로세스 삭제
위에서 등록된 PM2 프로세스를 정지시켜 보았다.
그럼 이번에는 그 반대로 아예 프로세스를 제거시켜 보도록 하겠다.
삭제는 delete 옵션을 통해 진행할 수 있다.
$ pm2 delete 인덱스번호 $ pm2 delete APP이름 |
그럼 위의 이미지와 같이 PM2 실행 리스트 창에
프로세스가 존재하지 않는 모습을 확인 할 수 있다.
#06. PM2 프로세스 상세 정보 확인
등록된 프로세서의 상세정보를 확인 해보자.
show 명령을 통해 확인할 수 있다.
$ pm2 show 인덱스번호 |
■ PM2 로그확인
#01. 로그파일( *.log )의 위치 변경
위 show 명령 옵션을 통해 PM2에 등록된 프로세스의 *.log파일의 위치가
기본적으로 자동으로 진행되는 것을 확인 할 수 있다.
정보 |
경로 |
error log path |
기본경로$home .. /logs/프로세스명-error.log |
out log path |
기본경로$home .. /logs/프로세스명-out.log |
pid path |
기본경로$home .. /logs/프로세스명-0.log |
이제 각 로그 파일의 위치를 로그를 직접 지정해보자.
# Sample - 로그 경로 변경
$ pm2 start 예제노드.js --name "APP이름" --ouput ./로그파일.log $ cat 로그파일.log |
# Sample - 로그 경로 변경
$ pm2 start 예제노드.js --name "APP이름" --ouput ./로그파일.log --error ./로그파일.log --merge-logs $ cat 로그파일.log |
#02. 로그 옵션 설명
명령 옵션 |
설명 |
--log | -l |
· 출력 및 오류 로그를 모두 출력할 파일의 경로 지정 |
--outer | -o |
· 출력 로그 파일 지정 |
--error | -e |
· 오류 로그 파일 지정 |
--time |
· 표준 형식 타임스탬프를 포함한 로그 출력 |
--log-data-format |
· 사용자 지정 형식 지정 타임스탬프로 있는 로그 출력 |
--merge-logs |
· 동일한 앱 이름( name )으로 여러 프로세스를 실행할 때 ID로 파일을 분할하지 않게 지정 |
#03. 로그 표시
$ pm2 logs 인덱스번호 $ pm2 logs APP이름 |
■ PM2 모니터링
PM2를 사용하면 애플리케이션의 리소스 사용을 간편하게 모니터링 할 수 있다.
터미널에서 메모리 및 CPU를 쉽고 직접적으로 모니터링이 가능하다.
$ pm2 monit |
'Node.js' 카테고리의 다른 글
[Node.js] SCRAPING을 위한 cheerio 모듈과 cheerio-httpcli 모듈 (0) | 2019.05.08 |
---|---|
[Node.js] node.js로 PDF 문서 생성하기 (2) | 2019.04.11 |
[Node.js] package.json과 npm i 명령 (0) | 2019.04.02 |
[Node.js] Node.js 채팅방 제작 (0) | 2019.02.12 |
[Node.js] Ubuntu에 Node.js 설치하기 (0) | 2018.10.25 |