티스토리 뷰
반응형
개발서버의 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)
반응형
'Linux' 카테고리의 다른 글
[Linux] find 명령어로 파일 내 문자열 검색 (1) | 2024.01.09 |
---|---|
[Linux] Tomcat 버전 확인 (0) | 2022.12.09 |
[Linux] Bash Shell에 인자 전달하여 실행 (1) | 2022.03.04 |
[Linux] curl 보다 편리한 HTTPie(Command Line HTTP Client) 설치방법 및 기본 사용법 (0) | 2021.11.23 |
[Linux] tar 파일, tar.gz 파일 압축 / 압축 해제 (0) | 2021.11.17 |