PM2 로그가 계속 쌓여 디스크를 100% 채우는 문제는 크게 로그 회전(log rotation) 과 불필요한 로그 정리 두 가지로 해결할 수 있습니다. 아래 방법을 참고하세요.
1. 당장 디스크를 확보하기
먼저 돌발 상황일 때는 기존 로그를 비워서 공간을 확보합니다.
# 모든 PM2 프로세스의 로그 버퍼를 비웁니다.
pm2 flush
# PM2가 관리하는 로그 파일(용량이 큰 out / error 로그)을 삭제합니다.
rm -f ~/.pm2/logs/*.log
주의: 로그를 완전히 지우면 과거 에러 또는 출력 기록을 잃습니다. 필요한 부분은 백업해 두세요.
2. PM2-built‑in 모듈로 로그 회전 설정
PM2 공식 플러그인인 pm2-logrotate 를 쓰면, 파일 크기나 보관 기간 기준으로 자동으로 로그를 잘라줍니다.
- 설치 및 활성화
pm2 install pm2-logrotate
- 기본 설정 확인
pm2 conf pm2-logrotate
-
예시:
# 로그 최대 크기를 10MB로 제한 (이상 넘어가면 회전)
pm2 set pm2-logrotate:max_size 10M
# 보관할 로그 파일 개수를 5개로 제한
pm2 set pm2-logrotate:retain 5
# 하루에 한 번 회전
pm2 set pm2-logrotate:rotateInterval '0 0 * * *'
# rotate 시 압축 활성화
pm2 set pm2-logrotate:compress true
설정 후 PM2가 자동으로 로그를 잘라주기 때문에 디스크 과다 사용을 방지할 수 있습니다.
3. 시스템 logrotate
이용하기
OS 차원에서 관리하고 싶다면, /etc/logrotate.d/pm2
파일을 만들어 아래처럼 설정할 수 있습니다.
sudo tee /etc/logrotate.d/pm2 <<'EOF'
~/.pm2/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
EOF
daily
: 하루에 한 번
rotate 7
: 최대 7일치
compress
: 압축 보관
copytruncate
: 서비스를 재시작하지 않고 파일 크기만 잘라냄
설정 완료 후 logrotate
가 매일 자동으로 실행되어 로그를 관리합니다.
4. PM2 프로세스별 로그 분리 및 설정
ecosystem.config.js
등을 사용 중이라면, 앱별로 로그 파일 위치와 사이즈를 지정할 수 있습니다.
module.exports = {
apps: [{
name: 'my-app',
script: './app.js',
// 로그 최대 크기 10M, 보관 5개
max_restarts: 5,
error_file: '/var/log/pm2/my-app-error.log',
out_file: '/var/log/pm2/my-app-out.log',
merge_logs: false,
log_date_format: 'YYYY-MM-DD HH:mm Z',
// pm2-logrotate 설정 덮어쓰기 (옵션)
env: {
PM2_LOG_ROTATE_MAX_SIZE: '10M',
PM2_LOG_ROTATE_MAX_FILES: '5'
}
}]
};
이렇게 하면 앱 단위로도 세부 조정이 가능합니다.
요약
- 긴급:
pm2 flush
+ rm ~/.pm2/logs/*.log
- 장기:
- PM2‑logrotate (
pm2 install pm2-logrotate
)
- 또는 시스템
logrotate
- 앱별:
ecosystem.config.js
에서 로그 파일 경로 및 회전 설정
위 방법을 적용하면 PM2 로그로 인한 디스크 과다 사용 문제를 효과적으로 관리하실 수 있습니다.