02. 클라우드 보안 공부/실습로그

✅ [실습로그] 로그 관리 자동화 실습 – logrotate로 로그 순환 설정하기

taegi- 2025. 5. 5. 16:28

🎯 실습 목표

리눅스에서 서비스가 생성하는 로그는 계속 누적되기 때문에
자동으로 압축/백업/삭제되도록 관리하는 것이 필수다.
이 실습에서는 logrotate를 활용해 로그 파일을 주기적으로 정리하고,
보관 주기, 백업 개수, 압축 여부 등을 직접 설정해 보았다.


🖥️ 실습 환경

  • Rocky Linux 9.5
  • 실습 사용자: root
  • 실습 경로: /logrotate
  • 도구: logrotate, gzip

⚙️ 실습 과정

✅ 실습 1: 테스트용 로그 생성

테스트를 위해 로그 파일이 존재할 경로를 만들고, 임의의 로그 파일을 생성하였다.

bash
복사편집
mkdir /logrotate vi /logrotate/log.txt

→ log.txt에 임의 텍스트 입력 후 저장


✅ 실습 2: logrotate 설정 파일 작성

로그 순환 설정을 위해 별도 설정 파일을 작성한다.
설정 경로는 /etc/logrotate.d/ 하위에 파일명을 자유롭게 지정할 수 있다.

bash
복사편집
vi /etc/logrotate.d/logrotate-test
conf
복사편집
/logrotate/log.txt { weekly rotate 3 compress missingok notifempty }
  • weekly: 주 1회 순환
  • rotate 3: 최대 3개까지 보관
  • compress: 오래된 로그는 .gz 형식으로 압축
  • missingok: 로그가 없어도 무시하고 계속 진행
  • notifempty: 파일 내용이 없으면 순환 생략

→ 설정이 끝나면 logrotate가 cron을 통해 주기적으로 자동 실행된다.


✅ 실습 3: logrotate 강제 실행 테스트

정기 주기를 기다리지 않고 바로 동작을 확인하기 위해 -f 옵션으로 강제 실행한다.

bash
복사편집
logrotate -f /etc/logrotate.d/logrotate-test

→ 별다른 출력 없이 조용히 처리됨


✅ 실습 4: 결과 확인

bash
복사편집
ls -l /logrotate

예시 출력:

diff
복사편집
-rw-r--r-- 1 root root 0 May 7 18:30 log.txt -rw-r--r-- 1 root root 110 May 7 18:30 log.txt.1.gz
  • 기존 log.txt는 초기화되었고
  • .1.gz는 이전 로그의 압축 백업본

→ 이후에도 설정대로 실행되면 .2.gz, .3.gz까지 생성되고,
rotate 3을 넘는 오래된 백업은 자동 삭제된다.


🔐 실무 활용 포인트

  • /var/log 디렉터리 내 로그 파일이 많은 시스템일수록 logrotate 설정이 필수다.
  • 웹 서버, DB, 사용자 정의 서비스 로그에 대해 각각 다른 정책을 적용할 수 있다.
  • 오래된 로그는 자동 압축되므로 디스크 용량을 아끼는 데도 큰 도움이 된다.
  • 보안 로그(/var/log/secure 등)는 daily, rotate 30 등으로
    보관 주기와 이력 길이를 길게 설정하는 게 좋다.

🧠 실습 요약

항목설정설명
순환 주기 weekly, daily, monthly 얼마나 자주 정리할지
백업 개수 rotate 3 최대 몇 개까지 보관할지
압축 여부 compress 오래된 로그를 .gz로 저장
파일 조건 notifempty, missingok 파일 존재 조건 설정
테스트 실행 logrotate -f 경로 설정을 강제로 실행
 

💬 느낀 점

기존에는 로그가 쌓이면 삭제하거나 직접 초기화했지만,
logrotate를 설정해두면 한 번의 설정으로 완전히 자동화된다는 점이 매우 효율적이었다.
특히 직접 만든 서비스나 스크립트의 로그도
logrotate 설정만 추가하면 운영 환경에서도 지속 가능한 로그 관리 체계를 만들 수 있다는 확신이 생겼다.