Web Servers

Apache 로그 로테이션(Log Rotation) 설정 방법

midworker 2025. 5. 14. 21:26
반응형

Apache 로그 로테이션(Log Rotation) 설정 방법

Apache 웹서버는 지속적으로 로그(access_log, error_log)를 생성하기 때문에, 적절한 로그 로테이션 설정이 없으면 디스크 공간이 급격히 소모될 수 있습니다.
이 글에서는 Apache의 로그 파일을 안전하게 관리하는 로그 로테이션 2가지 방법을 소개합니다:


✅ 방법 1: 시스템 도구 logrotate 사용 (권장)

리눅스 대부분의 배포판은 logrotate를 통해 Apache 로그를 주기적으로 압축, 백업, 삭제할 수 있습니다.

1. logrotate 설정 파일 위치

  • RHEL/CentOS: /etc/logrotate.d/httpd
  • Ubuntu/Debian: /etc/logrotate.d/apache2

2. 기본 설정 예시

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

주요 옵션 설명

옵션 설명
daily 매일 로테이션
rotate 14 14일치 로그 보관
compress 오래된 로그 gzip 압축
postrotate 로그 분리 후 Apache reload 수행
notifempty 비어 있는 로그 파일은 로테이션하지 않음

✅ 방법 2: Apache rotatelogs 유틸리티 사용

Apache 자체적으로 로그 파일을 일정 간격으로 나눌 수 있습니다.

1. httpd.conf에서 rotatelogs 설정

CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log.%Y%m%d 86400" combined
ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/error_log.%Y%m%d 86400"
  • "|" 파이프를 이용해 로그를 rotatelogs에 전달
  • 86400 → 하루(초 단위) 간격으로 로그 분리
  • %Y%m%d → 날짜별 로그 파일 이름 생성

2. rotatelogs 주요 옵션

포맷 예시 설명
%Y%m%d%H%M 날짜 + 시간 기반
3600 1시간 단위 회전
size 100M 파일 용량 기준 회전 (Apache 2.4.5+ 지원)

✅ 비교 요약

항목 logrotate rotatelogs
설정 위치 OS (cron 기반) Apache 설정 내부
분 단위 설정 어렵다 가능
압축 지원 자동 (compress) 수동 처리 필요
백업 관리 rotate N 등 가능 없음
reload 필요 여부 reload 필요 무중단 회전 가능

✅ 마무리

운영 환경에 따라 다음을 권장합니다:

  • 시스템 로그 통합 관리가 필요할 경우: logrotate
  • 정밀한 시간 단위 회전이 필요한 경우: rotatelogs
  • 중복 설정은 피하고 한 가지만 사용

Apache 로그 관리만 잘해도 디스크 이슈 예방 + 보안 감사 추적 + 문제 분석이 쉬워집니다.

반응형