分类: LINUX
2010-05-18 11:18:36
三、多主机日志分析
在awstats5.4版本以后,awstats可以用include来实现对多个站点得日志分析。
这里要用到一个公共文件,在/usr/local/awstats/wwwroot/cgi-bin/下,我们做如下操作:
#cp /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf /webserve/awstats/awstats.common.conf
#vi awstats.common.conf
把LogFile这一行注释了,剩下得都保留,然后在文件得最后添加如下:
#
Include "awstats.common.conf"
Logfile="/backup/log/access_log.%YYYY-24%MM-24%DD-24"
SiteDomain=""
DirData="/backup/awstats"
#bbs.xxxxx.com
Include "awstats.common.conf"
Logfile="/backup/log/access_log.%YYYY-24%MM-24%DD-24"
SiteDomain="bbs.xxxxx.com"
DirData="/backup/awstats"
注:如果是windows下我们就要这样些日志得格式\ex%YY-24%MM-24%DD-24.log
这里在增加一下关于日期设置的含义把: %YYYY-n n小时以前的带世纪的4位数字表示的年 建议压缩文件用 LogFile="zcat /home/www/logs/%YYYY/%MM/%YYYY-24%MM-24%DD-24.gz|" 效率比gzip高 |
把者三个文件和awstats.common.conf一起放置在awstats.common.conf里面配置DirCgi="/awstats"里的awstats下面的cgi-bin文件夹里(其实这个我们默认就可以了),及和awstats.common.comf同在一个目录下。(注:我这里得这个目录是/webserver/awstats)
现在我们来编译他们,,使用awstats_updateall.pl工具可以实现这个效果,因为是linux我们认为perl已经在系统环境年变量中了。
运行如下命令:
#/usr/local/awstats/tools/awstats_updateall.pl now -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=/usr/local/awstats/wwwroot/cgi-bin -excludeconf=common
这样所有得日志都会分析出来,我们只需要通过就能访问我们想要访问得站点。
如何获取多主机的日志,这一点应该属于awstats的一个待解决的问题,如果要分析多台主机的日志,这里就要写脚本,通过脚本来达到我们的目的。
脚本我就不给了,最好自己能学习写一下,对于一个合格的系统管理员,写脚本时必须的。如果有人非要想要,可以给我留言。
四、多服务器的日志合并
多服务器的日志合并分析
只要你的文件系统没有使用NFS,就需要把不同服务器上的log文件同步到一台上合并分析,合并之前还需要排序以提高awstats的效率
第一步,用rsync同步文件
#!/bin/sh
rsync -avz --progress -e "ssh -p 22" www@192.168.212.15/data/logs/`date --date "1 days ago" +*.\%Y\%m\%d` /data/logs/
在原服务器上删除前一天的日志:
50 4 * * * /bin/rm -f /data/logs/`date --date "1 days ago" +*.\%Y\%m\%d`
第二步,分析日志,假设我们有3台服务器的日志传到第四台服务器上合并日志:
-rw-r--r-- 1 nobody root 1538516677 Oct 29 05:20 1.gz
-rw-r--r-- 1 nobody root 1507444445 Oct 29 04:12 2.gz
-rw-r--r-- 1 nobody root 1507444445 Oct 29 04:43 3.gz
我们利用logresolvemerg.pl配置文件中配置日志处理
LogFile="/usr/local/awstats/tools/logresolvemerge.pl /usr/local/nginx/logs/* |"
logresolve可以合并、排序日志文件,它还自动检测文件格式,只要zcat或bzcat在PATH中,它会自动调用zcat