用webalizer分析web日志

发表于:2007-06-08来源:作者:点击数: 标签:
Byideal 介绍: webalizer是一个高效的、免费的web 服务器 日志分析程序。其分析结果以HTML文件格式保存,从而可以很方便的通过web服务器进行浏览。Internet上的很多站点都使用webalizer进行web服务器日志分析。Webalizer具有以下一些特性: 1.为是用C写的程

By ideal


介绍:

  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. 支持多种平台,比如UNIXlinux、NT, OS/2 和 MacOS等。

安装:

1.从webalizer的官方站点http://www.mrunix.net/webalizer/下载webalizer,当前的最新版本是webalizer-2.01-06-src.tgz。

2.首先解开源代码包:

tar xvzf webalizer-2.01-06-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.test.com,统计站点域名为www.test.com, 访问日志为/var/log/httpd/aclearcase/" target="_blank" >ccess_log, 我们将webalizer分析结果输出到/var/www/html/log下面。则我们可以建立以下脚本/etc/rc.d/webalizer:

#!/bin/sh
run=/usr/sbin/webalizer
$run -F clf -p -n ' ' -t 'www.test.com' 
-o /var/www/html/log /var/log/httpd/access_log

说明:

-F clf 指明我们的web日志格式为标准的一般日志文件格式(Common Logfile Format)

-p 指定使用递增模式,这就是说每作一次分析后,webalizer会生产一个历史文件,这样下一次分析时就可以不分析已经处理过的部分。这样我们就可以在短时间内转换我们的日志文件,而不用担心访问量太大时日志文件无限增大了。

-n “ “ 指定服务器主机名为空,这样输出结果会美观一些。

-o “www.test.com” 指定输出结果标题。

/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.test.com/log/就可以看到webalizer的分析结果了。

注意:如果您使用了中文语言文件,但是您的linux不支持中文,则在产生的图片中文字可能为乱码。

 unix菜鸟 回复于:2003-01-19 11:04:33
收藏,谢谢!

 sandaitanke 回复于:2003-02-09 14:51:55
>>注意:如果您使用了中文语言文件,但是您的linux不支持中文,则在产生的图片中文字可能为乱码。

我看了webalizer 2.01-10 的源码,不能输出中文好像是使用gd的函数的问题,比如 注意:如果您使用了中文语言文件,但是您的linux不支持中文,则在产生的图片中文字可能为乱码。pie_chart中
gdImagestring()吧。中文用这个函数可能不行。
我在redhat 7.2 上是不行的。
没有条件试验,没有支持中文的linux. 8-(

 HonestQiao 回复于:2003-02-10 04:41:54
我们使用的FreeBSD系统,该如何输出中文呢?
    我在php之中可以制定一个ttf字体文件来输出中文图像的.
    那么在这里怎么操作呢???

 sandaitanke 回复于:2003-02-10 10:06:13
我没有试验过,以下文字是我看webalizer2.01-10 GD 1.8.4  php 4.1.2
 SourceCode 得出的结论,如果不正确,请指正。
首先要编译你的gd 支持TTF  gdtestttf 可以测试。
然后应该是把webalizer中 pie_chart 等输出图形的函数 中的
gdImageString 用 gdImageStringTTF 替换。
用这个函数:gdImageStringTTF()
php的source中 imagettftext   的实现中有gdImageStringTTF用法。
\ext\gd\gd.c 中

 阿骁 回复于:2003-02-13 22:26:21
我装好了,大家可以看看 webalizer 的效果,不错的!

http://music.xmgd.com/webalizer/index.html

 lazylee 回复于:2003-02-14 08:54:49
俺想知道您这个 music.xmgd.com 的首页在哪里,歌看起来不错的样子

 阿骁 回复于:2003-02-14 09:26:37
[quote:8b2cd220e3="lazylee"]俺想知道您这个 music.xmgd.com 的首页在哪里,歌看起来不错的样子[/quote:8b2cd220e3]

http://www.xmgd.com/music/index.jsp

 南非蜘蛛 回复于:2003-02-14 10:54:18
有没有黑人说唱的呀

 阿骁 回复于:2003-02-14 11:09:02
呵呵 。。。  暂时只有中文的歌曲。

 ihweb 回复于:2003-02-14 11:16:48
[quote:0e37c4ba0b="阿骁"]我装好了,大家可以看看 webalizer 的效果,不错的!

http://music.xmgd.com/webalizer/index.html[/quote:0e37c4ba0b]

没做DNS查询......

还有,里面都放了些什么歌啊?

我的一个装慢MP3的HD坏了,心疼啊!!里面有很多我喜欢的歌曲啊。

 阿骁 回复于:2003-02-14 11:35:36
[quote:d6eac44c57="ihweb"]

没做DNS查询......

还有,里面都放了些什么歌啊?

我的一个装慢MP3的HD坏了,心疼啊!!里面有很多我喜欢的歌曲啊。[/quote:d6eac44c57]

做 DNS 查询? 是指反向查询吗? 做了反向查询速度应该会变慢吧?

 lazylee 回复于:2003-02-14 11:37:55
而且DNS反向查询一般出不来什么有意义的东西

 tyyx 回复于:2003-02-16 16:17:27
[quote:e48acfcd80="sandaitanke"]我没有试验过,以下文字是我看webalizer2.01-10 GD 1.8.4  php 4.1.2
 SourceCode 得出的结论,如果不正确,请指正。
首先要编译你的gd 支持TTF  gdtestttf 可以测试。
然后应该是把webalizer中 pie_chart 等输出..........[/quote:e48acfcd80]
我将graphs.c的最后几行修改了一下:
/*****************************************************************/
/*                                                               */
/* INIT_GRAPH  - initalize graph and draw borders                */
/*                                                               */
/*****************************************************************/

void init_graph(char *title, int xsize, int ysize)
{
   int i;

   im = gdImageCreate(xsize,ysize);

   /* allocate color maps, background color first (grey) */
   grey    = gdImageColorAllocate(im, 192, 192, 192);
   dkgrey  = gdImageColorAllocate(im, 128, 128, 128);
   black   = gdImageColorAllocate(im, 0, 0, 0);
   white   = gdImageColorAllocate(im, 255, 255, 255);
   green   = gdImageColorAllocate(im, 0, 128, 92);
   orange  = gdImageColorAllocate(im, 255, 128, 0);
   blue    = gdImageColorAllocate(im, 0, 0, 255);
   red     = gdImageColorAllocate(im, 255, 0, 0);
   cyan    = gdImageColorAllocate(im, 0, 192, 255);
   yellow  = gdImageColorAllocate(im, 255, 255, 0);
   char *myfont = " /usr/X11R6/lib/X11/fonts/Type1/simsun.ttf"; 
   /* make borders */

   for (i=0; i<5 ;i++)          /* do shadow effect */
   {
      gdImageLine(im, i, i, xsize-i, i, white);
      gdImageLine(im, i, i, i, ysize-i, white);
      gdImageLine(im, i, ysize-i-1, xsize-i-1, ysize-i-1, dkgrey);
      gdImageLine(im, xsize-i-1, i, xsize-i-1, ysize-i-1, dkgrey);
   }

   gdImageRectangle(im, 20, 25, xsize-21, ysize-21, black);
   gdImageRectangle(im, 19, 24, xsize-22, ysize-22, white);
   gdImageRectangle(im, 0, 0, xsize-1, ysize-1, black);

   /* display the graph title */
   gdImageStringFT(im,0,blue,myfont,12,0.0,20,20,"锘縲ww.sdcczz.net璁块棶璁板綍");
  /* gdImageString(im, gdFontMediumBold, 20, 8, "title", blue);  */
可以输出中文的图片.
readhat 8.0 gd2.0.11
就看那位大写一段程序,将*title这个字符串变成UTF-8的编码.......

 tyyx 回复于:2003-02-16 16:39:36
将语言文件改成UTF-8编码的,能显示文字,网页就一塌胡涂了。






 tyyx 回复于:2003-02-16 16:45:37
改graphs.c应该是一个比较好的方法,在生成图片前将字符串变成UTF-8的编码






 crazypalm 回复于:2003-03-20 09:41:47
png library找不到,应该到哪里找得到,要装哪些东西?

 hss202 回复于:2003-04-29 17:56:56
有/etc/webalizer.conf这个配置文件吗?我装好之后找不到,还是在哪里呢
请高手指点!!!

 郝君 回复于:2003-08-19 02:29:05


 beija 回复于:2004-12-12 14:56:08
在Solaris下安装配置哪位大虾能给指点一下,希望能给出具体的安装配置过程,这个我在网上搜,基本上搜不到,先谢谢了

 OldRabbit2000 回复于:2005-04-23 15:47:04
请问我按照楼主说的,最后一步提示:
[root@www rc.d]# ./webalizer 
/usr/sbin/webalizer: error while loading shared libraries: libgd.so.2: cannot open shared object file: No such file or directory

GD已经安装了啊。

是怎么回事?

 权老实 回复于:2005-04-23 22:16:15
[root@wqlinux log]# /usr/bin/webalizer
Error: Unable to restore run data (1)

什么意思呢?/

原文转自:http://www.ltesting.net