카테고리 없음

리눅스 Logrotate 설정 방법: 로그 자동 관리로 서버 디스크 공간 확보하기

14722 2026. 8. 18. 20:11

 

리눅스 서버를 운영하다 보면 웹서버와 애플리케이션에서 생성되는 로그 파일이 계속 쌓이면서 디스크 공간이 부족해지는 문제가 발생할 수 있습니다. 특히 Nginx, Apache, MySQL 같은 서버 프로그램을 장기간 운영하면 access.log, error.log와 같은 로그 파일의 크기가 빠르게 증가할 수 있습니다.

이럴 때 유용하게 사용할 수 있는 기능이 바로 Logrotate(로그로테이트)입니다.

Logrotate는 오래된 로그 파일을 자동으로 분리하고 압축하거나 삭제해 주는 리눅스의 로그 관리 도구입니다. 이번 글에서는 리눅스 Logrotate가 무엇인지 알아보고, 설정 파일 확인부터 사용자 정의 설정과 테스트 방법까지 초보자도 따라 할 수 있도록 정리해 보겠습니다.


1. Logrotate란 무엇

인가?

Logrotate는 리눅스 서버에서 생성되는 로그 파일을 주기적으로 관리해 주는 프로그램입니다.

서버에서 발생하는 로그는 장애 원인을 분석하고 시스템 상태를 확인하는 데 매우 중요합니다. 하지만 로그를 계속 보관하면 파일 크기가 커지면서 디스크 공간을 차지하게 됩니다.

Logrotate를 사용하면 오래된 로그를 다음과 같이 관리할 수 있습니다.

  • 오래된 로그 파일을 새로운 파일로 교체
  • 이전 로그 파일을 압축
  • 일정 기간이 지난 로그 자동 삭제
  • 로그 파일을 일정 개수만 보관
  • 일간, 주간 또는 월간 단위로 로그 관리

즉, 로그를 무작정 삭제하지 않고 필요한 기간 동안 보관하면서 디스크 공간을 효율적으로 관리하는 기능이라고 이해하면 됩니다.


2. Logrotate 설정 파일 위치

대부분의 리눅스 시스템에서는 다음 경로에서 Logrotate 설정을 확인할 수 있습니다.

/etc/logrotate.conf

또한 프로그램별 세부 설정은 다음 디렉터리에 저장되는 경우가 많습니다.

/etc/logrotate.d/

먼저 기본 설정을 확인해 보겠습니다.

cat /etc/logrotate.conf

프로그램별 설정 파일도 확인할 수 있습니다.

ls -lah /etc/logrotate.d/

Nginx가 설치되어 있다면 다음과 같은 설정 파일이 존재할 수 있습니다.

ls -lah /etc/logrotate.d/nginx

다만 배포판이나 패키지 설치 방식에 따라 파일 이름과 기본 설정은 달라질 수 있습니다.


3. Logrotate 기본 설정 이해하기

/etc/logrotate.conf에는 로그 관리의 기본 정책을 설정할 수 있습니다.

대표적인 설정 옵션은 다음과 같습니다.

weekly
rotate 4
compress
delaycompress
missingok
notifempty

각 설정의 의미를 살펴보겠습니다.

weekly

로그를 일주일 단위로 로테이션합니다.

weekly

rotate 4

이전 로그를 4개까지 보관합니다.

rotate 4

예를 들어 주 단위로 실행한다면 최근 로그와 함께 일정 기간의 이전 로그를 유지할 수 있습니다.

compress

오래된 로그를 gzip 방식으로 압축합니다.

compress

로그 파일 크기를 줄여 디스크 공간을 절약하는 데 도움이 됩니다.

delaycompress

가장 최근에 로테이션된 로그는 바로 압축하지 않고 다음 로테이션 때 압축합니다.

delaycompress

missingok

로그 파일이 존재하지 않아도 오류를 발생시키지 않습니다.

missingok

notifempty

로그 파일이 비어 있다면 로테이션하지 않습니다.

notifempty

4. Nginx 로그 Logrotate 설정 예시

웹서버를 운영하면서 로그 파일이 계속 증가한다면 Nginx 로그에 Logrotate를 적용할 수 있습니다.

먼저 Nginx 로그 위치를 확인합니다.

ls -lah /var/log/nginx/

일반적으로 다음과 같은 로그가 사용됩니다.

access.log
error.log

사용자 정의 설정을 만들려면 다음 파일을 생성할 수 있습니다.

sudo nano /etc/logrotate.d/nginx-custom

예를 들어 다음과 같은 형태로 설정할 수 있습니다.

/var/log/nginx/*.log {
    daily
    rotate 14
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        systemctl reload nginx > /dev/null 2>&1 || true
    endscript
}

이 설정은 예시이므로 실제 서버 환경과 Nginx 로그 경로에 맞게 수정해야 합니다.


5. 설정 옵션을 하나씩 살펴보기

daily

로그를 매일 로테이션합니다.

daily

로그가 많이 생성되는 웹서버라면 유용할 수 있습니다.

rotate 14

최근 14개의 로테이션 로그를 보관하도록 설정합니다.

rotate 14

로그 보관 기간은 서버의 디스크 용량과 장애 분석에 필요한 보관 기간을 고려해서 결정해야 합니다.

compress

오래된 로그를 압축합니다.

compress

로그 파일이 큰 서버에서는 디스크 공간을 줄이는 데 효과적입니다.

sharedscripts

여러 로그 파일을 대상으로 로테이션할 때 후처리 스크립트를 한 번만 실행하도록 할 수 있습니다.

postrotate

로그 로테이션 이후 실행할 명령어를 지정합니다.

postrotate
    systemctl reload nginx
endscript

Nginx와 같은 서비스는 로그 파일이 변경된 것을 정상적으로 인식하도록 서비스에 reload를 적용하는 경우가 있습니다.


6. Logrotate 설정이 제대로 작동하는지 테스트하기

설정을 적용하기 전에 실제 파일을 변경하지 않고 테스트하는 것이 좋습니다.

다음 명령어를 사용할 수 있습니다.

sudo logrotate -d /etc/logrotate.conf

-d 옵션은 디버그 모드로 동작하기 때문에 실제 로테이션을 수행하지 않고 설정을 확인하는 데 도움이 됩니다.

설정 파일에 문제가 없는지 확인한 후 강제로 로테이션을 테스트하려면 다음 명령어를 사용할 수 있습니다.

sudo logrotate -f /etc/logrotate.conf

-f 옵션은 조건과 관계없이 로테이션을 강제로 실행합니다.

운영 서버에서는 -f 옵션을 사용할 때 주의해야 합니다. 실제 로그 파일에 변화가 발생할 수 있으므로 먼저 테스트 환경이나 디버그 모드에서 설정을 확인하는 것이 좋습니다.


7. Logrotate 실행 여부 확인하기

Logrotate는 일반적으로 시스템의 정기적인 작업 스케줄에 의해 실행됩니다.

설치된 시스템에서 관련 설정을 확인하려면 다음 명령어를 사용할 수 있습니다.

systemctl status logrotate.timer

시스템에 따라 cron이나 다른 스케줄러를 통해 실행될 수도 있으므로 환경에 맞게 확인해야 합니다.

최근 실행 로그를 확인할 때는 다음 명령어를 사용할 수 있습니다.

journalctl -u logrotate

만약 해당 서비스 단위 로그가 없다면 시스템의 cron 또는 timer 설정을 함께 확인하는 것이 좋습니다.


8. Logrotate 상태 파일 확인하기

Logrotate는 이전에 로그를 언제 로테이션했는지 기록하기 위해 상태 정보를 관리합니다.

다음 명령어로 상태 파일을 확인할 수 있습니다.

cat /var/lib/logrotate/status

배포판에 따라 상태 파일의 위치가 다를 수 있습니다.


9. 로그 관리 전에 디스크 공간 확인하기

Logrotate를 설정하기 전후에는 디스크 사용량을 확인하는 것이 좋습니다.

df -h

특정 디렉터리가 많은 공간을 사용하고 있는지 확인하려면 다음 명령어를 활용할 수 있습니다.

sudo du -sh /var/log/*

예를 들어 /var/log 아래에서 특정 로그 파일이 지나치게 큰 경우 해당 로그의 생성 주기와 Logrotate 설정을 점검할 수 있습니다.

inode 부족 문제까지 함께 확인하려면 다음 명령어도 유용합니다.

df -i

디스크 용량은 충분한데 파일 생성 오류가 발생한다면 inode 사용량이 100%에 가까운지도 확인해야 합니다.


10. Logrotate 설정 시 주의할 점

Logrotate는 디스크 공간을 관리하는 데 유용하지만 무조건 로그를 많이 삭제하는 방식으로 설정해서는 안 됩니다.

로그는 서버 장애나 보안 문제를 분석할 때 중요한 자료가 될 수 있기 때문입니다.

설정할 때는 다음 사항을 고려하는 것이 좋습니다.

첫째, 로그 보관 기간을 결정합니다.

서비스 장애 분석이나 운영 정책에 필요한 기간을 먼저 정해야 합니다.

둘째, 압축 여부를 결정합니다.

오래된 로그를 압축하면 저장 공간을 크게 절약할 수 있습니다.

셋째, 애플리케이션과 웹서버의 로그 재오픈 방식을 확인합니다.

서비스에 따라 로그 파일을 교체한 뒤 reload나 별도의 신호 처리가 필요할 수 있습니다.

넷째, 설정 후 반드시 테스트합니다.

특히 운영 서버에서 바로 강제 실행하기보다는 logrotate -d로 설정을 먼저 검증하는 것이 안전합니다.


11. Logrotate 설정으로 서버 디스크 공간 관리하기

서버를 장기간 운영할수록 로그 관리의 중요성은 커집니다.

처음에는 몇 MB에 불과했던 로그 파일이 시간이 지나면서 수 GB 이상으로 증가할 수도 있습니다.

특히 다음과 같은 서버에서는 정기적인 로그 관리가 중요합니다.

  • Nginx 웹서버
  • Apache 웹서버
  • 애플리케이션 서버
  • 데이터베이스 서버
  • API 서버
  • Docker 환경
  • 여러 서비스가 동시에 실행되는 Linux 서버

Logrotate를 적절하게 설정하면 오래된 로그를 압축하고 불필요한 로그를 정리해 디스크 공간 부족으로 발생하는 서버 장애를 예방하는 데 도움이 됩니다.


마무리

리눅스 서버에서 로그 파일은 장애 원인을 분석하고 시스템 상태를 확인하는 중요한 자료입니다. 하지만 로그를 관리하지 않고 계속 쌓아두면 디스크 공간이 부족해져 서비스 장애로 이어질 수 있습니다.

Logrotate는 이러한 로그 파일을 일정한 주기로 관리하고 압축·보관·삭제할 수 있도록 도와주는 기본적인 리눅스 서버 관리 도구입니다.

특히 Nginx나 Apache처럼 로그가 빠르게 증가하는 서버라면 /etc/logrotate.conf와 /etc/logrotate.d/의 설정을 확인하고 서버 환경에 맞는 로그 보관 정책을 만들어 두는 것이 좋습니다.

마지막으로 다음 명령어를 기억해 두면 서버 로그 관리에 유용합니다.

df -h
sudo du -sh /var/log/*
sudo logrotate -d /etc/logrotate.conf
sudo logrotate -f /etc/logrotate.conf

로그 관리는 단순히 디스크 공간을 확보하는 작업이 아니라 서버 장애를 예방하고 안정적인 운영 환경을 만드는 중요한 관리 작업입니다.

함께 알아두면 좋은 리눅스 서버 관리 명령어

  • df -h : 디스크 전체 용량과 사용량 확인
  • df -i : inode 사용량 확인
  • du -sh : 디렉터리별 디스크 사용량 확인
  • find : 오래된 로그 파일이나 특정 파일 검색
  • journalctl : 시스템 로그 확인
  • logrotate : 로그 파일 자동 순환 및 관리