ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Linux] 리눅스 로그관리 logrotate
    Linux 2014. 12. 20. 19:04
    728x90


    logrotate 란?

     

    리눅스내에서 시스템에 있는 모든 로그파일들을 관리할 수 있으며,

    이들 로그파일들을 날짜를 지정하여 주기적으로 압축, 백업, 삭제, 메일로 보내는 등의 작업을 할 수 있도록 하여주는 기능

     

     

     

    왜 logrotate가 필요한가?

     

    리눅스를 서버로 돌리면 하루에도 많은 로그 파일들이 생성됩니다.

    서버 용량은 한정되어 있고 이와 같은 로그들이 차곡차곡 쌓이다보면

    로그로 인해 하드 용량이 부족한 경우가 생겨 성능이 떨어질 수 있는데

    매번 수동으로 로그파일이 저장되는 곳으로 이동하여 하나하나 삭제하는 일은 번거로운 일이 아닐수 없습니다.

    이와 같이 로그파일를 수동으로 관리하지 않고 logrotate기능을 사용한다면 보다 효과적으로 관리할 수 있을것입니다.

     

     

     

    logrotate 구동순서

     

    cron(주기적으로 반복되는 일을 자동적으로 실행될수 있도록 설정해놓는 것, 데몬)을 이용해 logrotate 실행

    crontab > cron.daily > logrotate > logrotate.conf > logrotate.d

     

     

     

    logrotate를 사용하기

     

    logrotate 설치 확인 

    [root@boya-dev01 ~]# rpm -qf /etc/logrotate.conf
    logrotate-3.7.4-9.el5_5.2

     

    또는

     

    [root@boya-dev01 ~]# rpm -qa | grep logrotate
    logrotate-3.7.4-9.el5_5.2

     

    위와같이 rpm패키지로 logrotate의 3.7.4-9버전이 설치되어있는걸 확인 할 수있습니다.

     

     

     

    이제 logrotate환경설정 파일인 logrotate.conf파일에 대해 알아보겠습니다.

    [root@boya-dev01 ~]# 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

      - 순환된 로그파일을 압축할것인지를 설정합니다.(압축방식 : gzip)

     

    # 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를 부여합니다.

     

     

     

     

     

    옵션설명

     daily

     매일 순환

     weekly

     매주 순환

     monthly

     매달 순환

     yearly

     매년 순환

     rotate 파일갯수

     순환될 파일갯수

     compress

     순환된 로그파일 압축(gzip)

     nocompress

     순환된 로그파일을 압축하지 않는다(기본값) 

     compresscmd 압축명

     gzip 이외의 압축프로그램 지정 

     uncompresscmd

     압축해제 명령 지정(기본값 : gunzip)

     compressext 확장자명

     압축된 백업 로그파일에 지정할 확장자 설정 

     compressoptions 옵션

     압축 프로그램에 대한 옵션 설정(-9 : 압축률 최대) 

     dateext

     로그파일에 YYYYMMDD형식의 확장자 추가 

     errors 메일주소

     에러 발생시 지정된 메일주소로 메일발송

     extention 확장자명

     순환된 로그파일의 확장자 지정 

     ifempty

     로그파일이 비어있는 경우 순환(기본값)

     noifempty

     로그파일이 비어있는 경우 순환하지 않는다 

     mail 메일주소

     순환후 이전 로그파일을 지정된 메일주소로 발송 

     maxage

     count로 지정된 날수가 지난 백업 파일 삭제

     missingok

     로그파일이 없을 경우에도 에러 처리하지 않는다

     prerotate / endscript

     순환작업 전에 실행할 작업 설정

     postrotate / endscript

     순환작업 후에 실행할 작업 설정

     sharedscripts

     prerotate, postrotate 스크립트를 한번만 실행 

     size 사이즈

     순환 결과 파일사이즈가 지정한 크기를 넘지않도록 설정 

     copytruncate

     현재 로그파일의 내용을 복사하여 원본 로그파일의 크기를 0으로 생성

     

     

     

     

    추가적으로 관리해야할 로그정보는 /etc/logrotate.d 에 저장하면 됩니다.

    ex)

     [root@boya-dev01 ~]# 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_holic@naver.com로 메일을 보낸다.

      - /svc/jboss/app/logs/test_logs/ 경로의 로그를 순환한다.

      - 2주마다 순환한다.

      - 로그파일이 없을 경우에도 에러 처리하지 않는다.

      - 로그파일이 비어있는 경우 순환하지 않는다.

     

     

     

     

    최종적으로 로그파일들은 순환한뒤 이전 파일은 삭제됩니다.


    출처 - http://dis_holic.blog.me/60175516847

    'Linux' 카테고리의 다른 글

    jmeter master slave 구조 설치 및 설정 가이드  (0) 2020.10.30
    iscsi setup  (0) 2019.08.01
    Postgresql install on centos 7  (0) 2018.07.24
Designed by Tistory.