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

doohyunlm·2021년 7월 29일
3

etc

목록 보기
2/10
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 startpm2를 시작합니다.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 monitpm2로 관리되고 잇는 프로세스별 상태를 볼수 있고 실시간 로그를 확인 가능합니다.pm2 monit
pm2 scalepm2의 프로세스 규모를 관리합니다.pm2 scale 5(5개), pm2 scale +4(4개 추가)
pm2 reload재시작하고 싶은 pm2의 프로세스를 다시 시작합니다.pm2 reload 0
pm2 reload all모든 pm2의 프로세스를 다시 시작합니다.pm2 reload all
pm2 updatePMpm2를 업데이트합니다.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파일의 사이즈가 해당 값보다 크게 될 경우 새로운 로그 파일을 생성합니다.10Mpm2 set pm2-logrotate:max_size 1K
retain로그 파일을 최대 몇개까지 가지고 있을 것인지에 대한 설정입니다.30pm2 set pm2-logrotate:retain 50
compress로그를 gzip으로 압축할 것인지에 대한 설정 값입니다.falsepm2 set pm2-logrotate:compress true
dateFormat일자를 찍는 포맷팅 설정 값입니다.YYYY-MM-DD_HH-mm-sspm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm
rotateModule새로운 로그 파일 생성 여부입니다.truepm2 set pm2-logrotate:rotateModule false
workerInterval로그 크기를 확인하는 시간 간격입니다. 초단위이며 1보다 커야합니다.30pm2 set pm2-logrotate:workerInterval 60
rotateIntervalcron 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개의 댓글