리눅스 서버에서 프로그램을 수행할 때 발생하는 에러 또는 수행 결과 등을 로그로 남기면 에러가 발생하거나 추후 결과를 확인하고 싶은 경우 등에 유용하게 사용할 수 있습니다.
crontab을 이용해서 프로그램을 수행하는 경우에는 별도로 로그를 남기지 않으면 프로그램의 수행 결과 및 에러 발생 여부등을 확인하기 어려워서 로그를 남기는 것이 필수인데요. 로그는 주기적으로 관리해주지 않으면 서버의 디스크 용량을 차지하게 되므로 주기적으로 오래된 로그를 정리해 주는 작업이 필요합니다.
이 때 유용하게 사용할 수 있는 것이 바로 로그로테이트(logrotate)라는 프로그램입니다. 이번 시간에는 logrotate를 사용하여 로그를 주기적으로 정리하여 서버의 디스크 용량을 낭비하지 않는 방법에 대해서 살펴 보겠습니다.
목차 - 클릭하면 이동합니다.
로그 로테이트(logrotate)
로그 로테이트란?
간단하게 리눅스에서 사용할 수 있는 로그 관리 프로그램이라고 생각하면 됩니다. logrotate를 사용하면 특정 폴더에 쌓이는 로그를 날짜별로 나누어서 관리할 수 있으며 기준을 정하면 해당일 이전 로그는 삭제하여 시스템 용량을 낭비하지 않을 수 있습니다.
로그 로테이트의 구조 및 설정 방법
/etc/logrotate.conf : 로그 로테이트의 기본 설정 파일
/etc/logrotate.d/ : 로그 로테이트의 개별 설정 파일이 들어있는 폴더
cat /etc/logrotate.conf
위의 명령어로 기본 설정을 살펴보겠습니다.
위의 설정에 의하면 log는 주 단위로 백업되며 4주동안 보관하며 그 이후의 로그는 삭제됩니다. 로그는 일자형태로 새로 생성되며 별도로 압축은 하지 않습니다. 자세한 설정 방법은 아래와 같습니다.
# log 회전 주기 yearly : 매년, monthly : 매월, weekly : 매주, daily : 매일
daily
# log 파일 개수, 해당 개수가 넘어가면 기존 로그 삭제
rotate 2
# 새로운 log 파일 생성 여부, create : log 파일 생성 / empty : 파일 새로 생성하지 않음
create
# 파일명 날짜별로 관리
dateext
# log파일 압축 여부
#compress
# 개별 로그 process 설정 경로 포함
include /etc/logrotate.d
그럼 이번에는 logrotate.d 폴더에 있는 개별 설정은 어떤 것들이 있는지 살펴 보겠습니다.
여러가지 개별 설정 파일들이 보이는데 이 중 하나를 살펴 보겠습니다.
이렇게 특정 폴더에 있는 파일들에 대해서 개별적으로 로그 관리에 대한 방법을 설정 할 수 있습니다. 아래 개별 파일에 대한 설정 예시 입니다.
/home/python/logs/*.log {
su python python
daily
rotate 2
dateext
dateyesterday
missingok
copytruncate
notifempty
}
① 로그 정리 대상 파일 : /home/python/logs 폴더 아래에 *.log로 끝나는 파일
② su python python : root가 아닌 python 계정으로 실행
③ daily : 일별로 로그파일 관리
④ rotate 2 : 2일 동안(2개)만 로그 보관
⑤ dateext : 날짜별로 로그 관리
⑥ dateyesterday : 날짜가 바뀔때 어제 날짜로 바꿈(1/1일에서 1/2일로 넘어갈때 1/1에 생성하던 로그는 *.log.20220101로 바꾸고 새로운 로그 파일을 *.log로 생성함)
⑦ missingok : 로그파일이 없어도 문제되지 않음
⑧ copytruncate : 로그파일의 순환시 누락을 방지하기 위해 기존 로그를 먼저 copy한 후 truncate하는 방식으로 새 파일을 생성함
⑨ notifempty : 로그파일이 비어있으면 로테이트 하지 않음
마치며
로그는 프로그램 수행 여부 및 에러 대처를 위해 꼭 필요하기 때문에 자세하게 남기는 것이 좋지만 디스크 용량을 낭비할 수 있기 때문에 필요한 만큼만 남기는 것이 중요합니다.
오늘 살펴본 로그로테이트를 이용하여 필요한 로그만 보관하여 디스크 용량을 합리적으로 사용하시면 좋을 것 같습니다.
블로그를 구독하시면 소식을 조금 더 빨리 받아볼 수 있습니다. 감사합니다.
'코딩스토리 > 리눅스' 카테고리의 다른 글
리눅스 실행중인 프로세스 검색 및 강제 종료하기 (0) | 2022.01.24 |
---|---|
오라클 리눅스 8 - 오라클 클라이언트 설치하기 (5) | 2022.01.20 |
리눅스 서버에 파이썬 3.9 설치하기 (3) | 2022.01.13 |
리눅스 서버시간 및 타임존 확인 및 변경하기 (4) | 2022.01.07 |
리눅스 크론탭 사용법 - Linux crontab (2) | 2022.01.07 |
SSH Key를 이용해서 SFTP로 서버에 접속하기 - Filezilla sFTP 프로그램 이용 (0) | 2021.12.02 |