본문 바로가기
Computer Science/UNIX & LINUX

Logrotate 살펴보기: 리눅스 로그관리

by PROGRAMMER_황금돼지코 2023. 4. 11.
반응형

Logrotate란?

Logrotate는 리눅스 시스템에서 로그 파일을 관리하는 프로그램입니다.

여기서 로그 파일이란 시스템에서 발생한 작업 및 이벤트에 대한 정보의 기록입니다. 이때, 로그 파일을 제대로 관리하지 않으면 디스크 공간이 부족해지고 시스템 문제를 파악하는 데 어려움을 겪을 수 있습니다.

 

Logrotate 구성

크게 다음과 같이 2가지 설정을 담당하는 파일 있습니다.

 

1. /etc/logrotate.conf

2. /etc/logrotate.d/*

 

첫 번째 logrotate.conf 파일은 로그 파일 회전에 대한 전역 설정을 담당하며, 시스템 전체에 적용됩니다. 

반면, 두 번째 logrotate.d/* 디렉터리 안의 설정 파일들은 각 로그 파일별로 별도의 설정 파일을 설정하기 위해 사용됩니다. logrotate.conf보다 우선순위가 높아, 설정을 추가하거나 덮어쓸 수 있습니다.

 

logrotate.d/* 디렉터리의 작성 파일 예시:

/www/test/logs/*.log {
	daily # 매일 로그 파일을 회전
	dateext # 로그 파일 이름에 날짜 확장자를 추가
	compress #로그 파일을 압축합니다.
	missingok #로그 파일이 없어도 오류로 처리하지 않습니다.
	notifempty #로그 파일이 비어있으면 회전시키지 않습니다.
	dateyesterday # 로그 파일 이름에 어제 날짜를 추가
	missingok # 회전할 로그 파일이 없을 경우 에러를 발생시키지 않음
	rotate 61 # 최대 61개까지 로그 파일을 유지
	create 0640 www-data adm  #adm은 일반적으로 시스템로그와 관련된 작업을 수행하는 그룹.
}

 

사용할 수 있는 자세한 옵션들은 다음 공식 문서를 참고해주시면 됩니다.

https://linux.die.net/man/8/logrotate

 

logrotate(8) - Linux man page

logrotate(8) - Linux man page Name logrotate - rotates, compresses, and mails system logs Synopsis logrotate [-dv] [-f|--force] [-s|--state file] config_file .. Description logrotate is designed to ease administration of systems that generate large numbers

linux.die.net

 

아래는 개략적인 옵션들에 대해서 정리해두었습니다.

 

회전 주기와 관련된 옵션: daily, weekly, monthly

로그 파일 유지 기간과 관련된 옵션: maxage, rotate
로그 파일 크기와 관련된 옵션: maxsize, size
로그 파일 압축과 관련된 옵션: compress, delaycompress
새로운 로그 파일 생성과 관련된 옵션: create, su
회전 이전과 이후에 실행할 명령어와 관련된 옵션: prerotate, postrotate, sharedscripts
로그 파일이 비어 있을 경우 회전 여부와 관련된 옵션: ifempty, notifempty, missingok
로그 파일 이름과 관련된 옵션: dateext, dateformat

 

Logrotate 설정

#수동으로 실행하기 위한 명령어
sudo logrotate -f /etc/logrotate.d/mylog

위 명령어를 참조하여 cron 작업을 추가하고, Logrotate가 자동으로 실행되도록 예약하면 됩니다. 기본적으로 cron에 등록되어 있지 않으면 logrotate가 주기적으로 실행되지 않습니다.

sudo crontab -e

그런 다음 파일에 다음 줄을 추가합니다.

0 0 * * * /usr/sbin/logrotate -f /etc/logrotate.d/mylog > /dev/null 2>&1

여기서 /dev/null 2>&1에 관해 설명하자면

 

"/dev/null"은 리눅스에서 특수한 파일로, 모든 데이터를 버리는 용도로 사용됩니다. 즉, 이 파일에 데이터를 쓰면 해당 데이터는 아무것도 저장되지 않고, 읽으면 항상 빈값만을 반환합니다. 하지만 windows의 휴지통과는 다른 개념으로 /dev/null은 버리면 바로 삭제되고, 파일을 삭제하는 것이 아니라 출력 결과를 무시하거나, 출력을 저장하지 않는 용도로 사용되는 특수한 파일입니다. 만약 windows의 휴지통과 같이 파일을 삭제하려면 rm 명령어를 사용해야합니다.

 

"2>&1"은 리다이렉션(redirection) 기능 중 하나로, 명령어의 표준 에러 출력(Standard Error)을 표준 출력(Standard Output)으로 병합하는 기능입니다. 리눅스나 유닉스 운영체제에서는 일반적으로 표준 출력과 표준 에러 출력이 별도로 처리되며, 각각 다른 위치로 리다이렉션할 수 있습니다. 표준 출력과 표준 에러 출력은 터미널에 출력되거나 파일로 저장됩니다.

여기서 "2>&1"을 사용하면, 명령어의 표준 에러 출력을 표준 출력으로 병합할 수 있습니다. 이렇게 병합된 출력은 같은 위치로 리다이렉션됩니다. 예를 들어, "command > file 2>&1"과 같이 사용하면, 명령어의 표준 출력과 표준 에러 출력이 모두 "file"이라는 파일로 리다이렉션됩니다.

 

즉, "0 0 * * * /usr/sbin/logrotate -f /etc/logrotate.d/mylog > /dev/null 2>&1"은 에러 메시지도 출력 결과와 함께 버리도록 설정하는 역할을 합니다.

 

이러한 리다이렉션 기능은 주로 크론(cron) 작업 등에서 사용되어, 실행 결과를 불필요한 출력으로부터 보호하고, 로그 파일 등에 저장된 실행 결과만을 확인하고자 할 때 유용합니다

 

FAQs

Q1. 로그 파일 관리를 하지 않으면 어떤 일이 일어날까요?
로그 파일을 관리하지 않으면 디스크 공간을 빠르게 채우고 시스템이 느려지거나 충돌할 수 있습니다. 시스템이 원활하게 작동하도록 정기적으로 이전 로그 파일을 삭제하고 관리해야 합니다.

 

Q2. 로그 파일 압축을 해야 할까요?
로그 파일 압축을 사용하면 디스크 공간을 절약할 수 있습니다. 그러나 압축된 파일은 읽기가 어려울 수 있으므로 압축 여부는 필요에 따라 결정해야 합니다.

 

Q3. 꼭, logrotate를 사용해야 하나요?

아니요! 보통은 대개 logrotate를 사용하지만, 더 세부적인 옵션을 사용하려면 웹 서버 소프트웨어(apache,nginx)에서 로그 파일을 설정할 수도 있습니다.

 

반응형

'Computer Science > UNIX & LINUX' 카테고리의 다른 글

소프트웨어 관리  (0) 2023.03.30
리눅스 부팅과 종료  (0) 2023.03.30
파일 시스템 & 디스크 관리  (0) 2023.03.30
프로세스 관리  (0) 2023.03.30
파일 접근 권한 관리  (0) 2023.03.30

댓글