RadarURL

유닉스/리눅스
2015.01.13 18:59

리눅스 로그파일관리 (logrotate)

조회 수 745 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

참조할 강좌 1 : 리눅스 시스템로그구성 및 로그모니터링법

참조할 강좌 2 : 로그파일(syslog) 실무가이드

 

icon04.gif 1. logrotate 개론

앞선강좌에서 누차 강조드린 바와 같이 리눅스뿐아니라 거의 모든 운영체제에서는 로그파일의 종류와 그 크기를 어떻게 보관하고 관리할 것인가에 대한 것이 아주중요하게 다루어지고 있다.

 logrotate는 이에 대한 해답을 주는 유틸리티라고 할 수 있다.

즉, logrotate는 시스템에 있는 모든 로그파일들을 관리할 수 있으며 이들 로그파일들을 자르고(rotate), 보관하고, 삭제하고, 압축하고, 메일로 보내주는 등의 작업을 할 수 있게 한다.

구체적인 예를 들자면, 아파치 웹서버에서 방문기록을 저장하고 있는 웹로그파일은 access_log이다. (물론 이파일의 이름과 위치는 얼마든지 바꾸어 사용할 수 있다. )

이 파일은 하루에도 엄청나게 많은 용량으로 저장이 된다. (물론 어느정도의 방문자가 있다는 조건에서)

필자가 관리하는 수퍼유저코리아의 웹서버만 하더라도 하루에 약 33MB정도의 용량으로 저장이 된다.

그렇다면 한달이면 약 990MB, 그러니까 약 1GB정도가 조금 들 필요하다고 할 수 있을 것이다.

이런 파일을 그냥 두게되면 얼마가지 않아서 할당된 파티션에 파일시스템풀(Filesystem Full)이 나서 시스템이 다운이 될 수가 있다.

특히, 웹호스팅서버와 같이 하나의 서버에 여러개의 웹사이트를 운영되는 서버에는 매우 심각하다고 할 수 있다.

 

더군다나 서버에는 웹로그만 있는 것이 아니고 앞선강좌에서 설명드렸듯이 리눅스의 기본적인 로그파일만 10여개가 넘는다.

이런 로그파일들을 적당한 크기로 자르고(rotate), 압축하여, 보관하거나, 삭제하는등의 작업이 주기적으로 필요하게된다.

 

logrotate는 이런 cron에 의해 주기적으로 이런작업을 훌륭히 수행해 낸다.

바로 여기에 logrotate의 역할과 필요성이 존재한다고 볼 수 있으며 logrotate가 개발된 이유이기도 하다.



icon04.gif 2. logrotate 파일구성

logrotate는 리눅스가 설치되면서 대부분 기본적으로 패키지형태로 설치가 된다.

logrotate의 데몬과 설정파일들을 살펴보면 다음과 같다.

구   분

위치 및 실행방법

설             명

데몬(위치)

/usr/sbin/logrotate

데몬의 위치 및 데몬프로그램

데몬 설정파일

/etc/logrotate.conf

설정파일

설정디렉토리

/etc/logrotate.d

logrotate에 적용할 각종로그파일들 보관하는 디렉토리

상황파일

/var/lib/logrotate.status

logrotate한 작업내역을 보관한 파일

cron(일단위)

/etc/cron.daily/logrotate

logrotate는 주기적으로 실행이되어야하므로 cron에 의해 일단위로 실행이 됨

먼저, /usr/sbin/logrotate는 logrotate의 데몬프로그램이다. crond에 의해 주기적으로 실행이 되는 프로그램이다 .

/etc/logrotate.conf파일은 logrotate가 실행이되면서 읽어들인후 각각의 로그파일들을 이 파일의 설정에 의하여 자르거나(rotate), 삭제하거나, 압축을 하게된다.

/etc/logrotate.d 파일은 각각의 로그파일들에 대한 개별적인 설정파일들이 존재하는 디렉토리이며, 추가로 적용할 로그파일에 대한 설정을 여기서 하면된다. 예를 들어 보안체크를 위해 tripwire를 설치하였다면 이프로그램의 로그파일이 존재할 것이다. 따라서 이 로그파일의 관리를 위해서 이 디렉토리에 적당한 이름의 파일을 생성하고 원하는 설정을 하여 logrotate에 의해 관리되게끔 하면 된다.

마지막으로 /etc/cron.daily/logrotate 파일은 주기적으로 실행이 될 logrotate를 cron에 넣어둔 것이다.

즉, 이 cron설정으로 인해 logrotate는 하루에 한번씩 주기적으로 실행이 될 수 있는 것이다.



icon04.gif 3. logrotate의 설치 및 업그레이드 및 제거

먼저 시스템에 설치되어 있는 logrotate의 rpm 패키지버전을 확인해 보도록 하자.

확인하는 방법은 아래와 같다.
rpm_logrotate02.gif

위의 예에서 현재 시스템에 설치되어 있는 logrotate의 패키지 버전은 logrotate-3.5.2-1임을 알 수 있다.

 

이제 이렇게 획득한 정보를 이용하여 logrotate의 패키지 구성을 살펴보도록 하자.

확인하는 방법은 아래와 같다.

rpm_logrotate03.gif

위의 예처럼 logrotate의 주구성 파일과 디렉토리는

  • /etc/cron.daily/logrotate
  • /etc/logrotate.conf
  • /etc/logrotate.d
  • /usr/sbin/logrotate

과 같다.

이들 파일에 대한 설명은 2절에서 이미 다루었으므로 생략한다.

 

마지막으로 logrotate를 rpm으로 재설치 및 업그레이드하는 방법에 대해서 알아보자.

rpm_logrotate01.gif

rpm으로 재설치하거나 업그레이드하는 방법은 위의 예처럼 _Uvh옵션으로 뒤에 패키지이름을 주면 된다.

 

이상으로 logrotate의 구성파일들에 대해서 살펴보았다.



icon04.gif 4. logrotate.conf 샘플

logrotate의 설정디렉토리 /etc/logrotate.d/에 있는 여러개의 파일중 syslog파일의 일부이다.

물론, 이 설정을 /etc/logrotate.conf 파일내에 있어도 마찬가지 결과를 얻을 수 있다.

 

위의 설정을 설명하면 다음과 같다.

/var/log/messages  
대상로그파일, 즉, logrotate에 의해서 작업될 로그파일을 절대패스로 지정해둔 것이다.
그리고, 그 다음의 "{" 부터 "}"까지는 이 로그파일에 대한 개별적인 설정이 된다.

monthly
대상로그파일(/var/log/messages)을 순환시킬 주기이며, monthly이므로 한달에 한번씩 이 파일이 순환(rotate)되게 된다.
뒤에서 설명하게되겠지만 참고로 순환주기에는 daily, weekly, monthly등이 있다. 이에 대한 설명은 뒤에서 자세히 다루게 된다.

compress
순환(rotate)된 파일이 gzip에 의해서 압축이 된다. 반대의 옵션은 nocompress이며 압축을 하지 않게 된다.
(기우겠지만, 순환되어 새로 생성되어 저장되고 있는 로그파일은 압축이 되지 않는다.)

rotate 2
순환되는 파일갯수를 지정한다. 0부터 시작하게되며 위의 예에서 monthly로 지정했기 때문에 2달간 로그파일이 저장되어 있게된다.

mail  
순환되어 지정된 갯수를 지나게되는 로그파일은 지정된 메일주소로 메일로 보내지게 된다.
메일을 보내지 않으려면 nomail이라고 하면 된다.

errors
지정된 log파일의 logrotate작업시에 에러가 발생을 하면 지정된 메일주소로 메일을 발송하게 된다.
 

postrotate/endscript
이것은 지정된 로그파일에 logrotate작업이 끝나고 난 이후에 실행할 작업을 설정해둔 것이다.
대부분 이부분에 설정되는 작업은 rotate된 로그파일의 데몬을 재시작시키는 작업이다.
반대의 작업을 하려면 즉, logrotate작업 전에 실행할 작업이 있다면
postrotate/endscript대신에 prerotate/endscript를 사용하면 된다.

 

6. logrotate 주요옵션

 (참고 : "man logrotate" 해서 보면 logrotate에 대한 옵션이 굉장히 많다. 아래에 소개해드리는 옵션은 자주사용하는 옵션이거나 필자의 견해로 보아 중요하다고 생각되는 옵션을 설명드린 것이므로 이외의 옵션에 대해서 알고자 한다면 man page를 참조바란다. )

-f, --force  

강제순환시킨다. 이 옵션은 새로운 항목을 추가한 후에 로그파일을 순환시키거나 옛날 로그파일이 이미 삭제되어 새로운 로그파일이 생성되어 로그기록이 계속되고 있을 경우에 유용한 옵션이다.

 

-s, --state <statefile>

기본 상황파일인 /var/lib/logrotate.status 파일대신에 지정한 state파일을 사용한다.

 

--usage

logrotate의 기본 사용법을 간단히 보여준다.

logrotate_conf_sample.gif

 

compress

순환되는 로그파일을 gzip으로 압축하게된다. nocompress와는 반대.

 

nocompress

순환되는 로그파일의 압축을 하지 않는다. 반대는 compress

 

create mode owner group

순환되어  생성되는 로그파일의 파일퍼미션(mode)과 소유자(owner), 그리고 그룹소유자(group)를 지정한 것이다.
(예, create root 600 wheel)

 

daily

로그파일을 매일주기로 순환시킨다.

 

weekly

로그파일을 매주주기로 순환시킨다.

 

monthly

로그파일을 한달주기로순환시킨다.

 

errors address

logrotate작업시에 에러가 발생한다면 지정된 메일주소로 메일을 보내게 된다.

 

extension ext

logrotate 실행후에 순환되어 생성되는 파일의 이름뒤에 확장자로 붙일 확장자명을 지정한다.
만약 compress라는 옵션으로 gzip으로 압축을 했다면 gz라가 확장자 뒤에 붙게된다.
예를 들면 compress라는 옵션과 함께 "extension ext"옵션이 주어졌다면 logrotate실행후에 생성되는 파일은 messages.0.ext.gz과 같은 모양새를 갖게되는 것이다

 

ifempty

로그파일이 비어있는 경우에도  rotate(순환)을 하게된다. 기본값이다.

 

notifempty

ifempty와는 반대로 로그파일이 비어있을 경우에는 순환을 하지 않는다.

 

mail address

logrotate작업후에 이전로그파일을 지정된 메일주소로 메일을 보낸다. (특정한 경우의 로그파일은 보내지 않을 수도 있다. )

 

postrotate/endscript

logrotate작업 이후에 지정된 작업(스크립트)을 실행한다.

 

prerotate/endscript

logrotate작업 이전에 지정된 작업(스크립트)을 실행한다.

 

 rotate count

logrotate의 실행결과 순환되는 파일들의 총 갯수라고 이해하자.
즉, logrotate의 결과 삭제되거나 지정된 주소로 메일로 보내지기전의 총 파일갯수라고 이해하면 된다.
그리고 rotate 0로 설정하고 나면 이전파일은 순환과 함께 삭제되어 버린다.

 

size size

logrotate의 결과 순환된 결과 파일사이즈가 지정한 크기를 넘지 않도록 한다.
지정하는 방법은 100k, 100M등으로 용량단위를 붙여서  지정하면 된다.



출처 : https://www.linux.co.kr/linux/logrotate/

?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 928098
2473 연애 폭소클럽 제36회 - 즉석미팅 1 (김제동) file JaeSoo 2003.08.18 18981
2472 연애 폭소클럽 제37회 - 즉석미팅 2 (김제동) file JaeSoo 2003.08.18 17808
2471 연애 폭소클럽 제38회 - 방학특집 연애특강 1 (김제동) 1 file JaeSoo 2003.08.18 16361
2470 연애 폭소클럽 제39회 - 방학특집 연애특강 2 (김제동) file JaeSoo 2003.08.18 17828
2469 연애 폭소클럽 제40회 - 방학특집 연애특강 3 (김제동) file JaeSoo 2003.08.18 16842
2468 웹 프로그래밍 이미지 특정 부분에 링크 만들기 처누 2003.08.24 15624
2467 웹 프로그래밍 게시판에 자신의 FTP 자료 올리기 3 처누 2003.08.25 13135
2466 동식물 고양이 클리닉 - 고양이 기르기 file JaeSoo 2003.10.10 13693
2465 동식물 고양이 클리닉 - 고양이 품종 file JaeSoo 2003.10.10 13427
2464 동식물 고양이 클리닉 - 2개월에서 4개월령 고양이 관리 file JaeSoo 2003.10.11 13428
2463 동식물 고양이 클리닉 - 4개월에서 9개월령 고양이 관리 file JaeSoo 2003.10.11 13132
2462 동식물 고양이 클리닉 - 다자란 고양이 file JaeSoo 2003.10.13 13922
2461 동식물 고양이 클리닉 - 나이든 고양이 file JaeSoo 2003.10.13 13679
2460 동식물 고양이 클리닉 - 고양이의 영양 file JaeSoo 2003.10.13 13429
2459 동식물 고양이 먹이와 주의사항 file JaeSoo 2003.10.13 13902
2458 동식물 아기 고양이의 식사 file JaeSoo 2003.10.13 11821
2457 동식물 고양이 사료 급여량 file JaeSoo 2003.10.13 12880
2456 기타 편지봉투 쓰는 법 file JaeSoo 2003.10.21 16993
2455 웹 프로그래밍 제로보드 로그인 실패시 이유를 메세지로 알려주기 처누 2003.11.04 8459
2454 웹 프로그래밍 최근 게시물 출력시 링크게시물에 스타일시트 적용하기 처누 2003.11.06 7927
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 124 Next
/ 124


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너