网站日志处理工具Awstats:处理多Apache日志(二)

日期: 2009-02-01 作者:田逸 来源:TechTarget中国 英文

  二、 获取日志文件

  是Awstats服务器从Apache服务器取得日志文件,在本案中,我将从2个Apache服务器取得日志文件。取日志也是每天自动进行一次。有一点必须注意,那就是必须要等”第二步”操作正常结束后再进行取日志;回过头去看”第二步”的”/usr/local/bin/merge_log.sh”执行时间在00:05分,考虑执行程序的开销,估计 1小时左右可以完成这个操作,所以在凌晨2点去取文件是合时的。下面给出取日志的脚本:

  #!/bin/bash
  wget –active-ftp -m –directory-prefix=/root/logs/web1/ –tries=3 –output-file=/root/script/weblog-get.log ftp://sery:heufgewUQc@www1.sery.com/sery*.gz
  wget –active-ftp -m –directory-prefix=/root/logs/web2/ –tries=3
  –output-file=/root/script/weblog-get.log 
  ftp://sery: heufgewUQc@www2.sery.com/sery*.gz

  脚本成功运行后,将把第一个Apache服务器的日志文件放在”/root/logs/web1″目录,第2个Apache服务器的日志文件放在” /root/logs/web2″目录,并且把操作日志记录到文件”/root/script/weblog-get.log”,以方便检查脚本执行的状况。把这个脚本放在目录/usr/local/bin下,命名为weblog-get.sh,赋予执行权限,然后手动运行脚本/usr/local /bin/weblog-get.sh,看是否取得了远程Apache服务器的2个压缩日志文件。正确无误后,把它加在crontab 里。

  crontab -e
  00 02 * * * /usr/local/bin/weblog-get.sh

  每天凌晨2点,Awstats所在的服务器就会主动从2个远程的Apache服务器取来日志文件。

  三、 日志合并(在Awstats服务器上进行):

  由于用ftp取得的日志文件有多个(本案是2个),不便于处理,因此很有必要对日志进行解压和合并。处理使用下面的脚本来完成:

#!/bin/bash
  #define variables
  AwsLogDir=/root/logs/Awstats_log
  Web1Log=/root/logs/web1
  Web1OrigLog=$Web1Log/sery.com-access$(date +%Y%m%d –date=’1 days ago’).log.gz
  Web2Log=/root/logs/web2
  Web2OrigLog=$Web1Log/sery.com-access$(date +%Y%m%d –date=’1 days ago’).log.gz
  OldFile=/root/logs/Awstats_logs/sery.com-access$(date +%Y%m%d –date=’4 days ago’).log*
  #########################################################################
  #get logfiles
  cd $Web1Log
  if [[ -f $Web1OrigLog ]]
  then
  gunzip  -d $Web1OrigLog
  fi
  FileLog1=sery.com-access$(date +%Y%m%d –date=’1 days ago’).log
  if [[ -f $FileLog1 ]]
  then
  mv sery.com-access$(date +%Y%m%d –date=’1 days ago’).log  $AwsLogDir/17k.com-access$(date +%Y%m%d –date=’1 days ago’).log.1
  fi
  cd $Web2Log
  if [[ -f $Web2OrigLog ]]
  then
  gunzip  -d $Web2OrigLog
  fi
  FileLog2=sery.com-access$(date +%Y%m%d –date=’1 days ago’).log
  if [[ -f $FileLog2 ]]
  then
  mv sery.com-access$(date +%Y%m%d –date=’1 days ago’).log  $AwsLogDir/sery.com-access$(date +%Y%m%d –date=’1 days ago’).log.2
  fi
  #########################################################################
  # conbine two web logs to one
  cd $AwsLogDir
  File1Log=sery.com-access$(date +%Y%m%d –date=’1 days ago’).log.1
  File2Log=sery.com-access$(date +%Y%m%d –date=’1 days ago’).log.2
  
  if [[ -f $File1Log && -f $File2Log ]]
  then
    cat $File1Log $File2Log >sery.com-access.log 
  fi
  if [[ -f $OldFile ]]
  then
  rm $OldFile
  fi

  上述脚本正常运行后,将在/root/logs/Awstats目录生成文件sery.com-access.log,这个文件正是Awstats所需要的。如果从更多Apache服务器取来更多日志文件,上述脚本需要更改才能简洁高效。方法是-用循环方式生成那个sery.com-access.log文件。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

田逸
田逸

相关推荐