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 로그로 인한 디스크 과다 사용 문제를 효과적으로 관리하실 수 있습니다.