[NodeJs] pm2-logrotate 로그 관리 모듈

2022. 9. 13. 09:57NodeJS

pm2-logrotate 설치하기
pm2 install pm2-logrotate

바뀌는 기준이 뭔지 알고 싶다면 pm2 conf 를 통해 확인할 수 있다.

만약 pm2-logrotate를 설치하지 않고 pm2만 이용하게 되면 로그 파일은 한개만 생성되고 계속 사이즈가 증량되는 방식으로 로그가 쌓입니다. 소규모에서는 오히려 이게 편할 수 있겠죠.

  • max_size (Defaults to 10M): 파일 사이즈가 해당 값보다 크게될 경우 rotate 합니다. worker가 해당 용량을 칼같이 지키는 건 아니라 제한 용량을 살짝 넘기고서 rotate하는 경우도 있다고 하네요. 반드시 특정 용량 아래로 로그 파일을 나눠야 할 경우 보수적으로 잡는 것이 좋아보입니다.
    값은 10G, 10M, 10K 등과 같이 줄 수 있답니다. 저희 서비스인 Cineps에선 기본값인 10M가 적절해보입니다.
  • retain (Defaults to 30 file logs): rotated 된 로그 파일을 최대 몇개까지 가지고 있을 것인지에 대한 설정입니다. 기본값은 30이디 log 파일은 30개까지 존재하게 되겠네요. 
  • compress (Defaults to false): rotated 된 로그를 gzip으로 압축할 것인가를 묻습니다. 로그의 양이 많아지면 자동으로 gzip으로 압축하게끔 설정하는 것이 좋을테지만, 현재는 내버려 두도록 합시다.
  • dateFormat (Defaults to YYYY-MM-DD_HH-mm-ss) : 네 말 그대로 ㅎ
  • rotateModule (Defaults to true) : Rotate the log of pm2's module like other apps
  • workerInterval (Defaults to 30 in secs) : You can control at which interval the worker is checking the log's size (minimum is 1)
  • rotateInterval (Defaults to 0 0 * * * everyday at midnight): cron job 입니다. 기본값이 자정마다 rotate를 돌리기로 되어 있네요. retain 값이 30이고, rotateInterval이 매 자정마다 이루어지므로 1달이면 로그 파일이 꽉 차겠군요.
  • TZ (Defaults to system time): This is the standard tz database timezone used to offset the log file saved. For instance, a value of Etc/GMT+1, with an hourly log, will save a file at hour 14 GMT with hour 13 (GMT+1) in the log name.
*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    |
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)

pm2-logrotate 설정을 변경하고 싶다면

pm2 set pm2-logrotate:<param> <value>

[예시]

// force rotate every minute
pm2 set pm2-logrotate:rotateInterval '*/1 * * * *'

// 1M
pm2 set pm2-logrotate:max_size 1M 

// compress logs when rotated
pm2 set pm2-logrotate:compress true