Chinaunix首页 | 论坛 | 博客
  • 博客访问: 885331
  • 博文数量: 254
  • 博客积分: 5350
  • 博客等级: 大校
  • 技术积分: 2045
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 13:27
文章分类

全部博文(254)

文章存档

2015年(1)

2014年(9)

2013年(17)

2012年(30)

2011年(150)

2010年(17)

2009年(28)

2008年(2)

分类: 系统运维

2011-08-04 16:31:15

日志分析-Awstats的安装基本配置
Jan 1st, 2008
|

转载本站文章请注明,转载自:扶凯[]

本文链接:

1. AWSTATS 简介

AWStats,全名为 Advanced Web Statistics,是一套免费功能强大并支援多国语言的工具程式,专门用来分析Web.Streaming.FTP或Mail伺服器的统计资料,并可产生统计图表,显示用户端连线至网站存取网页的纪录资讯。

它可以分析许多主要伺服器的日志档,如 Apache 的日志档 (NCSA combined/XLF/ELF log format or common/CLF log format)、WebStar、IIS (W3C log format) 以及许多其它的 Web、Proxy、Wap、Streaming 伺服器、Mail 伺服器及部份 FTP 伺服器。

AWStats 与其它统计分析软体(Analog、Webalizer、HitBox…)相较之下,可以产生更多样的纪录,并做更详细的分析。你可以到这里检视比较著名的分析工具 (AWStats、Analog、Webalizer…)的功能及差异性:功能比较表。

AWStats 是免费的 GPL (GNU General Public License) 授权软体,你可以检视 license chart 看哪些是可以或不能做的。

AWStats 是以 Perl 透过指令列的方式执行,但也可以从浏览器透过 CGI 的方式来做即时更新的动作,因为请确定系统中已安装 Perl 程式或套件,并启动 CGI 的执行权限。

2. 安装 AWSTATS

(1) 下载

首先需先下载 AWStats 软体,请到官方网站查看最新版本,或直接进入下载页面。 目前我使用的是 6.7 版,使用Windows的话可以下载zip或exe档;使用Linux的话可以下载 rpm 或 tar.gz 档。

(2) 安装

目前使用的环境是 CentOS 5(RHEL),所以直接下载 rpm 档安装即可:

可以到如下的地址下载,安装

rpm -ivh http://prdownloads.sourceforge.net/awstats/awstats-7.0-1.noarch.rpm

(3) 安装后检查

 

安装后 AWStats 的相关资料位置如下(以rpm版本安装):
.主目录:/usr/local/awstats
.网站设定档目录:/etc/awstats
.网站设定档范例:/etc/awstats/awstats.model.conf
.其它路径说明:
/usr/local/awstats/wwwroot 预设awstats网站根目录
/usr/local/awstats/tools awstats 工具
/usr/local/awstats/docs 说明文件,索引页为 index.html
/usr/local/awstats/wwwroot/cgi-bin awstats.pl 主程式所在目录
/usr/local/awstats/wwwroot/cgi-bin/lang 语系档目录
…………. (其它请参阅说明文件)

若你使用的是 Windows 系统,请先安装 Perl (安装后可能需要重新开机),再安装 AWStats 程式。

3. 使用 AWSTATS 提供的工具设定

若你是初次设定 awstats,建议可以使用它本身所提供的工具,您可以下以下的指令:

chown apache:apache wwwroot/ -R

最好改变一下这个文件夹的权限,然后我们来接着配置

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

接下来就会问您一些问题,如 Apache 主目录、设定档、网域(主机)名称……等,目的是为了帮您修改 apache 的设定资讯以及基本的 awstat.conf 档。若不执行这个步骤也是可以,就手动来编辑 awstats for apache 的设定资讯。

详细介绍见本文后半部分

4. APACHE 中的 AWSTATS 设定

使用工具产生的设定

若您使用上述的方式,在您的 httpd.conf  的配置文件会加上一些 awstats 的一些显示的路径和相关的信息。

若您不想使用工具,那么可以手动将上面的设定值加入 httpd.conf 档中,或者是直接编辑一个 awstats.conf 档放入 /etc/httpd/conf.d/ 目录下:

cp /usr/local/awstats/tools/httpd_conf /etc/httpd/conf.d/awstats.conf

内容为

Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/" Alias /awstatscss "/usr/local/awstats/wwwroot/css/" Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/" ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"     <Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None Order allow,deny Allow from all Directory>

 

验证机制

不管如何,建议 AllowOverride 设定成 AuthConfig,针对统计资料目录做验证的动作,避免网站细部日志被有心人士利用。另外必需在欲保护的网页目录下(即/usr/local /awstats/wwwroot)建立 .htaccess 档案,并设定适当权限:

# cd /usr/local/awstats/wwwroot
# vi .htaccess
内容为
AuthName “Private Web Site”
Authtype Basic
AuthUserFile /etc/httpd/conf/.htpasswd
require valid-user

设定适当权限
# chown apache:apache .htaccess
# chmod 700 .htaccess

建立密码档
# htpasswd -c /etc/httpd/conf/.htpasswd yourname

输入2次密码即可

关于Apache详细验证机制的流程与作法,请参考相关教学文章。

日志设定

另外,在 httpd.conf 中有关日志部份的设定建议设定为:

CustomLog /yourlogpath/yourlogfile common
更改为
CustomLog /yourlogpath/yourlogfile combined

虚拟站点日志设定

或者是你有架设虚拟站点,可以针对不同的站台设定不同的日志记录档,未来也可以分析各个虚拟站点的细部统计:
# 虚拟站台(Name-based)范例
NameVirtualHost 192.168.1.100

# === domain1.com.cn ===

ServerAdmin webadm@domain1.com.cn

DocumentRoot /var/www/domain1
ServerName
ErrorLog logs/domain1.com.cn-error_log
CustomLog logs/domain1.com.cn-access_log combined

# === domain2.com.cn ===

ServerAdmin webadm@domain2.com.cn
DocumentRoot /var/www/domain2
ServerName
ErrorLog logs/domain2.com.cn-error_log
CustomLog logs/domain2.com.cn-access_log combined

# === domain3.com.cn ===

ServerAdmin webadm@domain3.com.cn
DocumentRoot /var/www/domain3
ServerName
ErrorLog logs/domain3.com.cn-error_log
CustomLog logs/domain3.com.cn-access_log combined

这样可以提供更详细的日志记录,日志内容如:
xx.xxx.xx.xx – – [dd/mmm/yyyy:hh:mm:ss +0000] “GET / HTTP/1.1″ 200 1234 “” “Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)”

重新启动 Apache

更改完 apache 的设定档后,记后重新启动让设定值生效:
# /etc/init.d/httpd restart

5. 建立网站的 AWSTATS 设定档

当您使用 perl awstats_configure.pl 指令来建立起 awstats.mysite.conf 设定档后,接下来我们就要来修改设定档中部份的设定内容,因为设定资料繁多,在这里只要针对重点部份设定即可。

复制/修改设定档

# cd /etc/awstats
# cp awstats.model.conf awstats.domain1.conf
# vi awstats.domain1.conf

找到底下这几行,并且修改内容:

# 日志档位置
LogFile=”/var/log/httpd/domain1.com-access_log”

# 日志档类型:W – WEB,S – Streaming,M – Mail,F – FTP
LogType=W

# 日志格式 缺省值是1:Apache日志,2是IIS日志
LogFormat=1

# 主机名称或网域
SiteDomain=””

# 主机别名
HostAliases=” domain1.com localhost 127.0.0.1 \
REGEX[domain1\.com\.cn$] ”

# 存放 awstats 分析完成的资料库档案存放目录
# 这边修改成 “.” 表示跟 awstats.pl 相同目录,即 /usr/local/awstats/wwwroot/cgi-bin
DirData=”.”

# 执行 awstats 的目录:更改成之前在 httpd.conf 或 awstats.conf 中设定 ailas 的路径
DirCgi=”/awstats”

# 图示目录:更改成之前在 httpd.conf 或 awstats.conf 中设定 ailas 的路径
DirIcons=”/awstatsicons”

# 设定语系:预设为 GB2312,可依需求修改为 UTF8 (请参考下面更改语系档设定)
Lang=”cn”

若您希望更细部的设定,请参考安装后 awstats 所提供文件,或参考设定档内容说明。

6.Awstats的中文问题(补丁)

GB2312 码转UTF8 码

中文部份预设为GB2312码,但由于现在许多网站都使用UTF-8的编码方式,这会造成部份统计网页内容会有乱码出现,可以用以下方式来将原语系档转换成UTF-8的编码使用。

解决方法不详细写了,下一个下面的补丁,就能解决问题

中文等的补丁在:

#cd /usr/local/awstats/wwwroot/cgi-bin
#wget
#cp -r /usr/local/awstats/wwwroot/cgi-bin/lib /usr/local/awstats/wwwroot/cgi-bin/lib.bak

# tar zxvf lib.tgz

7. 测试设定档

产生统计报表档

接下来就要测试设定档是否设定正确,以便顺利产生相关档案:

# cd /usr/local/awstats/wwwroot/cgi-bin
# perl awstats.pl -config=domain1 -update
这里的 -config=domain1 指的就是 awstats.domain1.conf 的设定档
Update for config “/etc/awstats/awstats.domain1.conf”
With data in log file “/var/log/httpd/domain1.com.-access_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: 225730
Found 122 dropped records,
Found 87 corrupted records,
Found 0 old records,
Found 225521 new qualified records.

# ls -l
awstats012007.domain1.txt  (这就是awstats建立的domain1 2007年01月的统计资料档)
awredir.pl
awstats.pl

如果有看到以上的资料,表示您的awstats设定档正确,而且awstats可以正确分析您apache所产生的log 档。

AWStats的运行模式是这样的:

  1. 分析日志:运行后将这样的日志统计结果归档到一个AWStats的数据库(纯文本)里;
  2. 然后是输出:分两种形式
    • 一种是通过cgi程序读取统计结果数据库输出;
    • 一种是运行后台脚本将输出导出成静态文件;

动态:

添加定时分析指令

crontab -e
* */1 * * * (cd /var/www/awstats/cgi-bin/; ./awstats.pl -update -config=)

例:静态生成

若要建立个别站点的统计资料,并且汇出个别的网页(html)档,可以编辑一个script档:

# vi /usr/local/awstats/wwwroot/cgi-bin/upawstats.sh
内容为
#!/bin/bash
cd /usr/local/awstats/wwwroot/cgi-bin
perl awstats.pl -config=domain1 -output > domain1.html
perl awstats.pl -config=domain2 -output > domain2.html
perl awstats.pl -config=domain3 -output > domain3.html

如果还有其它的网站,可依此类推;另外您也可以参考awstats原厂文件的做法。
记得顺便将权限修改为700:

# chmod 700 /usr/local/awstats/wwwroot/cgi-bin/upawstats.sh

权限设定完之后,先将这个script执行一次,若无任何问题,接下来就是将它放入排程工作即可。

检视统计图表

刚才上面执行过的script所产生的档案,我们就可以透过浏览器看查看统计资料了,您可以连到伺服器上的相关网址查看,例如“http://你的IP/awstats/domain1.html”:

统计资料很多,也可以选择指定的月份报表,这部份就不多做介绍了。

8. 设定排程

设定排程让 awstats 定时分析 log 即可:

# crontab -e 或 vi /etc/crontab
内容为
0 3,15 * * * /usr/local/awstats/wwwroot/cgi-bin/upawstats.sh

上面安排在凌晨3点及下午3点执行更新,如果不会设定排程,请参考排程相关教学文章。

9. 结语

有了这样的日志记录分析统计软体,看网站日志真的方便多了,但是日志还是要保留一段时间,毕竟若有恶意攻击事件,还是得分析LOG档内容才行。


给awstats加上了Geo::IPfree插件
用途:用于awsats中关于来访者国家或地区的统计
配置Geo-IP
需要:
Geo-IP C-API (

)
Geo-IP Perl-API (

)
Geo::IPfree (

)
安装:
Geo-IP C-API:
./configure
make
make install
Geo-IP Perl-API:
perl MakeFile.PL
make
make install
Geo::IPfree
perl MakeFile.PL
make
make install
最后,在/etc/awstats/awstats.yourdomain.conf中开启Geo::IPfree插件。
去掉 LoadPlugin="geoipfree" 前面的注释.
更新一下统计
/usr/local/awstats/tools/awstats_updateall.pl now


多网站多日志文件的合并分析和处理
用处:
1.用lvs之后,放了多台前端用的Web Server,每台Server有各自的日志.我们分开使用分析软件分析和检查是非常困难的,所以我们使用合并的方法.
2.多个域名,日志分开,使用awstats之类的分析软件进行分析很麻烦,所以需要合并
3.使用google的软件来做sitemap之类的应用,检查也会非常麻烦,所以需要合并
4.象多个节点的CDN日志,要进行流量统计和分析需要合并
5.因为日志文件过大,一个服务器生成多个日志文件.象access_log.1、access_log.2、access_log.3…以此类推,所以要合并.
等等…..
问题
对合并,进行日志排序最麻烦的一个问题就是,容易在跨天过程中生成的非正常数据.用一个前辈的话,这些不正常的日志,对awstats之类,就象吃了虫子一样,还有可能冲掉你以前的所有数据。
解决方法1(多谢东东):
在分析日志前,使用
sort -m -t " " -k 4 -o log_all log1 log2 log3
注释:
-m: 使用 merge优化算法
解决方法2:
使用 awstats 内建的工具logresolvemerge.pl 来合并日志 ,方法非常容易,主要是更改网站的设定档就好了,编辑 /etc/awstats/awstats.php-oa.conf
找到 LogFile 的地方,原来预设单个 log 的设定如下:
LogFile="/var/log/httpd/access_log"(原设置)
修改成
LogFile="/usr/local/awstats/tools/logresolvemerge.pl /var/log/httpd/access_log* |"   (合并分析新的设置)
如上,其实只要 logresolvemerge.pl 的路径还有日志的路径及使用匹配来设置即可,记的后面加一个"|"。注意上面我是要合并 access_log.1、access_log.2、access_log.3 的日志,要是你的日志名为别的,记的使用匹配符来匹配你要一起合并分析的日志.
另外.默认logresolvemerge.pl 是放在 awstats 安装路径的 tools 里面,比如我们的 awstats 是装在/usr/local/awstats 里面,所以完整路径就是 /usr/local/awstats/tools/logresolvemerge.pl 。
编辑保存后,再来执行更新记录的程序即可,如:
#/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=xxx -update
再来进去您的网址就可以看到合并后输出的结果了,如:

其它及美化
1.用Firefox浏览分析结果时,字体会显得很难看(因为Firefox和IE识别11px字体不一样),所以用Firefox浏览器的情况,可以通过修改
awstats.pl输出css的相关字体尺寸进行修改,而达到用Firefox浏览时也和IE一样能够正确显示出适当尺寸的字体。方法就是直接编
辑"/usr/local/awstats/wwwroot/cgi-bin/awstats.pl",将文件中所有“11px”的地方都替换为 “12px。
2.如何修改报表里的文字,如参观者...等等这些信息,其实修改语言报就可以

#vi /usr/local/awstats/wwwroot/cgi-bin/lang/awstats-cn.txt 修改里面的文字就可以.
分析服务器上分析日志,并且静态化处理成为html显面显示数据.
[root@count sbin] cd /usrl/local/sbin
[root@count sbin]# vi build.sh
复制内容到剪贴板代码:#!/bin/sh
#build statics pages
/usr/local/awstats/tools/awstats_buildstaticpages.pl -update -config= -lang=cn -
dir=/usr/local/www/apache22/data/awstats -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl
会将生成的静态页面保存在/usr/local/www/apache22/data/awstats目录下,将awstats..htm映射成index.html既可访问

阅读(2952) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~