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
路过,支持,
[回复]
支持大M,,写得详细。。顶
[回复]
晕死,头像这么难看
[回复]
支持大M,写得很详细
[回复]