前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Awstats性能问题及其他工具的对比分析

Awstats性能问题及其他工具的对比分析

作者头像
大江小浪
发布2018-07-24 14:00:32
7420
发布2018-07-24 14:00:32
举报
文章被收录于专栏:小狼的世界小狼的世界

在之前的一篇文章中,我通过资料的查阅分析了一些比较流行的日志分析工具,最后选用了 Awstats + Jawstats 的组合,既能够对现有的日志进行分析,也能够提供比较美观的报表界面。但是,随着使用的深入发现,awstats 的分析速度实在是无法接受。大概的介绍一下我的环境,我们有几个产品群,有着不同的流量。每天都要进行分析。最大的产品群产生的日志记录,在合并后会超过几个G,这时候用 awstats 进行分析就非常的痛苦。甚至出现过分析过程中产生的临时目录将磁盘占满的情况。

查阅了一些资料后了解,原来awstats官方推荐当访问超过 4,000,000/月的时候,可以使用 analog 或者 webalizer 这两个应用。因此,本篇中记录了对Awstats进行的一些优化以及其他两个软件的试用。

1、Awstats 的性能优化

网上搜索的话,关于 Awstats 优化的文章很多,基本上就是 关闭 DNS 解析,增大 $LimitFlush 的数量,尽可能的利用内存,以及升级 Perl 版本之类的。经过我的实验,发现如果是机器性能本身不是很高的话,特别是内存有限时,想要优化 awstats 的速度是非常困难的。类似于巧妇难为无米之炊,Out of memory 的事情是经常发生的。

Awstats还有一个不太方便的地方,就是对于旧日志不能够进行追加的分析。Awstats每次分析完成后,将当前分析的日期和位置记录在他的数据文件中,进行新的分析之前,会和这个数值进行比较,如果比这个日期早的,会认为是旧日志而PASS过去。经常,为了追加之前某一天的日志,我们需要删除整个月的数据,进行重新的分析。或者我们可以通过手工修改数据文件中的日期和位置,来达到这个目的。不管怎样,都不是一个非常人性化的解决方案。

2、Analog 的试用

Analog是一款小巧的日志分析工具,它具有快速、高可配置性、可扩展、支持32种语言、支持任何平台、免费软件。

Analog的安装比较简单,以至于在官方都没有找到专门的安装介绍。我在CentOS的机器上,只需要进行一次 make 软件就可以使用了。但是,在这之前少不了一些配置。按照文档,我们可以将 make 后的analog 放在我们的web目录下,这样,生成的分析报告,便于通过web进行访问。

拷贝完成后,对目录下的 analog.cfg 进行编辑,以适应我们本地的环境。默认情况下,Analog会自动探测日志的格式,默认自动搜索的日志格式包括the common log format, the NCSA combined format, referrer log and browser log, the W3 extended log format, the Microsoft IIS format, the Netscape format, the WebSTAR format, the WebSite format and the MacHTTP format.,但是如果做了修改或者用了和上述格式不一致的日志,有可能无法探测出来,从而发生下面的错误:

[root@localhost analog]# ./analog

./analog: analog version 6.0/Unix

./analog: Warning F: Can't auto-detect format of logfile

默认的 analog.cfg 配置项非常简单,实际上我们可以有丰富的选项可以配置,比如日志格式、语言类型,analog也支持gz格式的日志和通配符匹配日志。所有这些问题,通过阅读 analog 自带的文档可以得到很好的解决。(文档位于 analog/docs 下,其中默认的 index.html 写成了 indx.html )。

在Analog的配置文件中,通过LOGFILE来指定需要分析的日志,支持多个日志,也支持通配符,还可以在命令行中加入日志文件的位置,非常方便。甚至可以在日志名中支持日期的匹配,这点我觉得挺贴心的。LOGFILE access_log%Y%M.log。对于格式不同的日志,我们既可以单独为某个日志指定格式,也可以统一指定格式。如果我们需要分析 Apache 的日志,通过 APACHELOGFORMT 甚至可以方便将 httpd.conf 定义的日志格式拷贝过来使用。

例如httpd.conf中定义的格式为

代码语言:javascript
复制
LogFormat "%h %l %u %t %v \"%r\" %>s %b" myformat
CustomLog /var/log/apache/access.log myformat
代码语言:javascript
复制
配置中就可以这样指定
代码语言:javascript
复制
APACHELOGFORMAT (%h %l %u %t %v \"%r\" %>s %b)
LOGFILE /var/log/apache/access.log

经过试用,一个单独的800M的日志文件,使用Analog进行分析,几乎就是瞬间完成了统计,总计9.6G的gz日志文件,Analog用了十分钟就能够全部分析完成,速度和awstats真的是不可同日而语。但是如何更方便的处理多日志、多主机的问题,生成便于管理的列表,还需要继续深入研究一下。

3、Webalizer的试用

Webalizer是一款快速的,免费的日志分析软件。能够提供详细的HTML格式的分析报告。他的特点包括:

使用C语言编写,执行速度快,并且是Portable的。在1.6G的笔记本上,每秒钟可以处理70,000条记录。

支持CLF Common Log File 日志格式,NCSA Combined 日志格式,ftp, squid等日志格式,以及gz,bz2日志格式

支持通过配置文件或者命令行进行报告的配置。

支持多种语言,包括中文。

对日志文件的大小没有限制。

支持IPV4和IPV6,支持GeoLocation。

当前的稳定版本是 2.23-03

缺点:不支持多文件分析。在官方的FAQ中看到,webalizer 不支持一个负载均衡系统下的多文件分析。

Webalizer 的安装也比较简单

./configure --prefix=path --with-language=chinese

make

make install

就能够完成安装,webalizer 需要gd库,png库等一些库的支持,如果安装没有成功,可以看到对应的错误提示。我用的centos系统,直接yum install 就可以了。

使用过程中发现一个很杯具的事情,Webalizer不支持自定义的Log日志格式。也就是说,如果我们对默认的apache日志格式进行改变或调整,就没有办法使用webalizer。这是我最终决定弃用他的原因。

但是同样有一件欣慰的事情,就是Webalizer有一个兄弟,Stone Step Webalizer. 这款软件是Webalizer的分支,添加了很多实用的功能。更新也比较活跃,最近一次更新就在上个月。

4、Analog的深入使用

Analog还是很好用的,当然,有一个致命的缺点,就是无法统计Unique Visit 独立访问用户数量。特别是按照每周、每月、每年进行统计的数字。这个统计涉及到大量的计算,对服务器的要求会非常高,而且计算的过程会产生很大量的临时文件,可能作者基于这方面的考虑,没有提供这个数字。

Analog的一些默认配置,我们在编译指出可以通过修改 anlghead.h 文件进行修改,也可以后续通过配置文件进行指定,配置文件可以不止一个,Analog会自动处理合并多个配置文件。虽然有多个配置文件,但是analog还是只生产一份报告。同时可以在命令行中使用 +gother.cfg 的方式调用其他的配置文件,但这样不会阻止读取默认的配置文件。如果我们不希望 analog 读取默认的配置文件,则应该使用 –G 参数。

如果只是希望修改配置文件中的某些配置,可以使用 +C 参数,例如 +C”UNCOMPRESS *.gz gzcat”。

通过 ./analog/analog –settings 我们可以将当前 analog 的配置打印出来,方便我们进行查看。

The LOGFORMAT and APACHELOGFORMAT commands only apply to logfiles specified with a LOGFILE command later in the same configuration file. So you must put theLOGFORMAT above the LOGFILE to which it refers. If you declare your logfiles on the command line, or drag them onto the app on the Mac, you must useDEFAULTLOGFORMAT or APACHEDEFAULTLOGFORMAT instead.

上面这个部分,指出了Analog曾经困惑我几个小时的问题。因为,我在配置文件中制定了日志的格式,然后再命令行中指定了使用哪些日志,但是分析的结果总是报 Warning F 错误:Can't auto-detect format of logfile 。问题原来出在,APACHELOGFORMAT 只能紧跟在 LOGFILE 上面,如果是命令行,就需要使用 APACHEDEFAULTLOGFORMAT 替代了。

需要注意一点的是,虽然我们可以在日志名中使用通配符,但是在文件夹路径上,是不可以使用,这个是analog的限制所在。

参考资料: 1、Awstats性能优化的几个方面

2、Awstats性能优化

3、Awstats旧日志统计

4、Analog下载

5、Webalizer

6、Stone Step Webalizer

7、十款强大的开源日志分析工具

8、各种日志格式

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2010-12-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档