OS [Linux] Logrotate 설명 및 설정 방법
페이지 정보
작성자 LeeHyongDong 아이디로 검색 전체게시물 댓글 0건 조회 23,700회 좋아요 0회 작성일 20-04-06 15:04본문
- Logrotate 설명 및 설정 방법
소개
• Logrotate의 기능은 기본적으로 log가 많이 쌓이게 되는걸 방지하기 위해 주기적으로 log를 삭제 및 정리하는 기능을 갖고있습니다
환경
• RHEL/CentOS 8이상
• RHEL/CentOS 7이상
구성
서버를 운영하게 되면 쌓이는 로그를 주기적으로 정리해 줍니다.
이슈
• Logrotate를 사용하지 않으면 log가 계속 쌓여 disk에 과부하를 줄수 있습니다.
1. logrotate 설정 방법
1.1. 설정 방법
Logrotate는 기본적으로 log의 정리를 목적으로 하고있습니다.
Logrotate는 RHEL/CentOS에서 최소 설치로 진행해도 Logrotate는 설치가 됩니다.
필요가 없어 지우지 않는 이상 설치가 되어있습니다.
1.2. 옵션
Logrotate는 많은 옵션이 있으며 주로 사용하는 옵션을 간추려 설명 드리겠습니다.
• yearly, monthly, weekly, daily 주기 옵션으로 로테이트를 실행할때 로그를 어떤 주기로 로테이트를 할지 선택
• rotate [숫자] 로그파일의 개수가 숫자이상이면 가장 오래된 로그파일을 삭제합니다.
• create [권한] [유저] [그룹] 로테이트 될때 생성되는 로그파일 권한 및 소유자 지정
• notifempty 로그 내용이 없으면 로테이트를 실행하지 않음 이와 반대로
• ifempty는 로그 내용이 없어도 로테이트를 진행
• compress 로테이트로 생성되는 로그파일 gzip으로 압축생성
• nocompress 로테이트로 생성되는 로그파일을 압축하지 않고 생성
• missingok 로그파일을 발견하지 못해도 에러처리 하지 않음
• dateext 로테이트 파일의 이름에 날짜가 들어가도록 생성
• size [숫자 K,M,G] 로그 파일이 크기가 설정보다 커지면 로테이트 실행
• maxage [숫자] 파일이 지정일 이상되면 삭제
• postrotate 실행후 스크립트 파일 실행
• endscript 스크립트를 실행하는 옵션 다음에 들어가야하는 옵션
1.3. Logrotate의 파일구조
- Logrotate의 파일 경로
로테이트를 진행할때 logrotate.conf파일에서 기본 설정을 확인하고 logrotate.d 디렉토리 내부에 존재하는
설정 파일을 진행합니다. 원하는 Logrotate의 추가는 logrotate.d 디렉토리 내부에 생성합니다
logrotate.conf의 내용입니다.
# see "man logrotate" for details # 매주 로그파일을 로테이트 weekly # 4개의 로그파일 이상이면 가장 오래된 로그파일을 삭제합니다. rotate 4 # 로그파일을 정리하고 오래된 로그파일을 생성할지 여부 create # 로테이트후 로그파일 뒤에 날짜를 추가합니다 dateext # 로그파일을 로테이트한후 압축파일로 생성 #compress # 디렉토리를 지정하여 logrotate파일을 사용가능합니다 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 } |
logrotate.d 내부에 생성할때 예시입니다
/var/log/netdata/*.log { # 로테이트 경로 daily # 로테이트 주기 missingok # 로그파일이 없어도 에러처리 안함 rotate 14 # 로그파일의 개수가 14개 이상이면 가장 오래된 로그파일을 삭제합니다. compress # 로테이트 파일 압축 notifempty # 로그가 빈경우 로테이트 진행 하지않음 sharedscripts # 로그파일이 여러개여도 스크립트를 한번만 진행 postrotate # 로테이트를 진행후 스크립트 실행 /bin/kill -HUP `cat /var/run/netdata/netdata.pid 2>/dev/null` 2>/dev/null || true endscript # postrotate 종료 선언 } |
위 설정에 의해 생성된 로그입니다.
- 로그 생성 확인
예시처럼 conf파일에서 weekly로 설정을 했지만 logrotate.d 내부에 있는 파일은 daily로 설정을 넣어 매일 로그가 생성이 되고
14개의 로그가 생성되면 이전에 있던 로그파일은 삭제가 됩니다.
- logrotate.d 파일
OS가 설치되면서 자동으로 생성되는 logrotate파일에 의해 기본적으로 logrotate가 실행됩니다.
- log 파일
logrotate에 의해 로그가 생성되고 삭제 됩니다.
2. logrotate 명령어
환경
- test 로테이트
2.1. logrotate 디버그
- logrotate -d
logrotate -d 로테이트 파일이 문제 없는지 확인
2.2. logrotate 실행
- logrotate -f
logrotate -f [경로] 를 즉시 로테이트 실행
2.3. logrotate 확인
- logrotate -v
logrotate 의 실행 과정 확인
3. 유사한 설정
crontab 관련 문서도 작성 예정
댓글목록
등록된 댓글이 없습니다.