강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 시스템 로그 관리 logrotate를 통한 로그 관리

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 시스템 로그 관리 logrotate를 통한 로그 관리

 





 

log는 특정한 파일에 기록하게 되는데, 이것이 지속되면 이 파일이 계속 커져서 시스템의 많은 공간을 차지하게 될 것이다.

 

 

 

이것을 방지하기 위한 프로그램으로 RockyLinux, RedHat, Fedora, CentOS, SULinux, 2023 등에서는 logrotate라는 프로그램을 제공한다.

 

 

 

여기에서는 이 프로그램이 무엇인지와 이것의 설정에 대해서 알아보도록 한다.

 

 

 

 

 

logrotate의 개요

logrotate는 로그 파일의 크기를 제한하고 관리하기 위한 프로그램이다.

 

 

 

이 프로그램은 로그 파일을 일정한 시간이 되면 다른 이름으로 압축하여 저장하고 로그 파일을 새로 생성해 준다.

 

 

 

따라서 시스템의 보안을 신경 쓰면서 로그가 쌓여서 생기는 시스템 공간의 부적절한 사용을 방지해 줄 수 있다(이것은 또한 쉘 스크립트에 의해서도 조절될 수 있다.

 

 

 

그렇지만 프로그램에 의한 것이 더 간편하다).

 

RockyLinux, SULinux, CentOS, Fedora 등의 경우 처음 설치 시 이 프로그램이 이미 설정이 되어 일정한 규칙을 가지고 로그 파일을 제어하도록 설정이 되어 있다.

 

 

 

그러므로 설정에 대해서 특별히 걱정할 필요는 없다.

 

 

 

그러나 시스템에 따라서 이것을 적절하게 조절하는 것이 관리하는 데 도움이 될 수 있다.

 

 

 

 

 

이 프로그램은 기본적으로 로그 파일을 일정한 간격을 두고 다른 이름으로 바꾼 후 새로 생성해 주고, 기존의 로그 파일을 압축한다.

 

 

 

그리고 시간이 지난 압축 로그 파일들을 지우고 로그 파일들을 메일로 보내준다.

 

 

 

각각의 로그 파일들은 일 단위, 주 단위, 월 단위, 또는 너무 크게 되었을 때 조절된다.

 

 

 

 

 

/etc/logrotate.conf

시스템 관리를 위한 다른 프로그램들과 마찬가지로 이 프로그램도 관리자가 자신의 시스템에 맞게 프로그램의 실행을 조정할 수 있는 설정 파일을 제공한다.

 

 

 

logrotate의 설정 파일은 logrotate.conf 이고, 다음은 이 파일의 예제이다.

 

 

 

 

 

 

 

 

# see "man logrotate" for details

# rotate log files weekly

weekly

# keep 4 weeks worth of backlogs

rotate 4

# send errors to root

errors root

# 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 lastlog or wtmp -- we'll rotate them here

/var/log/wtmp {

monthly

create 0664 root utmp

rotate 1

}

# system-specific logs may be configured here

 

 

 

 

 

위 파일에서 다음은 로그 파일을 주단위로 바꾸어줄(rotate) 것을 설정하는 것이다.

 

 

 

이 부분은 daily, weekly, monthly 등으로 설정해 줄 수 있다(여기에서는 대략적인 설명을 하므로 자세한 것은 man 페이지(man logrotate)를 참고하기 바란다).

 

 

 

 

 

weekly

 

 

 

 

다음은 4주 동안 백업한 로그를 유지할 것을 정한 것이다.

 

 

 

 

 

 

 

 

rotate 4

 

 

 

 

 

다음은 root에게 에러 메시지를 보낼 것을 설정한 것이다(버젼이나 배포판 설정에 따라 설정이 빠져 있을 수 있다).

 

 

 

 

 

errors root

 

 

 

 

 

다음은 오래된 백업 로그 파일들 이후에 새로운 로그 파일들을 생성할 것인지 설정하는 것이다.

 

 

 

 

 

 

 

 

 

create

 

 

 

 

 

다음은 주석처리를 없애면 compress로 압축하도록 변경하는 것이다.

 

 

 

기존에는 gzip으로 압축하도록 되어 있다.

 

 

 

 

 

 

 

 

 

#compress

 

 

 

 

 

다음은 logrotate에 적용될 각종 로그 파일들을 보관하는 디렉토리를 지정한 것이다.

 

 

 

RPM 패키지들은 로그 순환 정보를 지정한 디렉토리로 넣는다.

 

 

 

따라서 해당 디렉토리에는 패키지 설치 여부에 따라 apache, cron, linuxconf, mysql, named, postgres, samba, syslog 등의 로그 백업 순환 정보가 각각 파일로 기록되어 있다.

 

 

 

 

 

 

 

 

 

include /etc/logrotate.d

 

 

 

 

 

다음은 /etc/logrotate.d에 있는 syslog의 순환 정보이다.

 

 

 

현재 messages, secure, maillog, spooler, boot.log, cron 에 대한 순환 정보가 기록되어 있음을 알 수 있다.

 

 

 

 

 

 

 

 

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {

sharedscripts

postrotate

/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true

endscript

}

 

 

 

 

 

다음과 같이 wtmp 에 대한 설정을 할 수 있다.

 

 

 

last 명령에 의해 실행 결과를 볼 수 있다.

 

 

 

 

 

 

 

 

 

/var/log/wtmp {

monthly

create 0664 root utmp

rotate 1

}

 

 

 

 

 

마지막에는 다른 로그 파일에 대한 설정을 관리자가 임의적으로 해 줄 수 있다.

 

 

 

 

 

 

 

 

 

# system-specific logs may be configured here

 

 

 

 

 

/var/lib/logrotate.status 파일

logrotate로 작업한 작업 내역이 보관되는 파일이다.

 

 

 

아래는 이 파일의 일부 내용만을 확인한 것인데, 이 파일에는 logrotate가 실행된 내역이 기록되어 있다.

 

 

 

 

 

 

 

 

 

logrotate state -- version 2

"/var/log/acpid" 2013-5-26

"/var/log/conman/*" 2013-5-26

"/var/log/cups/*_log" 2013-5-26

"/var/log/mgetty.log.tty[^.]" 2013-5-26

"/var/log/mgetty.log.tty[^.][^.]" 2013-5-26

"/var/log/mgetty.log.tty[^.][^.][^.]" 2013-5-26

... 중략 ...

"/var/log/named.log" 2013-11-17

"/var/account/pacct" 2013-5-26

"/var/log/rpmpkgs" 2013-11-17

"/var/log/sa-update.log" 2013-5-26

"/var/log/samba/*.log" 2013-5-26

"/var/log/messages" 2013-11-17

"/var/log/secure" 2013-11-17

"/var/log/maillog" 2013-11-17

"/var/log/spooler" 2013-11-17

... 하략 ...

 

 

 

 

 

/etc/cron.daily/logrotate 파일

cron에 의해서 주기적으로 실행되는 logrotatecron 설정 파일이다.

 

 

 

이 설정에 의해 logrotate는 하루에 한 번씩 자동 실행된다.

 

 

 

설정 내용은 아래와 같다.

 

 

 

 

 

 

 

 

 

[root@sulinux log]# cat /etc/corn.daily/logrotate

#!/bin/sh

 

/usr/sbin/logrotate /etc/logrotate.conf

[root@sulinux log]#

 

 

 

 

 

이와 같이 logrotatecron에 의해 실행되지만, 아래의 예처럼 쉘 상태에서 실행할 수도 있다.

 

 

 

 

 

 

 

 

 

[root@sulinux log]# logrotate /etc/logrotate.conf

[root@sulinux log]#

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,153 명
  • 현재 강좌수 :  36,475 개
  • 현재 접속자 :  221 명