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로 로그를 관리할 때 디스크 공간이 부족해지지 않도록 주의해야 합니다. 이를 해결하려면:
- 로그 로테이션을 설정하여 일정 크기 이상의 로그 파일을 자동으로 회전시키고, 압축 및 삭제하는 방법을 사용하세요.
- 로그 파일 경로를 변경하여 디스크 공간을 절약할 수 있습니다.
- 로그 파일을 수동으로 삭제하고, 불필요한 로그를 비워서 공간을 확보하세요.
- 로그 수준을 조정하여 필요 없는 로그가 쌓이지 않도록 하세요.
- 대량의 로그를 관리할 필요가 있다면, 외부 로그 관리 시스템을 고려해 보세요.
이러한 방법들을 통해 PM2를 사용할 때 로그 파일로 인한 디스크 공간 부족 문제를 해결할 수 있습니다!
'개발 스토리' 카테고리의 다른 글
aws cloudfront와 ec2 연동후 post 요청 403 오류 해결하기 (0) | 2025.03.31 |
---|---|
AWS S3 버킷생성후 node js와 연동하기 (0) | 2025.02.21 |
터널링을 이용하여 AWS RDS 접속 (0) | 2025.02.03 |
Amazon Linux 2023 MySQL 설치 (0) | 2025.01.26 |
깃허브와 연동하여 배포서버 만들기 (0) | 2025.01.24 |