티스토리 뷰

Linux

Cronolog 설정

애플자라 2007. 8. 29. 23:32
반응형
아파치로 웹사이트를 운영하다보면 로그 파일을 처리하지 못해 고민하는 경우를 흔히 보게 됩니다. 어떻게 분석해야 하는지. 어떻게 관리해야 하는지 등등..

저는 로그 파일 처리 방법을 cronolog를 애용하고 있습니다.

다양한 방법이있겠지만. cronolog가 하나의 대안이 될 수 있기에 여기에 소개 합니다.

cronolog는 아파치의 logrotate를 대신하는 유틸입니다.

두 유틸의 차이점은 logrotate는 특정 시간 간격으로 로그 파일을 교체해주지

만 cronolog는 yymmdd 에 따라 로그파일을 분할한다는 점입니다.


예를 들어 access_log.010920, access_log.010921 등이 가능해집니다.

(IIS에서는 기본으로 제공하는 기능이긴 하지만요..)


일/월/년 단위로 로그를 자르기 때문에 보관하기도 편하고 로그 분석할때도 편

합니다. 로그 파일이 무작정 커질일도 없고요..



2. 설치



필요한것:

apache (당연하겠죠)

cronolog http://www.ford-mason.co.uk/resources/cronolog/

압축푸는 프로그램, 컴파일러



다운받아서 컴파일하고 설치하면됩니다.

/usr/local/sbin/cronolog에 깔릴겁니다.



이제 httpd.conf 를 수정합니다.



3. 설정 & 예제



설정: TransferLog "|/usr/local/sbin/cronolog /www/logs/%Y/%m/%

d/access.log"

결과:

/www/logs/2001/01/01/access.log

/www/logs/2001/01/02/access.log



대문자 Y 를 소문자 y로 고쳤습니다.

설정: TransferLog "|/usr/local/sbin/cronolog /www/logs/%y/%m/%

d/access.log"

결과:

/www/logs/01/01/01/access.log

/www/logs/01/01/02/access.log



%d를 지우면 월단위로 남깁니다.

설정: TransferLog "|/usr/local/sbin/cronolog /www/logs/%y/%m/access.log"

결과:

/www/logs/01/01/access.log

/www/logs/01/02/access.log



한 디렉토리에 저장하는거도 가능합니다.

설정: TransferLog "|/usr/local/sbin/cronolog /www/logs/access.%Y%m%d"

결과:

/www/logs/access.20010101

/www/logs/access.20010102



비슷한거

설정: TransferLog "|/usr/local/sbin/cronolog /www/logs/www%Y%m%d.log"

결과:

/www/logs/www20010101.log

/www/logs/www20010102.log



access_log 로 심볼릭 링크를 걸수도 있습니다.

access_log에 심볼릭링크는 주기적으로 바뀌어서 지금 사용하는 로그파일이 됩

니다.

TransferLog "|/usr/local/sbin/cronolog --

symlink=/www/logs/access_log /www/logs/www%y%m%d.log"

/www/logs/access_log -> /www/logs/www20010102.log

/www/logs/www20010101.log

/www/logs/www20010102.log

로그분석 프로그램에서 로그파일을 지정해야 하는 하는 경우에 (예,

webalizer) access_log 를 지정하면 해당하는 날짜의 로그파일을 가리키겠

죠...



4. 본격 활용



문제:

아파치로 웹사이트를 운영하고 있는데 로그 분석을 해서 방문자 현황을 보고

싶다. 그리고 지나간 로그 파일을 날짜별로 정리해서 압축해서 보관하고 싶

다.



해결:

cronolog를 이용해 로그를 분할 저장합니다. 이때 심볼릭링크를 반드시 해야합

니다.

TransferLog "|/usr/local/sbin/cronolog --

symlink=/www/logs/access_log /www/logs/www%y%m%d.log"



그러면 로그는 이렇게 저장됩니다.

/www/logs/access_log -> /www/logs/www20010102.log

/www/logs/www20010101.log

/www/logs/www20010102.log



Webalizer의 conf 파일에서 분석할 로그 파일을 /www/logs/access_log 로 지정

합니다. 물론 history 보관 옵션을 on 해야 합니다.



crontab 파일을 열어 매일 23시 59분에 webzlizer를 실행하도록 세팅합니다.

성격이 급한 분은 매일/매시/59분으로 세팅해도 무방합니다.



매일 23시 59분에 cron에 의해 webalizer가 실행되며 access_log에 심볼릭링크

된 오늘자 아파치 로그를 분석하고 history에 저장합니다.

0시 0분이 되면 (새로운 접속이 있으면) 아파치(cronolog)는 새로운 날짜의 로

그파일을 만들고 access_log 에는 새로운 파일을 링크걸게 됩니다.

다시 23시 59분이 되면 cron이 webzlizer를 실행시키고, access_log를 분석하

는데 어제 날짜가 아닌 오늘 날짜의 파일을 분석합니다.



문제:

지나간 로그를 자동으로 압축하고 싶다.



해결:

파일을 압축하는 스크립트를 cron에 등록시켜 사용하면 됩니다.

예를 들면...

find /www/logs -name *.log -mtime +1 -exec gzip {} \;아파치로 웹사이트를 운영하다보면 로그 파일을 처리하지 못해 고민하는 경우

를 흔히 보게 됩니다. 어떻게 분석해야 하는지. 어떻게 관리해야 하는지 등

등..

저는 로그 파일 처리 방법을 cronolog를 애용하고 있습니다.

다양한 방법이있겠지만. cronolog가 하나의 대안이 될 수 있기에 여기에 소개

합니다.



cronolog는 아파치의 logrotate를 대신하는 유틸입니다.

두 유틸의 차이점은 logrotate는 특정 시간 간격으로 로그 파일을 교체해주지

만 cronolog는 yymmdd 에 따라 로그파일을 분할한다는 점입니다.



예를 들어 access_log.010920, access_log.010921 등이 가능해집니다.

(IIS에서는 기본으로 제공하는 기능이긴 하지만요..)



일/월/년 단위로 로그를 자르기 때문에 보관하기도 편하고 로그 분석할때도 편

합니다. 로그 파일이 무작정 커질일도 없고요..



2. 설치



필요한것:

apache (당연하겠죠)

cronolog http://www.ford-mason.co.uk/resources/cronolog/

압축푸는 프로그램, 컴파일러



다운받아서 컴파일하고 설치하면됩니다.

/usr/local/sbin/cronolog에 깔릴겁니다.



이제 httpd.conf 를 수정합니다.



3. 설정 & 예제



설정: TransferLog "|/usr/local/sbin/cronolog /www/logs/%Y/%m/%

d/access.log"

결과:

/www/logs/2001/01/01/access.log

/www/logs/2001/01/02/access.log



대문자 Y 를 소문자 y로 고쳤습니다.

설정: TransferLog "|/usr/local/sbin/cronolog /www/logs/%y/%m/%

d/access.log"

결과:

/www/logs/01/01/01/access.log

/www/logs/01/01/02/access.log



%d를 지우면 월단위로 남깁니다.

설정: TransferLog "|/usr/local/sbin/cronolog /www/logs/%y/%m/access.log"

결과:

/www/logs/01/01/access.log

/www/logs/01/02/access.log



한 디렉토리에 저장하는거도 가능합니다.

설정: TransferLog "|/usr/local/sbin/cronolog /www/logs/access.%Y%m%d"

결과:

/www/logs/access.20010101

/www/logs/access.20010102



비슷한거

설정: TransferLog "|/usr/local/sbin/cronolog /www/logs/www%Y%m%d.log"

결과:

/www/logs/www20010101.log

/www/logs/www20010102.log



access_log 로 심볼릭 링크를 걸수도 있습니다.

access_log에 심볼릭링크는 주기적으로 바뀌어서 지금 사용하는 로그파일이 됩

니다.

TransferLog "|/usr/local/sbin/cronolog --

symlink=/www/logs/access_log /www/logs/www%y%m%d.log"

/www/logs/access_log -> /www/logs/www20010102.log

/www/logs/www20010101.log

/www/logs/www20010102.log

로그분석 프로그램에서 로그파일을 지정해야 하는 하는 경우에 (예,

webalizer) access_log 를 지정하면 해당하는 날짜의 로그파일을 가리키겠

죠...



4. 본격 활용



문제:

아파치로 웹사이트를 운영하고 있는데 로그 분석을 해서 방문자 현황을 보고

싶다. 그리고 지나간 로그 파일을 날짜별로 정리해서 압축해서 보관하고 싶

다.



해결:

cronolog를 이용해 로그를 분할 저장합니다. 이때 심볼릭링크를 반드시 해야합

니다.

TransferLog "|/usr/local/sbin/cronolog --

symlink=/www/logs/access_log /www/logs/www%y%m%d.log"



그러면 로그는 이렇게 저장됩니다.

/www/logs/access_log -> /www/logs/www20010102.log

/www/logs/www20010101.log

/www/logs/www20010102.log



Webalizer의 conf 파일에서 분석할 로그 파일을 /www/logs/access_log 로 지정

합니다. 물론 history 보관 옵션을 on 해야 합니다.



crontab 파일을 열어 매일 23시 59분에 webzlizer를 실행하도록 세팅합니다.

성격이 급한 분은 매일/매시/59분으로 세팅해도 무방합니다.



매일 23시 59분에 cron에 의해 webalizer가 실행되며 access_log에 심볼릭링크

된 오늘자 아파치 로그를 분석하고 history에 저장합니다.

0시 0분이 되면 (새로운 접속이 있으면) 아파치(cronolog)는 새로운 날짜의 로

그파일을 만들고 access_log 에는 새로운 파일을 링크걸게 됩니다.

다시 23시 59분이 되면 cron이 webzlizer를 실행시키고, access_log를 분석하

는데 어제 날짜가 아닌 오늘 날짜의 파일을 분석합니다.



문제:

지나간 로그를 자동으로 압축하고 싶다.



해결:

파일을 압축하는 스크립트를 cron에 등록시켜 사용하면 됩니다.

예를 들면...

find /www/logs -name *.log -mtime +1 -exec gzip {} \;
반응형

'Linux' 카테고리의 다른 글

top명령의 다양한 응용  (0) 2007.08.29
grep  (0) 2007.08.29
backlog 관련  (0) 2007.08.29
하드용량 알아내기  (0) 2007.08.29
tail 편한 사용법  (0) 2007.08.29
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함