Linux

[Linux] CentOS-7 logRotate 사용법

Jeong Jeon
반응형

일반적으로 모든 프로젝트 및 우리가 사용하는 제품들은 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

 

로그 파일을 살펴보면, 로그가 로테이트 되었음을 볼 수 있다. 

반응형