原文地址:https://www.akii.org/use-awstats-automatic-analysis-nginx-log.html

完成配置文件的创建后,我们还要修改一下。因为我们是按天切割的日志,切割完成后交由awstats去分析。并不是让awstats去分时正在时时增长的也就是正在被写入的日志,这样的好处是不至于遗漏数据,并且分析已经切割完成的日志,更不用担心会有冲突。坏处是我一天切割一次日志,你要等第二天才能看昨天的一些详细数据。

 

修改/etc/awstats/awstats.akii.org.conf,执行:

vi /etc/awstats/awstats.akii.org.conf

找到

LogFile="/var/log/httpd/mylog.log"

修改为:

LogFile="/home/www/logs/%YYYY-24/%MM-24/%DD-24/akii.org_access.log"

如果你的日志路径和我的不一样,请修改成对应的日志文件名。以上的完整路径是切割后保存的nginx日志文件。其中%YYYY-24/%MM-24/%DD-24表示年月日都减去24小时,也就是昨天的日志目录。修改完成后按:wq保存退出。

接下来可以测试一下awstats分析日志了(前提是你已经有了切割过的日志,没有的话可以先退行一下切割日志的脚本/root/cut_log.sh)

首先,还要创建一个awstats用于记录数据的目录

mkdir -p /var/lib/awstats

然后运行awstats的wwwroot目录中的awatsts.pl来测试一下

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=akii.org

你如果看到类似下面的提示就说明配置文件都正确了。

 

Create/Update database for config "/etc/awstats/awstats.akii.org.conf" by AWStats version 7.0 (build 1.964)

From data in log file "/home/www/logs/2010/07/24/akii.org_access.log"...

Phase 1 : First bypass old records, searching new record...

Direct access after last parsed record (after line 43260)

Jumped lines in file: 43260

 Found 43260 already parsed records.

Parsed lines in file: 0

 Found 0 dropped records,

 Found 0 comments,

 Found 0 blank records,

 Found 0 corrupted records,

 Found 0 old records,

 Found 0 new qualified records

 

统计分析完成后,结果还在 Awstats 的数据库中。在 Apache 上,可以直接打开 Perl 程序的网页查看统计。 但本文开始时已经提到,Nginx 对 Perl 支持并不好,所以我们要换个方法,利用 awstats 的工具将统计的结果生成静态文件,具体的步骤如下:

 

首先在 webroot 目录下创建一个文件夹。例:/home/www/awstats

写一个脚本,定期执行让 Awstats 把静态页面生成到该目录中

先生成存放awstats生成的静态文件的目录,我这里用的是/home/www/awstats

mkdir -p /home/www/awstats

我们来写一个脚本

vim /root/awstats.sh

然后输入以下内容

 

#!/bin/bash

mkdir -p /home/www/awstats/akii.org

/usr/local/awstats/tools/awstats_buildstaticpages.pl -update  \

-config=akii.org -lang=cn -dir=/home/www/awstats/akii.org  \

-awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl

上述命令的具体意思如下:
 
/usr/local/awstats/tools/awstats_buildstaticpages.pl Awstats 静态页面生成工具
-update -config=akii.org 更新配置项
-lang=cn 语言为中文
-dir=/home/www/awstats 统计结果输出目录
-awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl Awstats 日志更新程序路径。
然后在你的nginx的配置文件中,在你想要安置awstats或默认的ip或域名的server段中,加入关于awstats和icon的两个目录配置。
 
如一个完整案例:
server {
listen       80;
server_name  localhost;
root /home/www;
index index.html;
 
location ~ ^/awstats/ {     # awstats  静态页面目录
        root   /home/www/awstats;
        autoindex on; #可以目录浏览你的多个域名的目录用于分析
        index  index.html;
        access_log off;
}
 
location ~ ^/icon/ {             # 图标目录
        root   /usr/local/awstats/wwwroot;
        index  index.html;
        access_log off;
}
}
接下来可以测试一下脚本是否可以正确执行
 
还是别忘了给它可执行权限
chmod +x /root/awstats.sh
/root/awstats.sh
如果你看到它生成了一堆网页,那就说明成功了。
 
输出信息部分例如
 
Launch update process : "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl" -config=akii.org -update -configdir=
......
Build keywords page: "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl" -config=akii.org -staticlinks -lang=cn -output=keywords
Build errors404 page: "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl" -config=akii.org -staticlinks -lang=cn -output=errors404
20 files built.
Main HTML page is 'awstats.akii.org.html'.
然后可以把它加入自动运行了。
 
配置awstats脚本自动运行
 
1
crontab -e
加入
 
1
00 1 * * * /root/awstats.sh
然后保存退出。
 
这样就可以每天在凌晨自动分割日志,并且开始自动用awstats分析nginx的日志了。
 
认证访问
 
如果你想给你的awstats加上访问密码,可以见这里:nginx为目录或网站加上密码认证
 
原创文章,写的辛苦。如果你要转载,请保留出处及链接。
 
参考资料:http://www.ibm.com/developerworks/cn/linux/l-cn-awstats-nginx/index.html