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
아래는 개략적인 옵션들에 대해서 정리해두었습니다.
회전 주기와 관련된 옵션: 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 |
댓글