이건 참고 하자
logrotate 관련 파일# /usr/sbin/logrotate : 데몬의 위치 및 데몬프로그램# /etc/logrotate.conf : 설정 파일.# /etc/logrotate.d : logrotate를 적용할 로그 파일 보관 디렉토리.# /var/lib/logrotate.status : logrotate가 작업 내역 보관 파일.# /etc/cron.daily/logrotate : logrotate : cron 에 의해 일 단위로 실행한다.
동작 순서
1. cron.daily 에서 /usr/sbin/logrotate 호출 2. /usr/sbin/logrotate 에서 /etc/logrotate.conf 설정파일 참조 3. /etc/logrotate.conf 설정 파일에서 /etc/logrotate.d 참조
# vi /etc/logrotate.d/apache
/var/logs/apache/access_log {
su apache apache
create
0644
apache apache
size +1k
missingok
notifempty
compress
dateext
postrotate
/usr/bin/killall -HUP httpd
endscript
3. /etc/logrotate.conf 설정 파일에서 /etc/logrotate.d 참조
# vi /etc/logrotate.d/apache
/var/logs/apache/access_log { su apache apache create 0644 apache apache size +1k missingok notifempty compress dateext postrotate /usr/bin/killall -HUP httpd endscript |
----------------------------------------------------------------------------
1. Nginx log를 logrotate를 사용하여 일자별로 관리하기
(1) 서버별로 로그를 남기도록 설정한다.
파일명: ${NGINX_HOME}/nginx.conf
...
server {
...
access_log /home/user/log/nginx/access;
...
}
...
(2) 로그를 위한 logrotate 설정 파일을 만든다.
파일명: /etc/logrotate.d/nginx-access-log
/home/user/log/nginx/access {
create 0644 nginx nginx
daily
rotate 30
missingok
notifempty
dateformat .%Y-%m-%d.log
dateext
sharedscripts
postrotate
/etc/init.d/nginx reopen_logs
endscript
}
(3) crontab에 해당 logrotate 실행 명령어를 등록한다.
59 23 * * * /etc/logrotate.d -f /etc/logrotate.d/nginx-access-log
(부가) logrotate 설정 옵션
create 0644 nginx nginx : 생성된 파일은 0644권한을 주며 nginx유저와 nginx그룹을 가지도록 한다.
daily : 일 단위로 rotate한다.
rotate 30 : 30개 이상된 로그파일을 삭제
missingok : 로그파일이 없더라도 오류를 발생시키지 않는다.
notifempty : 파일의 내용이 없을 경우 파일을 생성하지 않는다.
dateext : 1,2,3... 같은 라벨이 아닌 날짜를 붙여서 파일을 생성한다.
dateformat .%Y-%m-%d.log : 파일에 .YYYY-MM-DD.log를 뒤에 붙인다.
dateexe 옵션과 같이 쓰인다.
sharedscripts : postrotate ~ endscript안에 script가 동작할때 각각의 로그마다 실행 되는 것이 아니라 1번만 실행되도록 하는 옵션이다. (즉) /home/user/log/nginx/*.log{ ... } 으로 확장자가 log라는 파일을 rotate할때 각각의 파일이 아닌 1번만 postrotate ~ endscript안의 스크립트를 실행하도록 하는 옵션이다.
maxage 30 : 30일 이상된 로그파일 삭제
size 용량 : 지정된 용량이 되면 rotate한다.
ifempty : 로그파일이 비어있는 경우에도 rotate한다.
monthly : 월단위로 rotate한다.
weekly : 주단위로 rotate한다.
compress : gzip으로 압축한다.
nocompress : 압축하지 않는다.
mail 메일주소 : 설정에 의해 보관 기간이 끝난 파일을 메일주소로 발송한다.
mailfirst 메일주소 : 원본파일을 메일주소로 보낸다.
nomail : 메일을 받지 않는다.
errors 메일주소 : rotate중 오류발생시 메일주소로 통보한다.
copytruncate : 로그파일의 내용을 복사하고 로그파일의 크기를 0으로 만들도록 동작하게 하는 옵션. (만약 파일용량이 크다면 하지 복사하는데 I/O자원이 소모되므로 피해야 한다)
강제실행
# /usr/sbin/logrotate -f /etc/logrotate.d/apache
테스트
# /usr/sbin/logrotate -d /etc/logrotate.d/apache
출처: https://devnerd.tistory.com/entry/1-Nginx-log를-logrotate를-사용하여-일자별로-관리하기 [eyesofkhepri]
'👨🏻💻Infra > 🐧Linux' 카테고리의 다른 글
[Linux] Bonding (0) | 2019.10.18 |
---|---|
echo 출력 내용 색상 변경 (0) | 2019.10.09 |
log파일 일자별로 정리하기 (0) | 2019.06.27 |
본딩(Bonding) 실습 (0) | 2019.02.12 |
Smart Storage Administrator (0) | 2019.02.12 |