ふたりで

pm2-logrotate (pm2 log 관리) 본문

node.js

pm2-logrotate (pm2 log 관리)

graykang 2024. 3. 13. 11:31
728x90
반응형
SMALL

pm2 만 설치하여 사용할 경우 스토리지 용량이 다 찰 때까지 한 개의 파일에 적재된다.

이럴경우 서비스의 중단 또는 서버의 문제가 발생할 수 있다.

이를 방지하기 위해서 pm2에 module로 pm2-logrotate를 설치 설정 하여 log를 관리할 수 있다.

 

1. pm2-logrotate 설치.

참고:pm2-logrotate설치는 pm2 가 실행 중일 때 설치를 해도 실행 중인 app서비스에 영향이 없는 것 같다.

나의 경우 pm2가 /home/graykang/.pm2에 설치되어 있다. 혹시 모르니  /home/graykang/에서 설치를 해준다.

pm2-logrotate모듈이 설치되지 않은 경우 pm2 ls를 하면 아래와 같으니,

[graykang@localhost ]$ pm2 ls
┌────┬────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name           │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0  │ apptestSvc    │ default     │ N/A     │ fork    │ 82845    │ 46h    │ 265  │ online    │ 0%       │ 69.7mb   │ gra… │ enabled  │
└────┴────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[graykang@localhost ]$

 

pm2-logrotate를 설치해 주자 설치하면 아래와 같으며, 로그관리 설정은 기본으로 최근일자 기준 10M 단위로 30개까지만 

유지되도록 자동 설정 된다.

주의: npm install로 설치하는 게 아니라 pm2 install로 설치해야 한다. 명령어는 아래 참고.

728x90
반응형
SMALL
[graykang@localhost ~]$ pm2 install pm2-logrotate
[PM2][Module] Installing NPM pm2-logrotate module
[PM2][Module] Calling [NPM] to install pm2-logrotate ...

added 197 packages in 5s

22 packages are looking for funding
  run `npm fund` for details
[PM2][Module] Module downloaded
[PM2][WARN] Applications pm2-logrotate not running, starting...
[PM2] App [pm2-logrotate] launched (1 instances)
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
Modules configuration. Copy/Paste line to edit values.
[PM2][Module] Module successfully installed and launched
[PM2][Module] Checkout module options: `$ pm2 conf`
┌────┬──────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name             │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├────┼──────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0  │ apptestSvc      │ default     │ N/A     │ fork    │ 82845    │ 46h    │ 265  │ online    │ 0%       │ 70.4mb   │ gra… │ enabled  │
└────┴──────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
Module
┌────┬──────────────────────────────┬───────────────┬──────────┬──────────┬──────┬──────────┬──────────┬──────────┐
│ id │ module                       │ version       │ pid      │ status   │ ↺    │ cpu      │ mem      │ user     │
├────┼──────────────────────────────┼───────────────┼──────────┼──────────┼──────┼──────────┼──────────┼──────────┤
│ 1  │ pm2-logrotate                │ 2.7.0         │ 85327    │ online   │ 0    │ 0%       │ 19.0mb   │ gra… │
└────┴──────────────────────────────┴───────────────┴──────────┴──────────┴──────┴──────────┴──────────┴──────────┘
[graykang@localhost ~]$

 

2. pm2-logrotate 로그 관리 설정 config 확인은 아래 명령어로 확인 및 설정 가능 하다.

[graykang@localhost ~]$ pm2 conf
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
Module: module-db-v2
$ pm2 set module-db-v2:pm2-logrotate [object Object]
[graykang@localhost ~]$

 

설정은 pm2 set pm2-logrotate:<param> <value>

 

 

3. 옵션 참고 설명.

max_size(기본값은 10M): 유지될 1개의 파일 크기.
retain( 30파일 로그의 기본값): 최근일자 기준 최대 보관 로그 파일 갯수
compress(기본값은 false):  gzip을 통한 압축 여부
dateFormat(기본값은 YYYY-MM-DD_HH-mm-ss) : 로그 파일 이름을 사용하는 데이터 형식
rotateModule(기본값은 true) : 새로운 로그 파일생성 여부
workerInterval(기본값은 30초 단위): max_size 확인 간격 주기
rotateInterval(기본값은 0 0 * * *매일 자정): max_size 보다 용량이 작더라도 정해진 일시가 지나면 새로운 로그생성

 

참고:

https://github.com/keymetrics/pm2-logrotate

 

GitHub - keymetrics/pm2-logrotate: Automatically rotate all applications logs managed by PM2

Automatically rotate all applications logs managed by PM2 - GitHub - keymetrics/pm2-logrotate: Automatically rotate all applications logs managed by PM2

github.com

 

728x90
반응형
LIST
Comments