bbong blog : 위치로그 : 태그 : 방명록 : 관리자 : 새글쓰기
bbong blog 블로그에 오신것을 환영해요^^
방명록에 글 남기기!!
53
108
159244
'2007/04/27'에 해당되는 글 2건
logRotate
Linux/Linux Log, (2007/04/27 17:27)

작업의뢰내용
  현재 운영,관리하고 있는 리눅스 서버의 고객으로 부터,

  1. 자신의 도메인 웹서버로그 파일을 자신의 계정디렉토리의 logs 디렉토리에 저장하기를 원하며,
       해당 웹서버 로그파일은 1주일에 1번간격으로 로그로테이션 하기를 원하며, 6주뒤에 자동으로 삭제되기를 원한다.
  2. 월요일은 제외한, 매일 새벽 4시20분에 고객 디렉토리내의 임시파일을 자동으로 삭제해주기를 원한다.

  는 작업의뢰를 받았습니다.


  상세내용
 
  작업의뢰.1
  아래의 내용을 확인한 뒤, 아파치 설정파일을 수정하고
  실제로 고객의 의뢰에 합당하는 작업이 이루어지는지 확인하는 체크리스트를 작업순서서에 포함하시오.
  (체크리스트는 별도로 작성할 필요없으며, 작업 순서서에 추가해서 작성하시오) 

  ㄱ. 해당 고객의 아파치 설정파일 내용

       <VirtualHost  xxx.xxx.xxx.xxx>
        ServerName rcsystem.co.kr
        ServerAlias www.rcsystem.co.kr
        DocumentRoot /home/rcsystem/html
        CustomLog logs/rc-access_log common
       </VirtualHost>

  ㄴ. 로그로테이트 설정파일

       # ls -l /etc/logrotate.conf
       -rw-r--r--    1 root     root          585 Jan 19  2005 /etc/logrotate.conf

  ㄷ. 작업의뢰에 대한 참고사항
        logrotate사용법에 대한 문서참고


  작업의뢰.2
  ㄱ. 고객 디렉토리 임시파일
         고객이 테스트용으로 수시로 작성하는 임시파일이며, 위치와 파일명은 다음과 같습니다.
 
         /home/rcsystem/html/temp_clock.txt

  ㄴ. 해당 파일을 삭제하는 스크립트를 작성한 뒤, 해당 날짜,시간에 실행되도록 cron에 등록한다.








******************************************************************************************************************

작업의뢰.1
  아래의 내용을 확인한 뒤, 아파치 설정파일을 수정하고
  실제로 고객의 의뢰에 합당하는 작업이 이루어지는지 확인하는 체크리스트를 작업순서서에 포함하시오.
  (체크리스트는 별도로 작성할 필요없으며, 작업 순서서에 추가해서 작성하시오) 

  ㄱ. 해당 고객의 아파치 설정파일 내용

       <VirtualHost  xxx.xxx.xxx.xxx>
        ServerName rcsystem.co.kr
        ServerAlias www.rcsystem.co.kr
        DocumentRoot /home/rcsystem/html
        CustomLog logs/rc-access_log common
       </VirtualHost>


위에서 알 수 있듯이 고객의 호스트는 가상호스트이며 여기에서 로그 위치를 잡아준다면(etc/httpd.conf)해당 디랙토리로
로그를 저장 할 수 있다
->CustomLog logs/rc-access_log common 이 부분이 로그저장 위치이며 이는 디폴트로 아파치 홈 디렉토리나 /var에 로그가
  저장되게 되어있다
  우선 /hom/rcsystem 에서 mkdir logs 로 logs 디렉토리를 만들고
  vi /etc/httpd.conf 에서
  CustomLog /home/rcsystem/logs/rc-access_log common 으로 변경한다
  뒤에 common은 로그 저장 포멧이며 여러가지 종류가 있지만 간략히 설명하면 common 은 로그가 간략히 나오고
  combined는 좀더 자세히 뭐 이런식이다
  자세한 내용은 LogFormat참고


ㄴ. 로그로테이트 설정파일

       # ls -l /etc/logrotate.conf
       -rw-r--r--    1 root     root          585 Jan 19  2005 /etc/logrotate.conf


이제 로그 디렉토리 설정을 했으니 로그로테이트를 해야한다.
cronlog, webalizer를 사용하는 방법도 있으나 괜히 부하를 줄 필요가 없으므로 /etc/logrotate.conf파일에서 작업해 주면
간단히 끝난다.
/etc/logrotate.conf 는 아파치를 설치 하면 다 있다.



*****************************************************************************************************************

먼저 로그로테이트 주요 옵션을 살펴보자

-f, --force 

강제순환시킨다. 이 옵션은 새로운 항목을 추가한 후에 로그파일을 순환시키거나 옛날 로그파일이 이미 삭제되어 새로운 로

그파일이 생성되어 로그기록이 계속되고 있을 경우에 유용한 옵션이다.

-s, --state

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

--usage

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

[root@linux logrotate.d]# logrotate --usage
Usage: logrotate [-m command] [-s statefile] [--usage] [OPTION...]
[root@linux logrotate.d]#

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등으로 용량단위를 붙여서  지정하면 된다.

******************************************************************************************************************





이제 설정해 보자

vi /etc/logrotate.conf

1.   /home/rcsystem/logs/rc-access_log{                        <-절대경로지정
2.           weekly                                                            <-주단위
3.           rotate 6                                                           <-돌아가는 주기         
4.           sharedscripts
5.           postrotate                                                        <-로그로테이트 후 실행할 명령
6.                usr/bin/killall -HUP httpd                               <-아파치 리스타트
7.            endscript
8. }


위 설정내용은 일주일에 한번씩 로그를 로테이트하며 6단위 즉 rc-access_log1,2,3,4,5,6 까지 순환 시키며 6번째가 지나면
가장 오래된 로그를 자동 삭제 하여 그 위에 새로운 로그를 쒸운다 아파치가 실행중에는 계속 이전 로그파일을 쓰기 때문에
순환할 수 없다 그래서 로그파일을 옮기거나 지운 후 서버를 재시작 하여 로그파일을 새로 열어야 한다.

이로서 한주에 한번씩 로그를 바꾸어 6주동안의 로그를 보관하며 6주가 지난 로그는 순환과 함께 자동삭제 된다    완료
(아파치를 재시작 하고 싶지 않다면 etc/httpd.conf에 CustomLog를
CustomLog "|/usr/local/apache/bin/rotatelogs /home/rcsystem/logs/rc-access_log %m%d 604800" common 식으로 변경
이러면 파이프를 이용 로그파일을 604800초(일주일)단위로 로그.월.일로 로그를 보관 할 수 도 있다 하지만 위에서 제시한

방법이 아니기에 패스)




작업의뢰.2
  ㄱ. 고객 디렉토리 임시파일
         고객이 테스트용으로 수시로 작성하는 임시파일이며, 위치와 파일명은 다음과 같습니다.
 
         /home/rcsystem/html/temp_clock.txt

  ㄴ. 해당 파일을 삭제하는 스크립트를 작성한 뒤, 해당 날짜,시간에 실행되도록 cron에 등록한다.



이건 뭐...스크립트고 뭐고 cron으로 걍 지우면 돼는데....
월요일을 제외한 4시20분...

crontab -e
20 4 * * 0,2,3,4,5,6 rm -f /home/rcsystem/html/temp_clock.txt
분 시 일 월 요일             명령
            
요래도 돼구


vi
#!/bin/sh
find /home/rcsystem/html/*.txt -exec rm -f {} \;
대충 저장 : wq del.sh

크론에 대충등록

crontab -e
20 4 * * 0,2,3,4,5,6    del.sh의경로



어딘가에서 엄청나게 잘 못 되었을 수 도 있으며?있을것이며 이를 사용할 시 시스템이 뻑나도 책임없음~~냐하하하하


위로
awstats
Linux/Linux Log, (2007/04/27 16:15)

웹로그분석기 설치기 - Awstats


글쓴이 : 문용우 (2004년 03월 03일 오전 10:56)

수정이 : 김정언(2005년 8월 18일 오후 2:23)




####################################
# HowTo - Awstats 웹로그 분석 설치          #
#                                                            #
# 2004.03.03 linuxxer                                 #
# 2005.08.21 jkim                                       #

####################################

* Webalizer 를 많이 사용하시지만 awstats는 좀더 화려한(?) 인터페이스와다양한 정보를 제공해줍니다.


[목차]

1. 준비사항
2. Setup / Configure
3. Complete

4. 기타

5. 질의응답


1. 준비사항

프로젝트 싸이트 : http://awstats.sourceforge.net
다운로드 : awstats-6.4.tgz (2005년 8월 현재 stable한 버전)

웹로그분석이기 때문에 Web Server는 이미 설치가 되어 있어야 합니다.
( Apache 설치문서는 많이 있기 때문에 별도 설명을 하지 않음을 양해해 주시기 바랍니다. )

2. Setup / Configure

다운로드 받은 압축파일을 푸시면 docs 디렉토리안에 *.html 파일들이
Install 방법과 Plug-in사용법등 다양하게 정보를 같이 제공하고 있읍니다.
(프로젝트 홈페이지에 Install 방법 없읍니다.

꼭 *.html 을 보세요.

FAQ도 꼭 보기를 권합니다. 전부를 읽을 필요는 없지만 궁금해 하는 것에 대한 대다수의 해답을 찾을 수 있을 겁니다.

)


tar xvfz awstats-6.4.tgz
mv -rf  awstats-6.4  /usr/local/awstats
chmod -R  755 /usr/local/awstats
mkdir /etc/awstats       <- configuration 파일 저장위치
mkdir /var/lib/awstats  <- 분석한 데이타 저장 위치

cd /usr/local/awstats/tools


./configure.pl   <- awstats를 실행하는데 필요한 환경을 자동으로 만들어주기 위한 스크립트쯤으로 생각하면 됩니다.


(예)

[root@www tools]# ./awstats_configure.pl 

----- AWStats awstats_configure 1.0 (build 1.4) (c) Laurent Destailleur -----
This tool will help you to configure AWStats to analyze statistics for
one web server. You can try to use it to let it do all that is possible
in AWStats setup, however following the step by step manual setup
documentation (docs/index.html) is often a better idea. Above all if:
- You are not an administrator user,
- You want to analyze downloaded log files without web server,
- You want to analyze mail or ftp log files instead of web log files,
- You need to analyze load balanced servers log files,
- You want to 'understand' all possible ways to use AWStats...
Read the AWStats documentation (docs/index.html).

-----> Running OS detected: Linux, BSD or Unix

-----> Check for web server install
  Found Web server Apache config file '/usr/local/apache/conf/httpd.conf'

-----> Check and complete web server config file '/usr/local/apache/conf/httpd.conf'
Warning: You Apache config file contains directives to write 'common' log files
This means that some features can't work (os, browsers and keywords detection).
Do you want me to setup Apache to write 'combined' log files [y/N] ? y
  Add 'Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"'
  Add 'Alias /awstatscss "/usr/local/awstats/wwwroot/css/"'
  Add 'Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"'
  Add 'ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"'
  Add '<Directory>' directive
  AWStats directives added to Apache config file.

-----> Update model config file '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf'
  File awstats.model.conf updated.

-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y

-----> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
>
www.sample.com

-----> Define config file path
In which directory do you plan to store your config file(s) ?

Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
>

-----> Create config file '/etc/awstats/awstats.www.sample.com.conf'
Config file /etc/awstats/awstats.www.sample.com.conf created.

-----> Restart Web server with '/sbin/service httpd restart'
Stopping httpd: [  OK  ]
Starting httpd: [  OK  ]

-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.gamebonus.com
Or if you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue...


A SIMPLE config file has been created: /etc/awstats/awstats.www.gamebonus.com.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'www.gamebonus.com' with command:
> perl awstats.pl -update -config=www.gamebonus.com
You can also read your statistics for 'www.gamebonus.com' with URL:
> http://localhost/awstats/awstats.pl?config=www.gamebonus.com

Press ENTER to finish...

[root@www tools]#


여기까지 잘 따라 하셨다면 에러가 없을겁니다.

configure.pl 을 잘 실행 시키셨다면 자신이 정한 name으로 awstats.[정한 name].conf 파일이 생성되어 있을겁니다.

이 파일을 열어 LogFile= 항목을 자신의 웹로그가 위치한 절대경로를 입력합니다.

(예)

LogFile="/var/log/httpd/mylog.log"

이것을

LogFile="[자신이 사용하는 웹서버의 access 로그]"

제가 사용하는 예를 보여드리면
LogFile="/usr/local/apache/logs/access_log"


/usr/local/awstats/tools/ 아래보시면 httpd_conf 파일이 있읍니다.
이 파일을 vi로 여셔서 내용전체를 웹서버가 설치된 conf/httpd.conf 파일의 맨 하단에
붙여넣으시면 됩니다.

:wq


awstats-6.4 설치시에는 httpd.conf 내에 자동으로 아래부분이 추가 되었습니다.

혹시 추가 되지 않았다면 시스템설정에 맞게 추가해주셔야합니다.

...
#
# Directives to allow use of AWStats as a CGI
#
Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"

#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/local/awstats/wwwroot">
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>



3. Complete

간단하게 다 되었습니다 이제 웹브라우져로 확인을 해보겠습니다.

http://[웹서버]/awstats/awstats.pl?config=[자신이 정한 name]

한글화도 아주 잘 되어 있읍니다.

(설정파일에 language가auto로 되어 있어 사용자의 PC환경에 맞게 출력됩니다.)


자... 웹로그분석이니 Cron 작업도 빼 먹으면 안되겠죠?

vi /etc/crontab 하셔서
0-59/6 * * * * root /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=[자신이 정한 name]

:wq

로그분석 시간간격은 조정하시면 됩니다.


4. 기타

4.1. config파일에 설정된 기본 로그파일이 아닌 백업받아놓은 임의의 파일을 분석하고자 할 때는 다음과 같이 -LogFile 옵션으로 해결할 수 있다.

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.sample.com -LogFile=/usr/local/apache/logs/www.sample.com-access_log.1

4.1. DNS REVERSE LOOKUP

awstats 배포할 때 같이 배포되는 logresolvemerge.pl 로 접속하는 ip를 hostname으로 reverse lookup 할 수있다.

/usr/local/awstats/tools/logresolvemerge.pl -dnslookup

하면 간단한 설명을 볼 수 있다.


(예1) 백업되어 있는 로그파일을 pipe를 통해 분석한다.

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.sample.com -LogFile="/usr/local/awstats/tools/logresolvemerge.pl -dnslookup  ./www.sample.com-access_log |"


(예2)백업되어 있는 로그파일을 pipe를 통해 분석한다.
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.sample.com -LogFile="/usr/local/awstats/tools/logresolvemerge.pl -dnslookup  ./www.sample.com-access_log.1 |"



위로