본문 바로가기
서버 인프라, 백엔드/Nodejs, PM2

PM2 : logrotate 모듈을 이용하여 PM2 로그 용량 줄이기

by 번데기 개발자 2024. 1. 8.
반응형

 

문제점

 

 

AWS의 EC2를 사용하고 있는데  용량이 늘어나는 문제를 발견하게 되었습니다. 

 

용량을 차지하는 파일을 찾던중 NodeJS 프로세스를 관리하는 PM2 에서 적재되고 있는 로그가 용량을 많이 차지한다는것을 알게 되었습니다.

 

이에 대해서 해결하는 방법에 대해 한번 알아보겠습니다.

 

 

PM2 로그 파일

 

기본적으로 pm2는 로그를 `/home/ubuntu/.pm2/logs` 에 적재하고 있는데요 (우분투 기준), pm2로 시작한 애플리케이션의 이름별로 로그파일이 적재되게 됩니다.

 

 

 

현재 platform-api-nodejs 라는 애플리케이션의 로그가 2.8G 이상 차지하는것을 확인할 수가 있습니다. 

 

 

PM2 logrotate 모듈

 

위에서 알아본 로그들은 서비스가 운용될수록 점점 쌓이면서 커지게 될 텐데요, 계속 쌓이게 되면 디스크의 용량이 부족하여 시스템에 문제를 일으킬수도 있습니다.

 

이와같이 PM2의 로그들의 사이즈가 커지는 문제를 해결하기 위한 방법 중 하나는 PM2 의 모듈인 pm2 logrotate 모듈을 사용하면 됩니다. 


pm2의 logrotate 모듈은 로그 파일의 관리를 담당하는 모듈로 아래와 같은 역할을 수행합니다.

 

   1) 로그 파일의 크기가 일정 값 이상이 되면 자동으로 백업하고 새로운 로그 파일을 시작합니다.

   2) 백업된 로그 파일은 개수를 제한하여 일정 갯수 이상이 되면 가장 오래된 로그를 자동으로 제거합니다

 

 

 

PM2 logrotate 모듈 설치

 

pm2의 logrotate 파일은 아래와 같이 설치할수 있습니다. 

 

$pm2 install pm2-logrotate

 

설치 이후에는 아래와 같이 PM2 module이 동작하는 것을 확인할수 있습니다.

 

 

 

PM2 logrotate 모듈 옵션

 

기본적으로 PM2의 모듈이 설치되면 아래와 같이 기본값으로 옵션이 설정됩니다.

 

Module: pm2-logrotate
$ pm2 set pm2-logrotate:max_size 10M
$ pm2 set pm2-logrotate:retain 30
$ pm2 set pm2-logrotate:compress false
$ pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss
$ pm2 set pm2-logrotate:workerInterval 30
$ pm2 set pm2-logrotate:rotateInterval 0 0 * * *
$ pm2 set pm2-logrotate:rotateModule true

 

  • max_size : 각각의 로그 파일의 크기
  • retain : 최대로 보관할 로그 갯수
  • compress : log를 gzip으로 압축할지 여부
  • dateFormat : 일자를 찍는 포멧
  • rotateModule : 새로운 로그파일 생성 여부
  • workerInterval : 로그 크기를 확인하는 시간 간격 (초단위이며 1초보다 커야함)
  • rotateInterval : 지정한 시간마다 새로운 로그파일 생성 (파일 크기가 초과되지 않더라도 주기적으로 로그 파일을 변경하는 주기를 지정하는 것)

 

위 설정을 요약하면, 로그가 10MB가 넘게 쌓일때마다 새로운 로그파일이 생성되며, 30개 이상 생성되지 않기 때문에 300MB 까지만 로그가 기록되어, 이를통해 로그의 용량이 계속 늘어나지 않도록 유지됩니다.

 

 

추가적으로 workerInterval과 rotateInterval이 햇깔릴수가 있어서 한번 설명드리겠습니다.

 

workerInterval은 로그 파일의 크기가 max_size 보다 큰지 확인하는 주기이며 만약 확인했을때 max_size 보다 로그파일이 크다면 새로운 로그파일을 만들어주는 옵션입니다.

 

rotateInterval은 새로운 로그파일을 일정시간 주기로 만들어주는 옵션으로 max_size보다 로그파일이 작더라도 이전로그와 구분되도록 파일을 만들어 줍니다. 기본값으로 매일 날짜가 변할때마다 새로운 로그파일을 생성하도록 설정되어있습니다.

 

 

마무리

 

 

 

이후 PM2 logrotate 적용 이후 디스크 용량이 2G 이상 확보된것을 확인할 수 있었습니다.

 

앞으로도 서버관리를 하며 디스크 용량을 줄이는 방법에 대해 알게되는 내용이 있으면 공유드리도록 하겠습니다. 

 

감사합니다.

반응형