多主机多站点情景下AWStats日志分析

公司web服务器分为三个集群:前台(包括www、news、m等站点);图片(包括img、static等站点);后台(包括user、interface等站点)。这种情况下如何使用awstats进行日志分析呢?

这个需求我们很容易想到其中的几个“关键点”

如何将各台web server上的站点日志拷贝到awstats server上的合适位置以备处理呢?这好说,写脚本用scp或者rsync嘛!ok,再想一步,如何在server数量或者server上站点发生变化时,脚本依然能够正确的完成任务呢?这就要各server上关于日志名称、日志及其备份目录、日志轮转等方面做统一约定了,脚本按照这个约定才能“以不变应万变”。

一个站点的访问日志势必会有多份,awstats如何处理呢?还好这一点awstats已经帮我们想好了,在awstats配置文件里关于“LogFile=”部分的注释已经写得很清楚。

这么多站点,最好有一个统一的入口页面,而且增减站点入口要简单,用着才方便。

基于以上几点,本文分享一种思路,若有更优的方法,还请不吝指教。

文章分四个部分:前提及约定awstats配置要点和FastCGI方式配置集中展示页面(JavaScript实现)日志收集处理脚本

前提及约定

先看下我的约定(其实某些约定即使在本文之外也是很有必要的,例如1、2。脚本的正常运行依赖于这些约定):

日志命名:如访问日志命名为;日志存放位置:当前的日志存在于/nginx_log目录,日志备份存储于/nginx_log/backup。看下图就一目了然了

image

日志轮转:我的web server为nginx,通过日志切割脚本自动在0点重新生成日志,并将旧日志文件以前一天的日期为后缀命名(例如“images.access.log.2015-12-02”)移动到日志备份目录。

看下日志切割脚本(在每台web server定时0点执行)
cat rotate_nginx_logs.sh

#!/bin/sh logs_path="/nginx_log" ###日志存放路径 logs_bak_dir="/nginx_log/backup" ###日志备份目录 yesterday=`date -d "1 day ago" +%` pid_file=`cat /usr/local/nginx/nginx.pid` ###nginx pid 文件 cd $logs_path for log in `ls *.log`;do mv $log $logs_bak_dir/$log.$yesterday done ###重命名日志文件 kill -USR1 $pid_file ###告知nginx重新生成日志 cd $logs_bak_dir find . -mtime +5|xargs rm -f ###删除backup目录下超过5天的备份

每天凌晨自动完成这一系列任务, 页面最新可显示昨日的分析结果

各站点日志文件拉取到awstats server后的存储形式

image


awstats server设置对所有相关web server的免秘钥登陆,以便拉取日志

awstats配置要点和FastCGI方式配置

这里不展开详细的安装步骤,只说明一些配置选项以及如何配置动态模式。

awstats有两种方式展示分析结果:

一种是命令行生成html格式的分析页面;另一种是在浏览器通过向CGI网关传递参数来动态生成分析结果。

其实在原理上,这两种形式都需要“perl awstats.pl -config=mysite.conf -update”命令定时更新生成指定站点的“数据文件”(即经过awstats.pl分析日志生成的中间文件),然后可以分两种方法(对中间文件进行处理)生成我们看到的分析页面:

通过“perlawstats.pl -config=www.conf -output -staticlinks > ”命令生成html文件用于展示

web服务器通过FastGCI调用类似“?config=/usr/local/services/awstats-7.4/etc/www.conf”的url在访问时动态生成分析页面

两种方式各有优缺:第一种定时生成html文件,访问时页面加载快,但是页面布局使用起来不方便也不美观;第二种在打开页面时需要临时处理“数据文件”生成html,页面加载速度根据“数据文件”大小不同会有不同程度延迟,但是动态形式的页面布局看着舒服用着顺手(所以我选择fastcgi模式)。

fastcgi模式页面如下图所示

image

来看下我的awstats目录,其中我增加了三个目录,如下图

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6f44930818a58de7f608bf43f134052b.html