본문 바로가기

리눅스

[draft] Nginx 로그 파일을 로테이션 설정하는 방법

728x90

Nginx 로그 파일을 로테이션 설정하는 방법(nginx logrotate)

Nginx 로그 파일을 주기적으로 로테이션(순환)하여 로그 파일 크기를 관리하고 오래된 로그를 보관하려면 logrotate를 사용할 수 있습니다.

Nginx 로그 파일의 로테이션 설정

1. logrotate 설정 파일 생성

  • logrotate 설정 파일을 생성하거나 수정합니다.
  • 대부분의 리눅스 시스템에서 logrotate 설정 파일은 /etc/logrotate.conf 또는 /etc/logrotate.d/nginx와 같은 경로에 위치할 수 있습니다.
sudo vim /etc/logrotate.d/nginx

2. logrotate 설정 추가

  • Nginx 로그로테이션 설정을 추가합니다.
/var/log/nginx/*.log {
    daily
    missingok
    rotate 7
    dateext
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}
  • 설정 항목 설명
    • daily : 매일 로그를 로테이션합니다. 일별로 새로운 로그 파일이 생성됩니다.
    • missingok : 로그 파일이 없는 경우에도 경고 없이 진행합니다. 로그 파일이 없더라도 로테이션은 진행됩니다.
    • rotate 7 : 최대 7개의 로그 파일을 보관합니다. 로그 파일이 7개 이상 쌓이면 오래된 로그 파일부터 삭제됩니다.
    • dateext : 로그 파일 이름에 날짜 확장자를 추가합니다. 예를 들어, access.log.20230810와 같은 형식으로 로그 파일이 생성됩니다.
    • compress : 로그 파일을 압축하여 저장합니다. 로그 파일의 용량을 줄이고 디스크 공간을 절약할 수 있습니다.
    • delaycompress : 이전 로그 파일을 압축하는데 지연을 줍니다. 다음 로그 로테이션이 발생할 때까지 압축을 지연시킵니다.
    • notifempty : 로그 파일이 비어 있으면 로테이션하지 않습니다. 내용이 없는 로그 파일은 로테이션 대상에서 제외됩니다.
    • create 0640 www-data adm : 새로운 로그 파일을 생성할 때의 파일 권한을 설정합니다. 여기서는 0640 퍼미션으로 www-data 사용자 그룹과 adm 그룹을 지정합니다.
    • sharedscripts : 로그파일 로테이션 후 스크립트를 실행할 때 중복 실행을 방지합니다. 여러 로그 파일이 있는 경우 한 번만 스크립트가 실행됩니다.
  • 위 설정에서는 /var/log/nginx/ 디렉토리에 있는 모든 .log 파일을 매일 로테이션하며 최대 7개의 로그 파일을 보관합니다. 새로운 로그 파일 생성 시 퍼미션을 0640으로 설정하며 로그파일 로테이션 후 Nginx를 재시작하는 명령어를 실행합니다.

3. logrotate 실행 확인

  • logrotate는 일반적으로 cron에 의해 자동으로 실행됩니다. 설정이 잘 적용되었는지 수동으로 테스트해볼 수 있습니다.
sudo logrotate -d /etc/logrotate.d/nginx
  • 문제가 없으면 실제로 작업을 실행합니다.
sudo logrotate -f /etc/logrotate.d/nginx
  • -f 옵션은 강제 실행을 의미합니다.

4. 로그로테이션 주기 설정

  • daily 대신 weekly, monthly와 같은 다른 주기를 선택할 수 있습니다. 또한 logrotate 주기를 변경하려면 설정 파일에서 daily 부분을 수정하면 됩니다.

5. 주의 사항

  • 로그 파일의 경로와 설정은 시스템 및 Nginx 구성에 따라 다를 수 있습니다. logrotate 설정을 변경하려면 주의 깊게 검토하고 테스트한 후에 적용하야 합니다.

이 설정을 사용하여 Nginx 로그 파일을 로테이션하면 로그 파일 관리가 용이하며 디스크 공간을 효율적으로 활용할 수 있습니다.

 

728x90