使用Awstats+JAWStats自动分析Nginx日志

Category : 工作学习 / Tags : , , , / Date : 2011.05.24 / 569 views /

  Awstats是在SourceForge上发展很快的一个基于 Perl 的 WEB 日志分析工具,一个充分的日志分析让Awstats显示您下列资料:

  访问次数、独特访客人数
  访问时间和上次访问
  使用者认证、最近认证的访问
  每周的高峰时间(页数,点击率,每小时和一周的千字节)
  域名/国家的主机访客(页数,点击率,字节,269域名/国家检测, geoip 检测)
  主机名单,最近访问和未解析的 IP 地址名单
  大多数看过的进出页面
  档案类型
  网站压缩统计表(mod_gzip 或者 mod_deflate)
  使用的操作系统 (每个操作系统的页数,点击率 ,字节, 35 OS detected)
  使用的浏览器
  机器人访问(检测 319 个机器人)
  蠕虫攻击 (5 个蠕虫家族)
  搜索引擎,利用关键词检索找到你的地址
  HTTP 协议错误(最近查阅没有找到的页面)
  其他基于 URL 的个性报导,链接参数, 涉及综合行销领域目的
  贵网站被加入”最喜爱的书签”.次数
  屏幕大小(需要在索引页补充一些 HTML 标签)
  浏览器的支持比例: Java, Flash, RealG2 reader, Quicktime reader, WMA reader, PDF reader
  负载平衡服务器比率集群报告.

  Awstats的运行是需要PERL环境的支持,从Awstats的文档来看,它对Apache HTTP Server的支持是非常完美的,而当我们把Web服务器换成Nginx后,要运行Awstats变得很麻烦。首先Nginx本身对Perl的支持是比较弱的,另外在日志格式上有需要修改后才能运行。

  注:如果你安装Nginx时启用了Fastcgi支持,可以通过Fastcgi来执行Perl。稍后我会再写一篇如何通过Perl方式来使用Awstats。

  本文主要介绍通过让Awstats对日志统计的结果生成静态页面,然后通过Nginx输出以达到统计Nginx访问日志的效果。

  一、安装和配置Awstats

  安装前提

  1、你已经有一个可正常运行并能自动切割日志的Nginx环境。如果你还没有,可先参考我的另一篇文章:CentOS 5.6(X64)下编译安装LNMP平台(Nginx1.0+PHP5.3.6+Mysql5.5.11)
  2、必须确认你的服务器上Perl的环境已经就绪。查看当前环境Perl版本的命令是perl –version

1
2
3
4
5
perl --version
 
This is perl, v5.8.8 built for x86_64-linux-thread-multi
 
Copyright 1987-2006, Larry Wall

  下载Awstats并安装

1
2
3
wget http://prdownloads.sourceforge.net/awstats/awstats-7.0.tar.gz
tar xvf awstats-7.0.tar.gz
mv awstats-7.0 /usr/local/awstats

  修改权限

  wget下载的包中权限可能是一个不存在的UID用户,赋予权限让.pl的文件可以运行。

1
2
3
chown -R www:www /usr/local/awstats
chmod +x /usr/local/awstats/tools/*.pl
chmod +x /usr/local/awstats/wwwroot/cgi-bin/*.pl

  执行awstats_configure.pl进行配置

1
2
cd /usr/local/awstats/tools
./awstats_configure.pl

  如果没有赋予执行权限,可以这样执行:

1
2
cd /usr/local/awstats/tools
perl awstats_configure.pl

  注意:这里要在Awstats安装目录运行。否则会有一些关于标准目录的提示。Awstats缺省标准安装目录是/usr/local/awstats,如果要安装到其它目录需要对awstats_configure.pl进行修改。以后有时间我会写一个关于安装到其它目录的文档。

  将会有如下一些提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
-----> Running OS detected: Linux, BSD or Unix
 
-----> Check for web server install
 
Enter full config file path of your Web server.
Example: /etc/httpd/httpd.conf
Example: /usr/local/apache2/conf/httpd.conf
Example: c:\Program files\apache group\apache\conf\httpd.conf
Config file path ('none' to skip web server setup):
> none #这里添none并回车,因为我们没有使用apache
 
Your web server config file(s) could not be found.
You will need to setup your web server manually to declare AWStats
script as a CGI, if you want to build reports dynamically.
See AWStats setup documentation (file docs/index.html)
 
-----> Update model config file '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf'
  File awstats.model.conf updated.
 
-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y
 
-----> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
> www.mike.me #这里输入你要分析的域名,或是随便一个你易记的配置名并回车
 
-----> Define config file path
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
> #直接回车,使用默认路径/etc/awstats
 
-----> Create config file '/etc/awstats/awstats.www.mike.me.conf'
 Config file /etc/awstats/awstats.www.mike.me.conf created.
 
-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.mike.me
Or if you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue... #按回车继续
 
 
A SIMPLE config file has been created: /etc/awstats/awstats.www.mike.me.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'www.mike.me' with command:
> perl awstats.pl -update -config=www.mike.me
You can also build static report pages for 'www.mike.me' with command:
> perl awstats.pl -output=pagetype -config=www.mike.me
 
Press ENTER to finish...  #回车完成配置文件的创建

  修改Awstats配置文件

1
vi /etc/awstats/awstats.www.mike.me.conf

  找到统计的日志文件的路径

1
2
3
4
5
LogFile="/var/log/httpd/mylog.log"
 
改为
 
LogFile="/data1/logs/%YYYY/%MM/access_www_%YYYY-24%MM-24%DD-24.log"

  注:根据你的日志路径和对应的日志文件名进行修改。对应Nginx日志切割程序所生成的目录存放结构保存的nginx日志文件。要注意Awstats的年月日格式的跟Nginx的写法有所不同,其中%YYYY-24/%MM-24/%DD-24表示年月日都减去24小时,也就是昨天的日志目录。

  这里Awstats执行统计的顺序是:

  Nginx产生日志–>日志切割–>Nginx继续产生日志–>另存切割日志–>交由Awstats统计–>生成结果

  修改Nginx日志格式

  nginx的日志应该遵循以下格式,才可以被awstats识别。这里的main是指格式代称,如果有多个虚拟主机,代称不能一样。

1
2
3
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

  使用日志格式

1
access_log  /home/www/logs/access.log  main;

  小技巧:把log_format这段代码放在你nginx的http的定义段中,可以在下面的每一个server中引用此格式。不必在每个server里面都去定义格式。

  测试awstats分析日志

  创建数据目录

1
mkdir -p /var/lib/awstats

  注:在这个位置创建数据目录,是因为之前生成的Awstats配置文件中DirData缺省是指向这个位置的。可以根据实际情况调整配置文件的值。

  运行awstats的wwwroot目录中的awatsts.pl进行测试

1
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.mike.me

  出现类似下面的提示就说明配置文件都正确了。

1
2
3
4
5
6
7
8
9
10
11
12
13
Create/Update database for config "/etc/awstats/awstats.www.mike.me.conf" by AWStats version 7.0 (build 1.971)
From data in log file "/data1/logs/2011/05/access_www_20110505.log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 16924
 Found 0 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 1 corrupted records,
 Found 0 old records,
 Found 16923 new qualified records.

  上面的统计分析结果都还保存在Awstats数据库中。在Apache上,就可以直接打开Perl程序的网页查看统计。由于Nginx对Perl支持并不好,所以就利用awstats的工具将统计的结果生成静态文件,以便查看。具体的步骤如下:

  a)首先在存放web文件目录下创建一个文件夹。例:/data0/htdocs/awstats

1
mkdir -p /data0/htdocs/awstats

  b)把awstats_buildstaticpages.pl生成的Awstats的静态页面到该目录中

  创建一个用于生成Awstats的静态页面的脚本

1
2
3
4
5
6
7
8
vi /usr/local/awstats/awstats.sh
 
 
#!/bin/bash
 
/usr/local/awstats/tools/awstats_buildstaticpages.pl -update  \
-config=www.mike.me -lang=cn -dir=/data0/htdocs/awstats  \
-awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl

  上述命令的具体意思如下:

  /usr/local/awstats/tools/awstats_buildstaticpages.pl Awstats静态页面生成工具
  -update -config=www.mike.me 更新配置项
  -lang=cn 语言为中文
  -dir=/data0/htdocs/awstats 统计结果输出目录
  -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl Awstats日志更新程序路径。

  给脚本加上执行权限

1
chmod +x /usr/local/awstats/awstats.sh

  测试脚本生成Awstats的静态页面情况

1
/usr/local/awstats/awstats.sh

  如果你看到如下类似的输出信息,那就说明成功了。

1
2
3
4
5
6
Launch update process : "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl" -config=www.mike.me -update -configdir=
Build main page: "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl" -config=www.mike.me -staticlinks -lang=cn -output
......
Build errors404 page: "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl" -config=www.mike.me -staticlinks -lang=cn -output=errors404
20 files built.
Main HTML page is 'awstats.www.mike.me.html'.

  配置 Awstats 自动运行

  设置crontab,每天凌晨00:10自动用awstats分析nginx的日志

1
crontab -e

  输入以下内容:

1
10 00 * * * /bin/bash  /usr/local/awstats/awstats.sh

  配置Nginx访问Awstats页面

  在你想要安置awstats的域名下的server段中,加入关于awstats和icon的两个目录配置。

  下面是一个完整的server段配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
listen       80;
server_name  192.168.1.106;
root /data0/htdocs;
index index.html;
 
location ~ ^/awstats/ {     # awstats  静态页面目录
        root   /data0/htdocs;
        index  index.html;
        access_log off;
        charset gb2312;
}
 
location ~ ^/icon/ {             # 图标目录
        root   /usr/local/awstats/wwwroot;
        index  index.html;
        access_log off;
        charset gb2312;
}
}

  配置完成后,用浏览器访问http://youhostname/awstats/awstats.www.mike.me.html即可查看到统计的详细结果

  让日志结果看起来更美观

  JAWStats是一个免费的网站统计分析套件. 它与AWStats共同协作,通过图表、平面和表格等来展示你网站的访客信息。它拥有更加友好的数据显示方式,包括Flash charts, ajaxed 和更具条理的界面。

  安装和配置JAWStats

  要让JAWStats 正常工作, AWStats需要安装在系统上面。JAWStats的另一个好处是,它并不修改原本的AWStats设置和文件,而只是简单的读取和描述.

  下载JAWStats和语言包

1
2
wget http://static.jawstats.com/src/jawstats-0.7beta.tar.gz
wget http://www.jawstats.com/src/languagepack.zip

  进行安装

1
2
3
4
5
mkdir jawstats
tar -xvf jawstats-0.7beta.tar.gz -C jawstats
unzip  languagepack.zip -d ./languages
cp languages/* jawstats/languages/
cp -r jawstats /data0/htdocs/www/ #复制到Web目录下,请根据自已情况调整

  创建配置文件

1
cp config.dist.php config.php

  修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
  // core config parameters
  $sDefaultLanguage      = "zh-cn";
  $sConfigDefaultView    = "thismonth.all";
  $bConfigChangeSites    = true;
  $bConfigUpdateSites    = true;
  $sUpdateSiteFilename   = "xml_update.php";
 
  // individual site configuration
  $aConfig["www.mike.me"] = array(
    "statspath"   => "/var/lib/awstats/",
    "updatepath"  => "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl/",
    "siteurl"     => "http://192.168.1.106",
    "sitename"    => "This is Test Site",
    "theme"	  => "default",
    "fadespeed"   => 250,
    "password"    => "Mike",
    "includes"    => "",
    "language"    => "zh-cn"
  );
 
?>

  主要要设置的参数有以下几个:

  $sDefaultLanguage和”language” 都是设置页面显示语言的
  $aConfig["site1"] 该处site1要修改为你Awstats的配置文件名,如awstats.www.mike.me.conf,这里就应改为www.mike.me
  ”updatepath” awstats.pl 执行文件所在的路径
  ”statspath” 设置awstats的分析数据存放目录。awstats默认情况下是在/var/lib/awstats/,可以在对应的网站配置文件中修改该参数DirData来改变位置。

  文件修改

  官网下的程序有个小bug。可能是因为0.7是beta版本的原因吧。如果你访问JAWStats时,出现的是空白页的话。可按下面的方法修改解决:

  修改jawstats目录中的index.php,将258行上

1
2
3
4
5
6
7
8
9
10
11
  vi index.php
 
#修改前
<?
    // output booleans for javascript
    function BooleanToText($bValue) {
 
#修改后
<?php
    // output booleans for javascript
    function BooleanToText($bValue) {

  访问JAWStats

  我是直接将JAWStats放到WebRoot下的,配置完成后,用浏览器访问http://youhostname/jawstats即可查看到统计的详细结果。

  参考文档:

  http://www.google.com
  http://www.ibm.com/developerworks/cn/linux/l-cn-awstats-nginx/index.html
  http://www.akii.org/use-awstats-automatic-analysis-nginx-log.html

无觅相关文章插件,快速提升流量

Comments

4 Responses to “使用Awstats+JAWStats自动分析Nginx日志”

Leave a Reply

传奇 似水流年 绽放 风筝 八月照相馆