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 로그 관리만 잘해도 디스크 이슈 예방 + 보안 감사 추적 + 문제 분석이 쉬워집니다.
반응형