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


  在linux环境下,开源工具Awstats是一个非常受欢迎的网站日志处理工具,

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

。在linux环境安装和配置Awstats比较容易成功,但要同时处理多个Apache日志(比如web集群的环境),还是有许多工作需要做的。

  平台环境

  1、 服务器3个,2个运行Apache的web 服务器,一个专门处理日志的Awstats服务器。

  2、 运行平台:全部为redhat AS 4。

  设计思路

  日志处理服务器每天定期从2个Apache服务器获取日志文件,对取得的压缩文件解压,接着把2个单独的日志文件合并成一个,再用Awstats处理生成报告。下面我们就按照这个思路来进行具体的部署。

  一、 Apache日志的生成和处理

  1、 Apache日志生成:

  通过修改Apache的配置文件 httpd.conf来达到这个目的,下面是某个Apache服务器的配置文件关于日志记录的修改部分:

  SetEnvIf Request_URI \.gif image-request

  SetEnvIf Request_URI \.jpg"|/opt/Apache2/bin/rotatelogs /var/log/web/sery-access%Y%m%d.log.%H 28800 480"bined env=!image-request

  在这里简单说明一下上面各个项目的意义。SetEnvIf Request_URI设置判断环境变量"image-request","CustomLog "|/opt/Apache2/bin/rotatelogs /var/log/web/sery-access%Y%m%d.log.%H 28800 480"bined env=!image-request

  "表示不记图片请求所产生的日志,并且使用Apache的日志轮转工具rotatelogs对日志进行分割,以年月日及小时方式命名文件,这样用脚本处理日志时就非常方便了。这个CustomLog有点特别,不要把命令前面的"|"等符号写丢了。通过运行Apache服务,将在目录/var/log/web/生成日志文件sery-access20071120.log.00.

  由于使用了日志轮转功能,从上图可以看见2个日志文件。

  2、 日志备份和压缩:

  进入日志所在的目录,把同一天不同时间段的日志合并成一个文件,压缩后移动到另外的一个位置/var/log/weblog-backup。为什么要把它放在另外的位置并且压缩呢?主要的原因是为了在传输时节省时间。当然我们不可能每天手动来执行这个操作,自然而言,用shell脚本来干这个事情了。下面给出脚本的内容:

  #!/bin/sh

  lastlogdate=`date "+%Y%m%d" -d yesterday`

  touch /var/log/web/sery-access$lastlogdate.log

  for i in /var/log/web/sery-access$lastlogdate.log.*;

  do cat $i >> /var/log/web/sery-access$lastlogdate.log

  rm -f $i

  done

  touch /var/log/web/sery-access$lastlogdate.log

  gzip /var/log/web/sery-access$lastlogdate.log

  if ;

  then

  mv /var/log/web/sery-access$lastlogdate.log.gz /var/log/weblog-backup/

  fi

  rm -rf `find /var/log/weblog-backup/ -atime 7`

  把这个脚本命名为merge_log.sh,放在目录/usr/local/bin下面,并赋予执行权限,《网站日志处理工具Awstats:处理多Apache日志》()。然后在自动任务里加入这个任务,让它每天自动执行一次。运行crontab -e 把下面的行加入其中:

  5 0 * * * /usr/local/bin/merge_log.sh

  为检查脚本的正确性,至少手动执行一遍脚本merge_log.sh,看是否在目录/var/log/weblog_backup生成压缩文件。如果如愿生成类似 sery-access20071119.log.gz这样的文件,表明脚本正确地按照我们的意图工作了。

  3、 允许Awstats取得Apache的日志文件:

  部署ftp服务,创建一个ftp用户,然后把这个ftp的用户目录定位到"/var/log/weblog-backup",即第2步生成压缩文件的目录。使用下列的命令产生ftp用户和指定目录:

  # useradd -d /var/log/weblog-backup -s /sbin/nologin sery

  # passwd sery

  # chmod 755 -R /var/log/weblog-backup

  由于vsftpd配置非常容易,这里就不再多说。启用ftp服务,用刚才创建的用户测试一下,看是否可以看见"/var/log/weblog_back"里的文件。

  到这一步,我们需要在Apache服务器上进行的操作就结束了。多个Apache服务器,只需要重复上面的操作即可。当然,为了适应你自己的环境,请自行修改相关的目录和文件。

  二、 获取日志文件

  是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@.sery/sery*.gz

  wget --active-ftp -m --directory-prefix=/root/logs/web2/ --tries=3\

  --output-file=/root/script/weblog-get.log \

  ftp://sery: heufgewUQc@.sery/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服务器取来日志文件。


上一篇:小区宽带的综合布线解决方案应用

下一篇:上网无忧 无线网络断网修复窍门


Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器