etc - nodejs 프로젝트 pm2로 관리하기

doohyunlm·2021년 7월 29일
1

etc

목록 보기
3/8
post-thumbnail

목차


  1. pm2란?
  2. pm2 사용하기
  3. pm2-logrotate
  4. 마치며



  • 프로젝트를 진행하며 가장 중요하고 많이 보게 되는 것이 바로 log입니다.

  • 에러를 표출하면 log를 봐서 어느 부분에서 에러가 났고 어느 부분을 고쳐야 하는지 알 수 있기 때문입니다.

  • pm2를 활용하여 nodejslog를 관리하는 방법에 대해서 알아봅시다.




1. pm2란?


  • pm2nodejs프로세스 매니저입니다.

  • 프로세스를 무중단 서비스 할 수 있도록 도와줍니다.

  • 프로세스가 죽었을 때에 대한 처리, 부팅 시 자동 실행, 로그 처리등 유용한 기능들을 제공합니다.




2. pm2 사용하기


2-1. pm2 설치


npm install pm2 -g

  • 위 명령어를 통해 어떤 디렉터리에서건 사용할 수 있게 -g 명령어를 붙여 설치를 합니다.



2-2. pm2 명령어


|명령어|설명|예시|
|:---:|:---:|:---:|
|pm2 list|현재 실행되고 있고 사용하고 있는 pm2 목록을 보여줍니다.|pm2 list||
|pm2 start|pm2를 시작합니다.|pm2 start 0|
|pm2 restart|재시작하고 싶은 프로세스를 재시작 시킵니다.|pm2 restart 0|
|pm2 restart all|모든 프로세스를 재시작 시킵니다.|pm2 restart all|
|pm2 stop|중지하고 싶은 pm2를 골라 중지 시킵니다.|pm2 stop 0|
|pm2 stop all|모든 pm2 프로세스를 중지시킵니다.|pm2 stop all|
|pm2 delete|삭제하고 싶은 pm2 프로세스를 삭제시킵니다.|pm2 delete 0|
|pm2 delete all|모든 pm2 프로세스를 삭제시킵니다.|pm2 delete all|
|pm2 show|보고 싶은 pm2 프로세스의 상세 세팅을 봅니다.|pm2 show 0|
|pm2 logs|보고 싶은 pm2의 로그를 봅니다.|pm2 log 0|
|pm2 monit|pm2로 관리되고 잇는 프로세스별 상태를 볼수 있고 실시간 로그를 확인 가능합니다.|pm2 monit|
|pm2 scale|pm2의 프로세스 규모를 관리합니다.|pm2 scale 5(5개), pm2 scale +4(4개 추가)|
|pm2 reload|재시작하고 싶은 pm2의 프로세스를 다시 시작합니다.|pm2 reload 0|
|pm2 reload all|모든 pm2의 프로세스를 다시 시작합니다.|pm2 reload all|
|pm2 updatePM|pm2를 업데이트합니다.|pm2 updatePM|




3. pm2-logrotate


  • pm2를 사용하여 로그 설정을 따로 해주지 않으면 로그 파일은 하나만 생성되어 계속 사이즈가 증가하는 방식으로 사용됩니다.

  • 로그가 엄청 많이 쌓이게 되면 이 로그의 사이즈가 엄청나게 커져 서비스에 영향이 가게 됩니다.

  • 이러한 로그 관리를 위해 나온게 pm2-logrotate입니다.


pm2 install pm2-logrotate
  • 명렁어를 통해 pm2-logrotate를 설치하여 줍니다. 설치 즉시 적용됩니다.

주의사항 : pm2-logrotate는 npm install이 아니고 pm2 install로 설치해야합니다.
pm2-logrotate는 npm 모듈이 아니라 pm2 모듈이기 때문입니다.


|설정|설명|기본 값|예시|
|:---:|:---:|:---:|:---:|
|max_size|파일의 사이즈가 해당 값보다 크게 될 경우 새로운 로그 파일을 생성합니다.|10M|pm2 set pm2-logrotate:max_size 1K|
|retain|로그 파일을 최대 몇개까지 가지고 있을 것인지에 대한 설정입니다.|30|pm2 set pm2-logrotate:retain 50|
|compress|로그를 gzip으로 압축할 것인지에 대한 설정 값입니다.|false|pm2 set pm2-logrotate:compress true|
|dateFormat|일자를 찍는 포맷팅 설정 값입니다.|YYYY-MM-DD_HH-mm-ss|pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm|
|rotateModule|새로운 로그 파일 생성 여부입니다.|true|pm2 set pm2-logrotate:rotateModule false|
|workerInterval|로그 크기를 확인하는 시간 간격입니다. 초단위이며 1보다 커야합니다.|30|pm2 set pm2-logrotate:workerInterval 60|
|rotateInterval|cron job입니다. 지정한 시간마다 새로운 로그 파일을 생성합니다.|0 0 * * * |pm2 set pm2-logrotate:rotateInterval '*/1 * * * *'|


cron은 유닉스 계열 컴퓨터 운영체제의 기반 기반 잡스케줄러입니다.

* * * * *
* 분(0 ~ 59) * 시간(0 ~ 23) * 일자(1 - 31) * 달(1 - 12) * 요일(0 - 6)

ex) 1 0 * * *
매일 자정 1분에 지정된 행동을 합니다.




4. 마치며


  • pm2를 사용하며 로그를 효과적으로 사용할 수 없을까 생각하다 찾은 pm2-logrotate입니다. 다른 분들에게도 도움이 되었으면 좋겠습니다.

  • 틀린 부분 있으면 말씀해주시면 감사하겠습니다.


profile
백엔드 개발자

0개의 댓글