일반적으로 모든 프로젝트 및 우리가 사용하는 제품들은 Log를 적재한다.
문제가 생겼을때 오류 코드를 찾아 해결하기 위해 많이 접할 수 있다.
그래서 Log를 적재하는데, Log가 한번에 다 몰아져있으면 오류코드를 찾기가 너무 힘들기 때문에 LogRotate라는 아이가 필요해진다.
로그들을 잘관리하도록 설정하는 기능 == logrotate
우리는 Linux에서 제공하는 Crontab을 이용하는 Logrotate라는 아이를 사용할 것이다.
[1] 실행순서 및 구조
1. LogRotate 실행 순서
우선 실행순서가 어떤식으로 진행되는지 확인해보자.
2. LogRotate 파일들
데몬 프로그램 : /usr/sbin/logrotate
Logrotate 데몬 설정파일 : /etc/logrotate.conf
Logrotate를 프로세스 설정파일 : /etc/logrotate.d/
Logrotate 작업내역 로그 : /etc/cron.daily/logrotate
[2] 파일 설정
1. logrotate.conf : Logrotate의 실행 설정 파일
- 로그 회전 주기 설정
# see "man logrotate" for details
# rotate log files weekly
# 실행주기
#yearly : 매년
#monthly : 매월
#weekly : 매주
#daily : 매일
weekly
# keep 4 weeks worth of backlogs
# 로그파일의 갯수 4 : Log파일이 4개가 되면 첫번째 생성된 Log파일 삭제후 생성
rotate 4
# create new (empty) log files after rotating old ones
#새로운 로그파일의 생성 여부 create : 생성 empty : 생성X
create
# use date as a suffix of the rotated file
#로그파일에 날짜를 부여 => dateext : 로그 파일명의 날짜 부여
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.
2.logrotate.d 설정
logrotate.d에는 각각 내가 원하는 프로그램의 로그들의 설정이 들어있다.
하나의 파일을 생성하여 원하는 위치의 원하는 로그파일에 대한 설정 값을 정의 할 수 있다.
/etc/logrotate.d/data-daemon
/var/log/data-daemon/*.log{
daily
missingok
rotate 52
compress
delaycompress
notifempty
copytruncate
}
본 옵션들은 하단 옵션을 참조
Logrotate.d 주요옵션
-f, --force
강제순환, 새로운 항목을 추가한 후에 로그파일을 순환시키거나 옛날 로그파일이 삭제되어 새로운 로그파일 생성,로그기록이 계속되고 있을 경우 유용한
-s, --state <statefile>
기본 상태 /var/lib/logrotate.status 파일대신 지정한 status파일을 만들어 사용가능
--usage
logrotat의 사용법 출력
[root@linux logrotate.d]# logrotate --usage
Usage: logrotate [-m command] [-s statefile] [--usage] [OPTION...] <configfile>
[root@linux logrotate.d]#
compress <-> nocompress
순환되는 로그파일을 gzip으로 압축(no : 압축하지 않게)하게된다.
daily
로그파일을 매일 순환
weekly
로그파일을 매주 순환
monthly
로그파일을 한달주기 순환
errors "address"
logrotate작업시에 에러가 발생한다면 지정된 메일주소로 메일을 보낸다.
ifempty
로그파일이 비어있는 경우에도 rotate(순환)
notifempty
ifempty와는 반대로 로그파일이 비어있을 경우에는 순환을 하지 않음
mail address
logrotate작업후에 이전로그파일을 지정된 메일주소로 메일을 보낸다.
postrotate/endscript
logrotate작업 이후에 지정된 작업(스크립트)을 실행한다.
prerotate/endscript
logrotate작업 이전에 지정된 작업(스크립트)을 실행한다.
rotate count
logrotate의 실행결과 순환되는 파일들의 총 갯수
size 100k
logrotate의 결과 순환된 결과 파일사이즈가 지정한 크기를 넘지 않도록 한다.
[3] 강제 Rotate 실행 => 확인
우리가 설정한 값대로 잘되는지 보려면 하루, 몇일 을 기다려야 한다.
바로 확인 할 수 있는 방법이 있다.
var/lib/logrotate.status를 열어 보면 아래 내용을 확인 할 수 있다.
"/var/log/httpd/www.domain.com-access_log" 2021-03-18
여기서 맨 뒤에 있는 날짜가 마지막 실행된 날짜 이므로 이 날짜를 일주일 전으로 수정. 후 logrotate 를 실행한다.
# /etc/cron.daily/logrotate
로그 파일을 살펴보면, 로그가 로테이트 되었음을 볼 수 있다.
'Linux' 카테고리의 다른 글
[Linux] systemd에 서비스 등록후 사용하기 (0) | 2021.08.11 |
---|---|
[Linux] CentOS 7 Tomcat 설정 및 실행 만들기 (0) | 2021.08.10 |
[Linux] CentOS 7 Nginx Tomcat Reverse Proxy 설정방법 (0) | 2021.08.10 |
[Linux] CentOS 7 Nginx 502 Bad Gateway란? (0) | 2021.08.10 |
Linux 기본 명령어 (0) | 2020.12.29 |