[Linux] logrotate 설정(수정필요)

김봉남·2024년 1월 19일
0

Linux

목록 보기
13/36
post-thumbnail

리눅스 서버 운영을 하다 보면, 기본적인 OS 시스템 관련 Log는 자동으로 압축과 자동 생성이 된다. 그러나 WAS나 별도 어플리케이션의 로그는 수동으로 설정해줘서 한 개의 Log 파일에 쌓이지 않게 한다.(1개 파일의 log로 운영할 경우 vi 편집시 메모리 부족 발생)

logrotate란?

  • logrotate는 리눅스 시스템에서 로그 파일을 자동으로 관리하고 로그의 크기를 제한하여 디스크 공간을 효과적으로 관리하는 도구
  • 로그 파일의 크기가 지정된 값 이상이 되면, 해당 파일을 새로운 파일로 전환하고 이전 로그 파일을 보관
  • 로그 파일이 로테이션될 때 압축 옵션을 사용하여 이전 로그 파일을 압축

설정 방법

/etc/logrotate.d/appfile

/test_home/test/svrlogs/nohup/Server.out { 
    copytruncate
    missingok 
    daily
    create 0644 test Adm
    rotate 30
    dateext
}

logrotate 설정파일 및 옵션

weekly
rotate 4
create
include /etc/logrotate.d/*

weekly: 로그를 주간 주기로 로테이션합니다.
rotate 4: 이전 로그 파일을 최대 4개까지 유지합니다.
create: 새로운 로그 파일을 생성합니다

/etc/logrotate.d/nginx 설정 예시

/var/log/nginx/.log {
daily
rotate 7
missingok
notifempty
delaycompress
compress
postrotate
systemctl reload nginx
endscript
}
/var/log/nginx/
.log: 해당 경로에 있는 모든 로그 파일에 대해 적용합니다.
daily: 로그를 일간 주기로 로테이션합니다.
rotate 7: 이전 로그 파일을 최대 7개까지 유지합니다.
missingok: 해당 경로에 로그 파일이 없는 경우 경고하지 않습니다.
notifempty: 빈 로그 파일은 로테이션하지 않습니다.
delaycompress: 압축을 지연시킵니다.
compress: 로그 파일을 압축합니다.
postrotate ... endscript: 로테이션 이후에 실행할 스크립트를 정의합니다. 여기서는 Nginx 서버를 다시 불러오는 명령을 실행하도록 설정되어 있습니다.

  1. Logrotate
  • 리눅스 내에서 시스템에 있는 모든 로그파일들을 관리
  • 로그파일에 날짜를 지정하여 주기적으로 압축, 백업, 삭제, 메일로 보내는 등의 기능
  1. Logrotate 필요한 이유
  • 한정 되어 있는 서버 용량에 지속적으로 로그가 쌓이면서 용량 부족 및 시스템 성능이 저하될 수 있음
  • 수동으로 로그파일을 관리하지 않고 Logrotate 기능을 통해 효과적으로 관리할 수 있음
  1. Logrotate 구동 순서
  • cron을 이용해 Logrotate 실행
  • crontab → cron.daily → logrotate → logrotate.conf → logrotate.d
  1. Logrotate 사용
  • Logrotate 설치 확인
    [root@ServerA]# rpm -qa | grep logrotate
    Logrotate-3.7.4-9.el5_5.2

  • Logrotate 환경설정 파일
    [root@ServerA]# cat /etc/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

    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 -- we'll rotate them here

    /var/log/wtmp {
    monthly
    minsize 1M
    create 0664 root utmp
    rotate 1
    }

    system-specific logs may be also be configured here.

  • Rotate log files weekly
    로그파일 순환 기간 설정 (yearly : 매년, monthly : 매달, weekly : 매주, daily : 매일)

  • Keep 4 weeks worth of backlogs
    순환될 파일의 개수를 설정 (최소값은 0)
    예를 들어 위에서 weekly로 설정하고 rotate 4를 주게 되면 4주간 보관한 뒤 순환하게 되며, daily로 설정하고 rotate 15를 주게 되면 15일간 보관한 뒤 순환하게 된다는 의미

  • create new (empty) log files after rotating old ones
    로그파일을 백업하고 새로운 파일을 생성할 것인지를 설정

  • uncomment this if you want your log files compressed
    순환된 로그파일을 압축할 것인지를 설정

  • RPM packages drop log rotation information into this directory
    순환정보를 가진 디렉토리를 불러옴

  • no packages own wtmp - we’ll rotate them here
    /var/log/wtmp의 로그설정을 하며, monthly, rotate 1, minsize 1M이므로 한 달에 한번 로그파일용량이 1M가 되면 순환되게 하며 백업파일은 root 사용자의 utmp그룹의 소유로 퍼미션 644를 부여

  1. 옵션 설명
  1. 추가 관리 로그정보
    [root@ServerA]# cat /etc/logrotate.d/test_log

    test_log file logrotate configuration

    errors dis_holic@naver.com
    /svc/jboss/app/logs/test_logs/* {
    weekly
    rotate 2
    missingok
    notifempty
    }
  • 순환중 에러가 발생하면 dis_hilic@naver.com로 메일 발송
  • /svc/jboss/app/logs/test_logs/ 경로의 로그를 순환
  • 2주 마다 순환
  • 로그파일이 없을 경우에도 에러 처리하지 않음
  • 로그파일이 비어있는 경우 순환하지 않음
  • 최종적으로 로그파일들은 순환한 뒤 이전 파일은 삭제
profile
남자다

0개의 댓글