用webalizer分析web日志
2010-08-22 11:23:17 阿炯

介绍:
webalizer是一个高效的、免费的web服务器日志分析程序。其分析结果以HTML文件格式保存,从而可以很方便的通过web服务器进行浏览。Internet上的很多站点都使用webalizer进行web服务器日志分析。Webalizer具有以下一些特性:
1. 为是用C写的程序,所以其具有很高的运行效率。在主频为200Mhz的机器上,webalizer每秒钟可以分析10000条记录,所以分析一个40M大小的日志文件只需要15秒。
2. webalizer支持标准的一般日志文件格式(Common Logfile Format);除此之外,也支持几种组合日志格式(Combined Logfile Format)的变种,从而可以统计客户情况以及客户操作系统类型。并且现在webalizer已经可以支持wu-ftpd xferlog日志格式以及squid日志文件格式了。
3. 支持命令行配置以及配置文件。
4. 可以支持多种语言,也可以自己进行本地化工作。
5. 支持多种平台,比如UNIX、linux、NT, OS/2 和 MacOS等。

安装:
1.从webalizer的官方站点http://www.webalizer.org/下载webalizer,当前的最新版本是webalizer-2.21-02-src.tgz。
2.首先解开源代码包:
tar -xvzf webalizer-2.21-02-src.tgz
3.在生成的目录中有个lang目录,该目录中保存了各种语言文件,但是只有繁体中文版本,可以自己转换成简体,或者自己重新翻译一下。
4.然后进入生成的目录:
./configure
make --with-language=chinese
5.编译成功后,会产生一个webalizer可执行文件,可以将其拷贝到/usr/sbin/目录下:
cp webalizer /usr/sbin/
然后就可以开始配置webalizer了。
配置:
上面说过,可以通过命令行配置webalizer,也可以通过配置文件进行配置,在本文中我们将介绍使用命令行参数进行配置,需要了解配置文件使用方法的朋友可以参考README文件,里面有很详细的介绍。
可以执行webalizer –h得到所有命令行参数:
Usage: webalizer [options] [log file]
-h = 打印帮助信息
-v -V = 打印版本信息
-d = 打印附加调试信息
-F type = 日志格式类型. type= (clf | ftp | squid)
-i = 忽略历史文件
-p = 保留状态 (递增模式)
-q = 忽略消息信息
-Q = 忽略所有信息
-Y = 忽略国家图形
-G = 忽略小时统计图形
-H = 忽略小时统计信息
-L = 忽略彩色图例
-l num = 在图形中使用数字背景线
-m num = 访问超时 (seconds)
-T = 打印时间信息
-c file = 指定配置文件
-n name = 使用的主机名
-o dir = 结果输出目录
-t name = 指定报告题目上的主机名
-a name = 隐藏用户代理名称
-r name = 隐藏访问链接
-s name = 隐藏客户
-u name = 隐藏URL
-x name = 使用文件扩展名
-P name = 页面类型扩展名
-I name = index别名
-A num = 显示前几名客户类型
-C num = 显示前几名国家
-R num = 显示前几名链接
-S num = 显示前几名客户
-U num = 显示前几名URLs
-e num = 显示前几名访问页面
-E num = 显示前几名不存在的页面
-X = 隐藏个别用户
-D name = 使用dns缓存文件
-N num = DNS 进程数 (0=禁用dns)
假设,web服务器主机名为www.freeoa.net,统计站点域名为www.freeoa.net, 访问日志为/var/log/httpd/access_log, 我们将webalizer分析结果输出到/var/www/html/log下面。则我们可以建立以下脚本/etc/rc.d/webalizer:
#!/bin/sh
run=/usr/sbin/webalizer
$run -F clf -p -n ' ' -t 'www.freeoa.net'
-o /var/www/html/log /var/log/httpd/access_log
说明:
-F clf 指明我们的web日志格式为标准的一般日志文件格式(Common Logfile Format)
-p 指定使用递增模式,这就是说每作一次分析后,webalizer会生产一个历史文件,这样下一次分析时就可以不分析已经处理过的部分。这样我们就可以在短时间内转换我们的日志文件,而不用担心访问量太大时日志文件无限增大了。
-n “ “ 指定服务器主机名为空,这样输出结果会美观一些。
-o “www.freeoa.net” 指定输出结果标题。
/var/log/httpd/access_log:指定日志文件
然后在/etc/crontab中加入:
01 1 * * * root /etc/rc.d/webalizer
即每天凌晨1点执行该脚本。
然后运行/etc/rc.d/init.d/crond reload重载入crond服务。
测试:
执行以下命令:
# /etc/rc.d/webalizer
然后在浏览器中访问http://www.freeoa.net/log/就可以看到webalizer的分析结果了。
注意:如果您使用了中文语言文件,但是您的linux不支持中文,则在产生的图片中文字可能为乱码。
Webalizer 的配置不是很困难,但是对于新手来说,安装起来却十分的麻烦,本文将详细叙述安装过程,帮你一步一步走向成功!
Webalizer 吹牛在一台 200 Mhz 的普通 Pentium 机器上处理一万条记录只需要一秒钟,但是在我的赛扬机器上可没有那么快。大概是我做了 IP 地址的反向解析的缘故。但是,不论速度如何,我认为 Webalizer 尽管不能和某些商业软件的界面媲美,但是和其他的开源软件比起来,其统计能力要强得多。

一、安装
Webalizer 需要用到相关的 jpeg, png 和 zlib库,这些库一般不缺省安装,因此初学者会感到难于下手。由于这些库具有相关性,因此下面的安装步骤不能颠倒:
1、jpeg 库的安装
从 http://www.ijg.org/ 下载 jpeg 库,解开压缩文件后,进入到这个目录:
./configure
make
make install
cd ..

2、zlib 库的安装
从 http://www.info-zip.org/pub/infozip/zlib/ 下载 zlib 库后,
gunzip zlib*.tar.gz
tar -xvpf zlib-1.1.3.tar
mv zlib-1.1.3 zlib
cd zlib
./configure
make
make test
make install
cd ..

3、libpng 库的安装
从 http://www.libpng.org/ 下载 libpng 后:
gunzip libpng*.tar.gz
tar -xvpf libpng-1.0.10.tar
mv libpng-1.0.10 libpng
cd libpng
cp scripts/makefile.linux makefile
make
make test
make install
cd ..

你还可以从 http://www.freetype.org/download.html 选择下载 freetype 字库,但是这个步骤不是必须的。
cd freetype*
make setup
make
make install
cd ..

下面我们就可以开始安装 gd 库了:
从 http://www.boutell.com/gd/ g下载 d-1.8.4.tar.gz :

cd gd-1.8.4
#如果需要使用 Xpm 或者 TrueType 支持,在 make 之前修改 Makefile。
make
#很多人会经历找不到 gd.h 的问题,建议你在硬盘上搜索老的 gd.h 版本,然后
make install

接下来,我们就可以开始安装 Webalizer 了
cd webalizer-2.01-06
./configure
make
make install

如果不是通过源码编译的方法来安装 Webalizer 的话,你需要备份 /etc/webalizer.conf。如果需要使用 DNS 反向解析功能的话,我们还需要安装 Berkeley DB。具体的安装可以参考文档:DNS.README。

二、配置:
一个普通的配置文件为:
HideReferrer www.freeoa.net
Incremental yes
PageType htm*
PageType cgi
PageType php
PageType pl
IgnoreHist no
CountryGraph yes
IndexAlias index.cgi
IndexAlias index.php
HideReferrer Direct Request
HideURL *.gif
HideURL *.GIF
HideURL *.jpg
HideURL *.JPG
HideURL *.png
HideURL *.PNG
GroupURL /cgi-bin/* CGI Scripts
GroupURL /images/* Images
GroupReferrer yahoo.com/ Yahoo!
GroupReferrer excite.com/ Excite
GroupReferrer infoseek.com/ InfoSeek
GroupReferrer webcrawler.com/ WebCrawler
GroupReferrer google.com/ Google
GroupReferrer lycos.com/ Lycos
GroupReferrer metacrawler.com/ Metacrawler
GroupAgent MSIE Internet Exploder
GroupAgent Mozilla Netscape
GroupShading yes
MangleAgents 3

然后我们运行
/usr/local/bin/webalizer -Q -c /root/webalizer.conf -n www.freeoa.net -o /home/freelamp/public_html/log/ /home/freelamp/logs/freelamp.log

把这句话写入 crontab ,我们就能从
http://www.freeoa.net/log/ 看到日志统计结果了。

三、测试
执行以下命令:
# /etc/rc.d/Webalizer
然后在浏览器中访问http://www.freeoa.net/log/就可以看到Webalizer的分析结果了。
注意:如果您使用了中文语言文件,但是您的linux不支持中文,则在产生的图片中文字可能为乱码。