pm2 로그 로테잉션 설정하기

2025. 2. 4. 10:30개발 스토리

반응형

PM2로 서버를 관리하고 있을 때, 로그가 너무 많이 쌓여 하드 디스크의 공간이 부족해지는 문제는 꽤 흔하게 발생할 수 있습니다. 이를 해결하기 위한 몇 가지 방법을 알려드리겠습니다.

1. 로그 로테이션 설정 (PM2 log rotation)

PM2는 로그 파일이 일정 크기를 초과하거나 일정 시간이 지나면 자동으로 로그를 회전(rotate)시켜서 저장할 수 있는 기능을 제공합니다. 이를 통해 로그 파일이 무한히 커지는 것을 방지할 수 있습니다.

PM2에서 로그 로테이션을 설정하려면 pm2-logrotate 모듈을 사용해야 합니다.

PM2 logrotate 모듈 설치

pm2 install pm2-logrotate

설치가 완료되면, 로그 파일을 어떻게 로테이션할지 설정할 수 있습니다.

기본 설정 예시

pm2 set pm2-logrotate:rotateInterval '0 0 * * *'    # 매일 자정마다 로그 파일 회전
pm2 set pm2-logrotate:max_size '10M'                # 로그 파일이 10MB 이상일 경우 회전
pm2 set pm2-logrotate:retain '7'                     # 로그 파일 7개까지만 보관 (그 이상은 삭제)
pm2 set pm2-logrotate:compress true                  # 오래된 로그 파일 압축
  • rotateInterval: 로그 파일을 회전시킬 주기를 설정합니다. 예를 들어, 0 0 * * *는 매일 자정마다 회전시킨다는 뜻입니다.
  • max_size: 로그 파일의 최대 크기를 설정합니다. 예를 들어, 10M는 로그 파일이 10MB를 넘기면 회전하도록 설정합니다.
  • retain: 보관할 로그 파일의 최대 개수를 설정합니다. 설정된 수 이상은 삭제됩니다.
  • compress: 회전된 로그 파일을 압축할지 여부를 설정합니다.

설정이 완료되면, PM2는 자동으로 로그를 회전시켜 저장하고, 오래된 로그 파일은 자동으로 삭제하거나 압축하여 디스크 공간을 절약할 수 있습니다.


2. PM2 로그 파일 경로 변경

PM2는 기본적으로 ~/.pm2/logs 디렉토리에 로그 파일을 저장합니다. 만약 이 경로에 너무 많은 로그가 쌓여서 디스크 공간을 차지하고 있다면, 로그 파일의 위치를 변경할 수 있습니다.

로그 파일 경로 변경 예시

pm2 start app.js --log /path/to/your/custom/log/directory/app.log

이렇게 하면, 로그 파일을 원하는 디렉토리로 지정할 수 있습니다. 이때, 로그를 저장할 디렉토리에 충분한 공간이 있는지 확인하세요.


3. 로그 파일 수동 삭제

이미 너무 많은 로그 파일이 쌓여서 디스크 공간을 차지하고 있다면, 수동으로 오래된 로그 파일을 삭제해야 할 수도 있습니다. 다음 명령어로 PM2 로그 파일을 삭제할 수 있습니다.

PM2 로그 파일 삭제

pm2 flush            # PM2가 관리하는 모든 로그를 비웁니다.
  • pm2 flush: 현재까지 기록된 모든 로그를 비웁니다. 이 명령은 디스크에서 로그를 삭제하므로 디스크 공간을 확보할 수 있습니다.

또한, 로그 파일은 PM2 외부에서 직접 확인하고 삭제할 수도 있습니다. 기본 로그 파일은 ~/.pm2/logs에 저장되므로, 해당 디렉토리로 이동하여 오래된 로그 파일을 삭제할 수 있습니다.

cd ~/.pm2/logs
rm *.log.*            # 또는 특정 파일을 지정하여 삭제

4. 로그 수준 조정 (Log Level 조정)

로그가 지나치게 많아지는 이유 중 하나는 애플리케이션에서 출력하는 로그 수준이 너무 높은 경우일 수 있습니다. 예를 들어, debug 수준의 로그는 많은 양을 생성할 수 있습니다. 이를 info, warn, error 등으로 조정하여 로그의 양을 줄일 수 있습니다.

PM2에서 log_level을 설정하는 방법은 다음과 같습니다:

pm2 start app.js --log-level info   # 로그 레벨을 info로 설정

이렇게 하면, 불필요하게 많은 로그를 출력하지 않고, 중요한 정보만 로깅할 수 있습니다.


5. 외부 로그 관리 시스템 사용

로그가 매우 많고 장기적으로 로그를 관리해야 하는 경우에는 PM2의 기본 로그 시스템을 사용하는 대신, 외부 로그 관리 시스템을 도입하는 방법도 고려할 수 있습니다. 예를 들어, ELK Stack(Elasticsearch, Logstash, Kibana), Graylog, Datadog 등을 사용하여 로그를 관리하고 모니터링할 수 있습니다. 이런 시스템들은 대량의 로그 데이터를 효율적으로 저장하고 검색할 수 있도록 지원합니다.


결론

PM2로 로그를 관리할 때 디스크 공간이 부족해지지 않도록 주의해야 합니다. 이를 해결하려면:

  1. 로그 로테이션을 설정하여 일정 크기 이상의 로그 파일을 자동으로 회전시키고, 압축 및 삭제하는 방법을 사용하세요.
  2. 로그 파일 경로를 변경하여 디스크 공간을 절약할 수 있습니다.
  3. 로그 파일을 수동으로 삭제하고, 불필요한 로그를 비워서 공간을 확보하세요.
  4. 로그 수준을 조정하여 필요 없는 로그가 쌓이지 않도록 하세요.
  5. 대량의 로그를 관리할 필요가 있다면, 외부 로그 관리 시스템을 고려해 보세요.

이러한 방법들을 통해 PM2를 사용할 때 로그 파일로 인한 디스크 공간 부족 문제를 해결할 수 있습니다!

반응형