우분투 실전 명령어 | logrotate로 로그 용량 폭증 방지 설정

언제 쓰는가

운영 중인 서버에서 /var/log가 빠르게 불어나 디스크를 압박할 때 가장 먼저 손보는 게 logrotate입니다. 특히 Nginx, 애플리케이션, 배치 로그가 하루 단위로 쌓이면 방치 시 장애로 이어지기 쉽습니다. "로그는 남기되 용량은 통제"가 필요할 때 바로 적용하면 됩니다.

바로 쓰는 명령어

# 1) 현재 logrotate 설정 점검
sudo logrotate --debug /etc/logrotate.conf | less

# 2) 서비스별 설정 확인
cat /etc/logrotate.d/nginx

# 3) 커스텀 로그 회전 정책 파일 생성
sudo tee /etc/logrotate.d/myapp >/dev/null <<'EOF'
/var/log/myapp/*.log {
    daily
    rotate 14
    missingok
    notifempty
    compress
    delaycompress
    dateext
    copytruncate
    su root adm
}
EOF

# 4) 문법/동작 테스트
sudo logrotate --debug /etc/logrotate.conf

# 5) 즉시 강제 회전 테스트
sudo logrotate --force /etc/logrotate.conf

핵심 옵션/패턴

# 주기
weekly          # 주간 회전
monthly         # 월간 회전

# 보관 개수
rotate 8        # 최근 8개 파일 보관

# 압축
compress
delaycompress   # 직전 회전 파일은 다음 회전 시점에 압축

# 예외 처리
missingok       # 파일 없어도 에러 내지 않음
notifempty      # 빈 파일은 회전하지 않음

# 프로세스가 파일 핸들을 잡고 있을 때
copytruncate    # 원본을 복사 후 잘라내기(재시작 없이 대응)

자주 하는 실수

  • copytruncate 없이 회전만 걸어두고 "로그가 안 줄었다"고 오해하는 경우가 많습니다. 프로세스가 기존 파일 핸들을 계속 쓰면 파일이 기대처럼 줄지 않습니다.
  • rotate 값을 너무 작게 잡아 장애 분석에 필요한 과거 로그가 사라지기도 합니다. 서비스 중요도에 맞춰 보관 기간을 먼저 계산하세요.
  • --force를 운영 시간에 무심코 반복 실행하면 I/O가 튈 수 있습니다. 트래픽이 낮은 시간에 검증하는 게 안전합니다.

검증 방법

# 회전 결과 확인
ls -lh /var/log/myapp/

# 최근 실행 상태 확인
sudo cat /var/lib/logrotate/status | tail -n 20

# 압축 파일 포함 용량 확인
du -sh /var/log/myapp

# 시스템 로그에서 logrotate 실행 흔적 확인
journalctl -u cron -n 50 --no-pager | grep -i logrotate

실행 결과 예시

$ sudo logrotate --debug /etc/logrotate.conf
reading config file /etc/logrotate.conf
including /etc/logrotate.d
reading config file nginx
reading config file myapp
...
rotating pattern: /var/log/myapp/*.log  after 1 days (14 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/myapp/app.log
  log needs rotating
$ ls -lh /var/log/myapp/
-rw-r----- 1 root adm  12M Feb 18 21:20 app.log
-rw-r----- 1 root adm 1.8M Feb 17 00:00 app.log-20260217.gz
-rw-r----- 1 root adm 2.1M Feb 16 00:00 app.log-20260216.gz

출처

  • Ubuntu Server Guide
  • logrotate man page
  • Debian logrotate package notes