리눅스 logrotate 사용법 (로그 자동 관리 설정)
리눅스 서버를 운영하다 보면 다양한 로그 파일이 계속해서 생성된다. 시스템 로그, 인증 로그, 웹 서버 로그 등 여러 종류의 로그가 시간에 따라 쌓이게 되는데, 이를 관리하지 않으면 디스크 공간을 빠르게 차지하게 된다.
특히 서버를 장기간 운영하다 보면 로그 파일의 크기가 수 GB 이상으로 커지는 경우도 흔하다. 이런 상황이 계속되면 디스크 공간 부족 문제가 발생할 수 있고, 심한 경우 서비스 운영에도 영향을 줄 수 있다.
이러한 문제를 해결하기 위해 리눅스에서는 logrotate라는 도구를 제공한다. logrotate는 로그 파일을 일정한 기준에 따라 자동으로 관리해 주는 유틸리티로, 로그 파일을 주기적으로 압축하거나 삭제하고 새로운 로그 파일을 생성하는 작업을 자동으로 수행한다.
한마디로 로그 파일을 사람이 직접 관리하지 않아도 시스템이 자동으로 정리해 주도록 설정할 수 있다. 그렇다면 뭐다? 설정을 안할 이유가 없다.
logrotate란 무엇인가
logrotate는 리눅스에서 로그 파일을 관리하기 위한 도구로, 다음과 같은 작업을 자동으로 수행할 수 있다.
- 로그 파일 크기 또는 기간 기준으로 분리
- 오래된 로그 파일 삭제
- 로그 파일 압축
- 로그 파일 보관 개수 관리
- 새로운 로그 파일 생성
대부분의 리눅스 배포판에서는 logrotate가 기본적으로 설치되어 있다.
설치 여부는 다음 명령어로 확인할 수 있다.
logrotate --version
버전 정보가 출력된다면 이미 시스템에 설치되어 있는 상태다.
logrotate 설정 파일 위치
logrotate의 주요 설정 파일은 다음 위치에 있다.
/etc/logrotate.conf
이 파일에는 기본 로그 관리 정책이 정의되어 있다.
또한 개별 서비스별 설정 파일은 다음 디렉터리에 존재한다.
/etc/logrotate.d/
예를 들어 nginx나 apache 같은 서비스는 이 디렉터리에 각각의 설정 파일을 가지고 있는 경우가 많다.
현재 어떤 설정 파일이 있는지 확인하려면 다음 명령어를 사용할 수 있다.
ls /etc/logrotate.d기본 logrotate 설정 예시
logrotate 설정은 비교적 단순한 구조로 되어 있다.
예를 들어 다음과 같은 설정을 살펴보자.
/var/log/syslog {
daily
rotate 7
compress
missingok
notifempty
}
각 옵션의 의미는 다음과 같다.
| 옵션 | 의미 |
|---|---|
| daily | 로그 파일을 하루 단위로 분리한다. |
| rotate 7 | 최대 7개의 로그 파일을 보관한다. |
| compress | 오래된 로그 파일을 gzip 형식으로 압축한다. |
| missingok | 로그 파일이 없어도 오류를 발생시키지 않는다. |
| notifempty | 즉 이 설정은 syslog 파일을 하루 단위로 관리하면서 최대 7개의 로그를 보관하고, 오래된 로그는 자동으로 압축하는 방식이다. |
로그 크기 기준으로 관리하기
로그 파일을 시간 기준이 아니라 파일 크기 기준으로 관리할 수도 있다.
예를 들어 로그 파일이 100MB 이상이 되면 분리하도록 설정할 수 있다.
/var/log/mylog.log {
size 100M
rotate 5
compress
}
이 설정은 로그 파일이 100MB 이상이 되면 새로운 로그 파일을 생성하고, 최대 5개의 로그 파일을 보관한다.
logrotate 수동 실행
설정이 제대로 동작하는지 확인하려면 logrotate를 수동으로 실행해 볼 수 있다.
logrotate -f /etc/logrotate.conf
-f 옵션은 강제로 로그 회전을 수행하는 옵션이다.
이 명령어를 사용하면 설정이 제대로 적용되는지 테스트할 수 있다.
logrotate 자동 실행
대부분의 리눅스 시스템에서는 cron 작업을 통해 logrotate가 자동으로 실행된다.
보통 다음 위치에 스크립트가 존재한다.
/etc/cron.daily/logrotate
즉 하루에 한 번 logrotate가 자동으로 실행되면서 로그 파일을 정리하게 된다.
로그 관리의 중요성
서버 운영에서 로그는 문제 해결을 위한 중요한 정보이지만, 관리되지 않으면 디스크 공간을 빠르게 소모하는 원인이 될 수 있다.
특히 다음과 같은 서비스에서는 로그가 빠르게 증가한다.
- 웹 서버 (nginx, apache)
- 데이터베이스
- 애플리케이션 서버
- 인증 로그
이러한 로그 파일을 효율적으로 관리하기 위해 logrotate 설정은 거의 필수적인 작업이라고 볼 수 있다. 리눅스 서버를 안정적으로 운영하려면 로그 확인뿐만 아니라 로그 관리 정책도 함께 설정해 두는 것이 중요하다. logrotate를 활용하면 로그 파일을 자동으로 정리할 수 있어 서버 운영을 훨씬 안정적으로 유지할 수 있다. 서버를 운영하다 보면 로그는 항상 쌓이게 되어 있다. 문제는 로그가 쌓이는 것 자체가 아니라 그 로그를 어떻게 관리하느냐에 있다. 로그를 주기적으로 확인하는 것도 중요하지만, 로그 파일이 계속해서 증가하는 상황을 대비해 logrotate와 같은 관리 정책을 미리 설정해 두는 것이 서버 운영에서 훨씬 안정적인 방법이다.
만약 본인이 리눅스 서버를 운영하고 있다면 오늘 하루 로그 확인과 함께 logrotate 설정도 점검해 보는 시간을 가져 보자.
혹시 리눅스 로그 파일 위치가 궁금하다면 아래 글도 함께 참고해 보길 바란다.

Add your first comment to this post