일반적으로 로그파일은 모든 문제 해결 함에서 매우 중요한 부분이지만 시간이 지남에 따라 부피가 증가합니다. 이 경우 공간을 확보하기 위해 로그파일 정리를 수동으로 수행해야하는데 이는 지루한 관리 작업입니다. 이 문제를 해결하기 위해 Linux에서 logrotate 프로그램을 구성하여 로그 파일의 회전, 압축, 삭제 및 메일 링을 자동으로 수행 할 수 있습니다.
각 로그 파일을 매일, 매주, 매월 또는 너무 커질 때 처리 할 수 있도록 logrotate 프로그램을 구성 할 수 있습니다.
logrotate 작동 방식
기본적으로 /etc/cron.daily
cron 태스크 에서와 같이 logrotate 명령을 하루에 한 번 실행하면 특정 시간 이상 또는 로그 파일 크기가 회전하는 전략을 설정하는 데 도움이됩니다.
명령: /usr/sbin/logrotate
구성 파일 : /etc/logrotate.conf
이것은 logrotate의 기본 구성 파일입니다. logrotate는 /etc/logrotate.d/
특정 서비스의 구성 에도 저장됩니다. /etc/logrotate.conf
특정 서비스 로깅 구성을 읽으려면 해당 라인이 다음 에 포함되어 있는지 확인하십시오 .
include /etc/logrotate.d`
로그 기록 : /var/lib/logrotate.status
중요한 logrotate 옵션 :
compress --> 로그파일 압축여부
daily,weekly,monthly --> 로그파일분할 시간지정.
delaycompress --> 최근파일외 전부압축
errors "emailid" --> 에러발생시 메일발솔여부 지정.
missingok --> 로그파일분실시 에러로 인정안함.
notifempty --> 로그파일이 제로인경우 분할하지않음.
olddir "dir" --> 분할된 로그파일을 지정한 디렉토리에 저장함.
postrotate --> 로그파일분할후 실행할 script지정.
prerotate --> 로그파일분할전 실행할 script지정.
rotate 'n' --> 저장할 로그파일개수 지정
sharedscripts --> 한세트의 로그파일에 한번만 로그분할작업 실행.
size='logsize' --> 로그파일이 지정된 logsize보다 클떄만 분할( 예:
100K,4M)
실전
/etc/logrotate.d 폴더에 nginx라는 파일을 만들어 줍니다.
#cd /etc/logrotate.d
#nano nginx
/home/wwwlogs/*.log {
su root root
size 2M
rotate 5
missingok
compress
delaycompress
#olddir /home/wwwlogs/old
create 640 www root
notifempty
sharedscripts
postrotate
[ -e /usr/local/nginx/logs/nginx.pid ] && kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
endscript
}
위 내용은 로그파일이 2m보다 클떄 분할하되 5개파일만 저장하며 최근파일은 압축하지 않는다는 뜻입니다.
보통 logrotate는 하루에 한번씩 실행하도록 지정되여있습니다. 실행가능여부를 확인하기위해 하기명령으로 강제 실행할수 있습니다.
/usr/sbin/logrotate -f /etc/logrotate.conf
로그파일폴더에 들어가 분할되였는지 확인하여 주시면 됩니다.
-rw-r----- 1 www root 643896 Jul 4 14:44 www.wp-vps.com.log
-rw-r----- 1 www root 2138246 Jul 2 06:21 www.wp-vps.com.log.1
-rw-r----- 1 www root 184139 Jun 24 06:22 www.wp-vps.com.log.2.gz
-rw-r----- 1 www root 149924 Jun 13 06:19 www.wp-vps.com.log.3.gz
-rw-r----- 1 www root 152973 Jun 7 06:19 www.wp-vps.com.log.4.gz
-rw-r----- 1 www root 159617 May 29 06:02 www.wp-vps.com.log.5.gz
자동으로 실행시 위와같이 파일이 분할됩니다.
/home/wwwlogs/*.log {
su root root #debian10 에서 permision문제 일으킬떄 root root
size 2M
rotate 5
missingok
compress
delaycompress
#olddir /home/wwwlogs/old
create 640 www root
notifempty
sharedscripts
postrotate
[ -e /usr/local/nginx/logs/nginx.pid ] && kill -USR1
cat /usr/local/nginx/logs/nginx.pid
endscript
}
[…] logrotate이용하여 nginx 로그파일 분할관리하기 […]
[…] logrotate이용하여 nginx 로그파일 분할관리하기 […]