ShellScript


매일 발생되는 액세스 로그에서 특정 페이지가 호출된 수를 카운트하는 스크립트. 이 스크립트를 크론에 등록시켜 매일 그전날의 결과를 파일로 만들어 냄

웹서버는 sun java web server

로그파일 발생형식은 다음과 같이 세팅되어 있다.

현재 발생되는 내역은 access 라는 이름으로 생기고 하루가 넘어가면 access파일은 access.yyyymmdd0000 라는 형식으로 파일이 바뀐다. 이때 뒤에 붙는 날짜는 오늘 날짜가 붙게 된다. 예를 들어 2006/10/24 의 로그파일은 25일이 되는 순간 access.200610250000 라는 이름으로 저장이된다.

기본적인경우는 위와 같고 파일크기가 작은경우는 이틀치가 하나의 파일에 들어가는 경우도 있다. 즉 2006/10/23~24의 로그가 access.200610250000 파일에 들어가는 경우도 있다.

이런 환경에서 특정 패턴을 분석해 라인수를 구하는 스크립트이다.
# 로그파일 
log_dir=/log/`uname -n`

# 결과파일
result_file=/script/anal_log_`date +%Y%m`.result

# was에 결과를 보내기위한 url
was_call_url="http://was/log_web_access_count.jsp"

LANG=en_US.roman8
today=`TZ=GMT-9 date +%Y%m%d`
yesteryear=`TZ=GMT+15 date +%Y`
yestermon=`TZ=GMT+15 date +%m`
yesterabmon=`TZ=GMT+15 date +%b`
yesterdate=`TZ=GMT+15 date +%d`

file=$log_dir/'access.'$today'0000'
# 해당파일이 없는 경우 access파일을 대상으로 작업
if
 ! [ -f $file ]
then
 file=$log_dir/'access'
fi


# 날짜,파일명 기록
echo "" >> $result_file
echo "::"$yesteryear$yestermon$yesterdate >> $result_file
echo "file="$file >> $result_file

# 업무1
jobid=job1
echo "-------------------------------------------" >> $result_file
echo jobid=$jobid >> $result_file
pattern1="\[$yesterdate/$yesterabmon/$yesteryear"
pattern2="GET /abc.jsp"
echo 'pattern1='$pattern1 >> $result_file
echo 'pattern2='$pattern2 >> $result_file
result_count=`cat $file | grep $pattern1 | grep "$pattern2" | wc -l`
echo $result_count >> $result_file

# was call
_url="$was_call_url?date=$today&host=`uname -n`&jobid=$jobid&count=$result_count"
echo "write was log : $_url" >> $result_file
/usr/local/bin/curl "$_url"


# 업무2
jobid=job2
echo "-------------------------------------------" >> $result_file
echo jobid=$jobid >> $result_file
pattern1="\[$yesterdate/$yesterabmon/$yesteryear"
pattern2="GET /ddd.jsp"
echo 'pattern1='$pattern1 >> $result_file
echo 'pattern2='$pattern2 >> $result_file
result_count=`cat $file | grep $pattern1 | grep "$pattern2" | wc -l`
echo $result_count >> $result_file

# was call
_url="$was_call_url?date=$today&host=`uname -n`&jobid=$jobid&count=$result_count"
echo "write was log : $_url" >> $result_file
/usr/local/bin/curl "$_url"

스크립트가 수행되면 로컬서버에 결과 파일이 쌓이고 또한 결과가 was로 호출(curl)되어 해당서버에 기록을 남기게 되면 웹을통해 내용을 조회할수 있다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-08-27 17:32:32
Processing time 0.0076 sec