티스토리 뷰

Linux

[Linux] logrotate 설정

Jane Kwon 2022. 8. 23. 09:55
반응형

 

개발서버의 catalina.out 파일의 크기가 무려 113GB!

 

개발서버라 실시간 로그를 보는 경우가 많다보니 아무래도 신경을 안쓴듯

2019년부터의 데이터가 쭉 쌓여있다.

 

 이제부터라도 리눅스의 logrotate를 이용해 로그 관리를 해보려고 한다.

 

 

 

$ vi /etc/logrotate.conf

우선 logrotate.conf 설정 파일은 보면

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.

중간에 include /etc/logrotate.d 라고 쓰여있는 부분에서 저 경로에 파일들을 읽어서 실행한다는 것을 알 수 있다.

 

 

 

그럼 저 경로를 들어가서

$ cd /etc/logrotate.d/
$ vi tomcat

새로운 파일을 생성해준다.

/home/ec2-user/was/instance1/logs/catalina.out {
 copytruncate
 daily
 missingok
 notifempty
 nocompress
 dateext
 dateformat .%Y-%m-%d.log
 rotate 30
}
  • copytruncate : 기본 파일을 다른 파일로 백업한 후기존 파일을 초기화
  • daily : 로그 파일을 날짜별로 변환
  • missingok : 로그 파일이 없더라도 오류를 발생 안함
  • notifempty : 파일 내용이 없으면 새로운 로그 파일 생성 안함
  • nocompress : 지난 로그 파일을 압축하지 않음
  • dateext : 순환된 로그 파일의 날짜 확장자 설정
  • dateformat : 날짜 표기 포맷 설정
  • rotate 30 : 로그 파일이 30개씩 저장된 다음 제거되거나 메일로 전송됨

 

 

 

그런 다음 테스트로 해당 logrotate를 실행해본다.

$ logrotate -f /etc/logrotate.d/tomcat

그럼 logrotate가 실행되어 날짜가 찍힌 파일이 생성된 것을 볼 수 있다.

$ /home/ec2-user/was/instance1/logs
$ ls
catalina.out	catalina.out.2022-08-23.log

 

 

 

제대로 logrotate가 작동했는지 보기 위해서 상태 기록 파일을 확인해보면

$ vi /var/lib/logrotate.status

이렇게 logrotate 설정된 파일들이 언제 마지막으로 동작했는지 볼 수 있다.

logrotate state -- version 2
"/var/log/jenkins/jenkins.log" 2021-7-15
"/var/log/yum.log" 2021-11-24
"/var/log/httpd/ssl_access_log" 2020-12-6
"/var/log/dracut.log" 2017-5-12
"/var/lib/mysql/mysqld.log" 2017-5-12
"/var/log/httpd/error_log" 2022-8-21
"/var/log/httpd/ssl_error_log" 2017-12-23
"/var/log/wtmp" 2021-11-6
"/var/log/awslogs.log" 2022-8-3
"/var/log/spooler" 2022-8-21
"/var/log/btmp" 2022-8-1
"/var/log/httpd/mod_jk.log" 2022-8-21
"/var/log/maillog" 2022-8-21
"/var/log/httpd/ssl_request_log" 2020-12-6
"/usr/local/tomcat/logs/catalina.out" 2022-8-22
"/var/log/secure" 2022-8-21
"/home/ec2-user/was/instance1/logs/catalina.out" 2022-8-23
"/var/log/tomcat8/catalina.out" 2017-7-23
"/var/log/jenkins/access_log" 2017-5-14
"/var/log/messages" 2022-8-21
"/var/log/httpd/access_log" 2020-12-6
"/var/log/cron" 2022-8-21
"/var/account/pacct" 2017-5-12

 

 

 

그런데 이렇게 하면 한번만 실행되고 끝난다.

이 명령어를 crontab에 등록하여 매일 한번씩 실행되도록 해야한다.

$ sudo crontab -e

하루치 로그 파일을 매일 00시에 생성하도록 설정 해줬다.

0 0 * * * /usr/sbin/logrotate -f /etc/logrotate.d/tomcat

 

 

 

/etc/crontab 파일에 corn.시리즈들이 등록되어 있거나 /etc/cron.daily 디렉토리 안에 logrotate 스크립트가 있고 crond에 의해 daily 디렉토리의 스크립트들이 실행이 된다면 따로 등록을 하지 않아도 된다.

(참고 : https://goni9071.tistory.com/183)

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함