- pm2란?
- pm2 사용하기
- pm2-logrotate
- 마치며
프로젝트를 진행하며 가장 중요하고 많이 보게 되는 것이 바로 log
입니다.
에러를 표출하면 log
를 봐서 어느 부분에서 에러가 났고 어느 부분을 고쳐야 하는지 알 수 있기 때문입니다.
pm2
를 활용하여 nodejs
의 log
를 관리하는 방법에 대해서 알아봅시다.
pm2
란 nodejs
의 프로세스 매니저
입니다.
프로세스를 무중단 서비스 할 수 있도록 도와줍니다.
프로세스가 죽었을 때에 대한 처리, 부팅 시 자동 실행, 로그 처리등 유용한 기능들을 제공합니다.
npm install pm2 -g
-g
명령어를 붙여 설치를 합니다.명령어 | 설명 | 예시 |
---|---|---|
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 |
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분에 지정된 행동을 합니다.
pm2를 사용하며 로그를 효과적으로 사용할 수 없을까 생각하다 찾은 pm2-logrotate입니다. 다른 분들에게도 도움이 되었으면 좋겠습니다.
틀린 부분 있으면 말씀해주시면 감사하겠습니다.