코딩스토리/리눅스

리눅스 로그 관리하기 - logrotate

Tech&Fin 2022. 1. 12. 15:13
반응형

리눅스 서버에서 프로그램을 수행할 때 발생하는 에러 또는 수행 결과 등을 로그로 남기면 에러가 발생하거나 추후 결과를 확인하고 싶은 경우 등에 유용하게 사용할 수 있습니다.

 

crontab을 이용해서 프로그램을 수행하는 경우에는 별도로 로그를 남기지 않으면 프로그램의 수행 결과 및 에러 발생 여부등을 확인하기 어려워서 로그를 남기는 것이 필수인데요. 로그는 주기적으로 관리해주지 않으면 서버의 디스크 용량을 차지하게 되므로 주기적으로 오래된 로그를 정리해 주는 작업이 필요합니다.

 

이 때 유용하게 사용할 수 있는 것이 바로 로그로테이트(logrotate)라는 프로그램입니다. 이번 시간에는 logrotate를 사용하여 로그를 주기적으로 정리하여 서버의 디스크 용량을 낭비하지 않는 방법에 대해서 살펴 보겠습니다.

 

 

목차 - 클릭하면 이동합니다.

     

    로그 로테이트(logrotate)

    로그 로테이트란?

    간단하게 리눅스에서 사용할 수 있는 로그 관리 프로그램이라고 생각하면 됩니다. logrotate를 사용하면 특정 폴더에 쌓이는 로그를 날짜별로 나누어서 관리할 수 있으며 기준을 정하면 해당일 이전 로그는 삭제하여 시스템 용량을 낭비하지 않을 수 있습니다.

     

    로그 로테이트의 구조 및 설정 방법

    /etc/logrotate.conf : 로그 로테이트의 기본 설정 파일

    /etc/logrotate.d/ : 로그 로테이트의 개별 설정 파일이 들어있는 폴더

     

    cat /etc/logrotate.conf

    위의 명령어로 기본 설정을 살펴보겠습니다.

     

    위의 설정에 의하면 log는 주 단위로 백업되며 4주동안 보관하며 그 이후의 로그는 삭제됩니다. 로그는 일자형태로 새로 생성되며 별도로 압축은 하지 않습니다. 자세한 설정 방법은 아래와 같습니다.

    # log 회전 주기 yearly : 매년, monthly : 매월, weekly : 매주, daily : 매일
    daily
    
    # log 파일 개수, 해당 개수가 넘어가면 기존 로그 삭제
    rotate 2
    
    # 새로운 log 파일 생성 여부, create : log 파일 생성 / empty : 파일 새로 생성하지 않음
    create
    
    # 파일명 날짜별로 관리
    dateext
    
    # log파일 압축 여부
    #compress
    
    # 개별 로그 process 설정 경로 포함
    include /etc/logrotate.d
    반응형

     

    그럼 이번에는 logrotate.d 폴더에 있는 개별 설정은 어떤 것들이 있는지 살펴 보겠습니다.

     

    여러가지 개별 설정 파일들이 보이는데 이 중 하나를 살펴 보겠습니다.

     

    이렇게 특정 폴더에 있는 파일들에 대해서 개별적으로 로그 관리에 대한 방법을 설정 할 수 있습니다. 아래 개별 파일에 대한 설정 예시 입니다.

     

    /home/python/logs/*.log {
        su python python
        daily
        rotate 2
        dateext
        dateyesterday
        missingok
        copytruncate
        notifempty
    }

    ① 로그 정리 대상 파일 : /home/python/logs 폴더 아래에 *.log로 끝나는 파일

    ② su python python : root가 아닌 python 계정으로 실행

    ③ daily : 일별로 로그파일 관리

    ④ rotate 2 : 2일 동안(2개)만 로그 보관

    ⑤ dateext : 날짜별로 로그 관리

    ⑥ dateyesterday : 날짜가 바뀔때 어제 날짜로 바꿈(1/1일에서 1/2일로 넘어갈때 1/1에 생성하던 로그는 *.log.20220101로 바꾸고 새로운 로그 파일을 *.log로 생성함)

    ⑦ missingok : 로그파일이 없어도 문제되지 않음

    ⑧ copytruncate : 로그파일의 순환시 누락을 방지하기 위해 기존 로그를 먼저 copy한 후  truncate하는 방식으로 새 파일을 생성함

    ⑨ notifempty : 로그파일이 비어있으면 로테이트 하지 않음

     

    마치며

    로그는 프로그램 수행 여부 및 에러 대처를 위해 꼭 필요하기 때문에 자세하게 남기는 것이 좋지만 디스크 용량을 낭비할 수 있기 때문에 필요한 만큼만 남기는 것이 중요합니다.

     

    오늘 살펴본 로그로테이트를 이용하여 필요한 로그만 보관하여 디스크 용량을 합리적으로 사용하시면 좋을 것 같습니다.

     

    블로그를 구독하시면 소식을 조금 더 빨리 받아볼 수 있습니다. 감사합니다.

    반응형