728x90
우분투에서 Logrotate를 설정하는 방법
Logrotate는 로그 파일의 크기 증가를 방지하고 디스크 공간을 효율적으로 관리하기 위해 로그 파일을 주기적으로 압축, 이동, 삭제하는 도구입니다.
1. Logrotate 기본 구조 이해
Logrotate는 기본 설정 파일과 개별 설정 파일을 사용합니다.
- 기본 설정 파일 : /etc/logrotate.conf
- 개별 애플리케이션 설정 파일 : /etc/logrotate.d
2. Logrotate 기본 설정 파일 확인
/etc/logrotate.conf 파일은 시스템 전체에 적용되는 기본 정책을 정의합니다.
cat /etc/logrotate.conf
# see "man logrotate" for details
# global options do not affect preceding include directives
# rotate log files weekly
weekly
# use the adm group by default, since this is the owning group
# of /var/log/.
su root adm
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
#dateext
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# system-specific logs may also be configured here.
3. 애플리케이션별 Logrotate 설정
/etc/logrotate.d/ 디렉토리에 개별 설정 파일을 생성하거나 수정합니다.
예: nginx 로그 파일 관리 설정 추가
vim /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily # 매일 로그 로테이션
dateext
rotate 14 # 14회차 보관
compress # 압축 활성화
delaycompress # 이전 로그는 다음 로테이션 시 압축
missingok # 로그 파일이 없어도 에러 없이 진행
notifempty # 빈 파일은 무시
create 0640 nginx adm # 새 로그 파일 생성 권한 및 소유자 지정
sharedscripts # 여러 파일에 대해 postrotate 스크립트 한 번 실행
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
더보기
---
sudo tee /etc/logrotate.d/nginx > /dev/null <<'EOF'
/var/log/nginx/*.log {
daily
dateext
rotate 14
missingok
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
EOF
---
4. Logrotate 테스트
설정이 올바른지 테스트합니다.
- -d 옵션은 디버그 모드로 실제로 로그 파일을 변경하지 않고 수행 과정을 출력합니다.
sudo logrotate -d /etc/logrotate.conf
5. Logrotate 수동 실행
로그 파일을 즉시 로테이션합니다.
sudo logrotate -f /etc/logrotate.conf
6. Cron을 통한 Logrotate 자동 실행 확인
Logrotate는 일반적으로 Cron에 의해 자동 실행됩니다.
- cron 서비스가 실행 중인지 확인
systemctl status cron.service
- Logrotate 관련 Cron 설정 확인
cat /etc/cron.daily/logrotate
#!/bin/sh
# skip in favour of systemd timer
if [ -d /run/systemd/system ]; then
exit 0
fi
# this cronjob persists removals (but not purges)
if [ ! -x /usr/sbin/logrotate ]; then
exit 0
fi
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit $EXITVALUE
7. Logrotate 설정 파일 유효성 검사
설정 파일에 오류가 있는지 확인
sudo logrotate -v /etc/logrotate.conf
Logrotate 설정이 완료되면 로그 파일이 효율적으로 관리되는지 정기적으로 확인하세요.
728x90
'리눅스' 카테고리의 다른 글
[draft] 우분투에서 RackTables를 설치하는 방법 (0) | 2025.01.17 |
---|---|
[draft] 우분투에서 python 명령어를 사용할 수 있도록 설정하는 방법 (0) | 2025.01.17 |
[draft] PHP-FPM Pool을 구성하는 방법 (0) | 2025.01.14 |
[draft] 우분투에서 최신 버전의 Docker를 설치하는 방법 (0) | 2025.01.13 |
[draft] NGINX에서 가상 호스트에 HTTP2를 설정하는 방법 (0) | 2025.01.08 |