Webalizer 使用浅谈

Webalizer 使用浅谈

在偶然的机会在工作中接触到了日志分析。刚开始是当一个活去做了,接着就接触到了日志分析工具,如LogAnalyzer,AWStats,webalizer等工具。最后对比分析后选中了webalizer这个在GPLV2许可下发布的开源项目,下面开始介绍webalizer这个apache access 日志分析工具。

webalizer 简介

官方网站http://www.webalizer.org/

webalizer是一个高效的、免费的、开源的web服务器日志分析工具。 它产生非常详细的,易于配置使用HTML格式的报告,通过标准的Web浏览器查看。

webalizer 特性

以下webalizer的特性来自官方描述,我在这里翻译整理。

总结如下:C语言编写,可跨平台,高效,支持CLF格式的日志,生成html的报告,多语言支持,对日志大小没有限制,支持GeoIP。

  • C语言编写的,是非常快速和高度便携。 在我的1.6GHz的笔记本电脑,它可以每秒处理近70,000条记录,这意味着大约2万的点击率,可以分析在大约30秒的日志文件。
    (在服务器[L5640,4核,4G内存 云主机]上 分析1222081条记录需要13秒时间,分析使用默认参数,即webalizer access_log)
  • 处理标准的通用日志文件格式(CLF,common log format)服务器日志,NCSA 组合日志文件格式, wu-ftpd/proftpd (FTP)格式记录的几个变化, squid代理服务器的原生格式, W3C扩展的日志格式。 此外,gzip的(gz的)和bzip2(。bz2的)压缩日志可被直接使用,而无需进行解压缩。
  • 生成的报告可以通过命令行进行配置,或更常见的是,通过使用一个或多个配置文件 。 配置选项的详细信息,可以发现在README文件,提供与所有分布。
  • 支持多国语言。 目前,阿尔巴尼亚语,阿拉伯语,加泰罗尼亚语,中文(简体和繁体),克罗地亚语,捷克语,丹麦语,荷兰语,英语,爱沙尼亚语,芬兰语,法语,加利西亚语,德语,希腊语,匈牙利语,冰岛语,印度尼西亚语,意大利语,日语,韩语,拉脱维亚语,立陶宛语,马来语,挪威语,波兰语,葡萄牙语(葡萄牙和巴西),罗马尼亚语,俄语,塞尔维亚语,斯洛伐克语,斯洛文尼亚语,西班牙语,瑞典语,泰国,土耳其和乌克兰。
  • 无日志文件大小限制,支持日志的部分内容的分析,支持日志滚动,无需在服务器上保存庞大的日志文件。
  • 完全支持IPv4和IPv6地址。 包括内置的分布式DNS查找功能和本地地理位置服务(Geolocation services)。
  • 分布式GNU通用公共许可证下,提供完整的源代码,以及一些比较流行的平台的二进制分发。

webalizer 安装

首先下载源码,并解压

wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-05-src.tgz
tar xzf webalizer-2.23-05-src.tgz
cd webalizer-2.23-05-src
./configure --prefix=/home/user/webalizer
make
make install

#如果你的系统还没安装libgd、libpng等库,执行下面的几个命令,可能需要root权限。
yum -y install gd gd-devel
yum -y install zlib zlib-devel

 

webalizer 简单使用

分析一个apache的access日志,并查看index.html,大致内容看这里:sample

webalizer access_log

webalizer 参数说明

Usage: webalizer [options] [log file]
-h = print this help message //打印帮助
-V = print version information //打印版本信息
-v = be verbose //显示分析过程信息
-d = print additional debug info //显示调试信息
-F type = Log type. type= (clf | ftp | squid | w3c) //指定日志格式
-f = Fold sequence errors //
-i = ignore history file  //无视历史记录文件,可以通过该选项独立分析一个日志文件
-p = preserve state (incremental) //增量分析
-b = ignore state (incremental) //忽略增量分析
-q = supress informational messages//不打印额外信息,
-Q = supress _ALL_ messages  //屏蔽所有信息
-Y = supress country graph //不显示来访国家信息
-G = supress hourly graph //不显示时间段统计信息
-H = supress hourly stats //同上
-L = supress color coded graph legends
-l num = use num background lines on graph //
-m num = Visit timout value (seconds) //指定超时时间
-T = print timing information //显示时间信息
-c file = use configuration file ‘file’ //使用配置文件,指定路径
-n name = hostname to use //指定域名,即分析结果中url的前缀。如http://www.kimnote.com
-o dir = output directory to use //指定输出目录,分析结果将会保存到这个目录
-t name = report title ‘name’ //报告文件的标题
-a name = hide user agent ‘name’ //隐藏user-agent信息
-r name = hide referrer ‘name’ //隐藏referrer信息
-s name = hide site ‘name’ //隐藏指定网站信息
-u name = hide URL ‘name’ //隐藏指定url
-x name = Use filename extension ‘name’ //
-O name = Omit page ‘name’ //指定要忽略的页面
-P name = Page type extension ‘name’ //指定页面的扩展名,如.do .action .html .php等。
-I name = Index alias ‘name’
-K num = num months in summary table //索引页最大显示的月数
-k num = num months in summary graph //索引页图表中最大显示的月数
-A num = Display num top agents  //显示num个user-agent 信息
-C num = Display num top countries // 显示 num个国家信息
-R num = Display num top referrers //显示num个referrer信息
-S num = Display num top sites //同上
-U num = Display num top URLs //同上
-e num = Display num top Entry Pages //同上
-E num = Display num top Exit Pages //同上
-g num = Group Domains to ‘num’ levels //
-X = Hide individual sites //
-z dir = Use country flags in ‘dir’

webalizer 结果分析

webalizer 功能扩展

比较遗憾的是webalizer没有对指定的ip、ip段的分析,也不能支持对某个时间段的分析。

上述功能是很常用的功能,比如,服务器在某个时间段内受到了攻击,想找出攻击者ip。

之所以webalizer分析速度惊人,如果日志是按天滚动的access日志,则基本在几秒内就能找出攻击者IP。

源码下载:webalizer

也可以通过github下载:https://github.com/jongsuny/webalizer/tree/time-span

通过ip过滤日志

我在webalizer-2.23-05版本的基础上增加了IP过滤机制。

目前仅支持IPv4格式,IP地址的安全匹配、前缀匹配。

加入你想看到 ip地址为 123.123.123.123 的访问情况,在webalizer的基础上 加一个参数 –ip 123.123.123.123

如果想看 10.10. 开头的ip,加参数 –ip 10.10. 就可以。

webalizer --ip 123.123.123.123 access_log
webalizer --ip 10.10. access_log

 

通过时间过滤日志

增加两个参数 –start、–end,格式为 00:00:00、23:59:59。

webalizer --start 01:00:00 --end 09:00:00 access_log

如项查看 凌晨1点到上网9点的日志,使用如下。

webalizer --start 01:00:00 --end 09:00:00 access_log

webalizer 缺点分析

在我使用中发现如下的不足:

  • 日志内容的过滤功能缺失
  • 不能按每秒、每分钟访问量的统计
  • 如果一个服务有多个服务器,则分析起来比较费劲,特别是分析攻击行为时
  • 不能同时分析多个文件(第三点)
  • 不能多线程(不是很重要)
  • 界面太难看

针对上述不足,以后我要让webalizer支持上述功能,要么我自己写一个。

 

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>