[infra] 로그 관리 최적화 및 서버 HDD 사용량 개선

p_samename·2024년 12월 12일
post-thumbnail

PM2 Logrotate로 로그 관리 최적화하기

필자의 라이브 프론트 서버에서 애플리케이션의 로그가 현재까지 계속 쌓여 하드디스크(HDD)의 용량이 출시 초기부터 현재까지 조금씩 증가하는 현상을 인지하게 되었다. 필자는 최근 PM2를 이용하여 서버의 프로세스를 관리하는데, 1년 넘게 로그가 누적되어 HDD 용량이 지속적으로 증가하는 것이었다. 이 문제를 해결하기 위해 PM2의 Logrotate 모듈을 도입하여, 로그를 효율적으로 관리하고 용량 증가 문제를 개선하기로 했다.


문제 상황

  1. 로그의 누적

    • PM2는 기본적으로 애플리케이션 실행 로그를 파일에 기록한다.
    • 별도의 설정이 없을 경우, 로그는 파일 크기 제한 없이 지속적으로 기록되어 파일 크기가 증가한다.
  2. HDD 용량 부족

    • 1년 넘게 로그가 쌓이면서 디스크 공간이 점차 줄어들었다.
  3. 로그 관리 부재

    • 기존 로그는 특정 날짜나 파일 크기에 따라 분리되지 않았기 때문에 기간별로 로그를 관리하기가 힘들었고, 과거 로그를 삭제하는 자동화된 프로세스가 없었다.

PM2 Logrotate 도입

PM2는 기본적으로 로그 관리 기능을 제공하지 않지만, PM2 Logrotate 모듈을 사용하면 로그를 효율적으로 관리할 수 있다. 이를 통해 로그를 일정 기준에 따라 분리, 압축, 삭제할 수 있다.

설치 및 설정

  1. PM2 Logrotate 설치
    PM2 Logrotate는 PM2의 공식 모듈로 쉽게 설치할 수 있다.
    pm2 install pm2-logrotate # npm install 이 아닌 pm2 의 모듈이므로 pm2 install 로 설치를 해주어야 한다.
    pm2의 module list 에 pm2-logrotate가 설치된 것을 확인 할 수 있다.

  1. Logrotate 설정 확인 및 수정
    설치 후, 기본 설정을 확인하고 필요에 따라 수정한다.

    pm2 show pm2-logrotate

  2. 주요 설정 변경
    설정을 변경하려면 다음 명령어를 사용한다:

    pm2 set pm2-logrotate:rotateInterval "0 0 * * *"   # 로그를 하루 단위로 분리.
    pm2 set pm2-logrotate:retain 7             # 파일이 7개 이상 넘어가면 오래된 파일을 지우고 최신 파일을 쌓음.
    pm2 set pm2-logrotate:max_size 10M         # 로그 파일 크기가 10MB 이상이면 분리.

  3. Logrotate 적용 확인

pm2 conf


pm2-logrotate 설정을 확인 할 수 있다.


개선 결과

  1. HDD 용량 안정화:

    • Logrotate를 통해 과거 로그가 자동으로 삭제되면서 디스크 용량 증가 문제를 개선 할 수 있었다.
  2. 로그 관리 자동화:

    • 로그가 일자별로 분리하여 로그관리의 효율을 개선하였고, 오래된 로그는 자동으로 삭제되어 더 이상 수동 관리가 필요 없었다.
  3. 서버 안정성 확보:

    • 로그 관리로 인해 디스크 공간의 확보로 인하여, 서버의 안정성이 향상될 수 있도록 하였다.
profile
@p_samename

0개의 댓글