apache日志分析工具为多个虚拟主机?

我有兴趣试图得到由我的apache服务器提供的所有虚拟主机的并行使用比较。

在最简单的情况下,我想查看每个虚拟主机的列表(或条形图)以及该站点上的请求/通信量。

我一直在玩webalyzer和awstats,但是我还没有能够在同一个信息图中比较多个虚拟主机。

任何人都有这样做的工具build议(或者我可能会使用上述工具来这样做)?

一般来说,当使用虚拟主机时,我对每个虚拟主机都有不同的访问日志。 如果是这种情况,你只是想要点击:

wc -l foo_vhosts.access*

这个数字就是对数,这基本上是你得到的点击数。 但是你应该描述你是否login到不同的文件,并发布一个示例日志条目。

如果您没有login到不同的文件,并且您的日志格式不包含格式为%v的格式,那么您的运气不好,除非您可以将每个uri关联到其虚拟主机。

首先,您需要更改日志格式,以便在每个日志条目中logging虚拟主机。 类似下面的内容会给你一个组合/扩展的格式,其中的虚拟主机名为%v:

 LogFormat "%h %v %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{Cookie}i\"" LogServerName 

那么当你必须告诉Apache使用这种日志格式。 类似以下内容可以全局添加或添加到单个虚拟主机(全局更简单)。 实际上,我通常在上面的一行中有一个名为/etc/httpd/conf.d/access_logging.conf的文件:

 CustomLog /var/log/httpd/global_access.log LogServerName 

一旦完成,您至less可以键入不同的虚拟主机。 然后你可以使用像petituniq这样的东西来做下面的事情。

cat /var/log/httpd/global_access.log | awk'{print $ 2}'| petit –hash

此外,你可以使用赛车来做这样的带宽分析。 对大文件来说可能有点慢,但是很快,很脏。

 for i in `cat /var/log/httpd/global_access.log | awk '{print $2}'`; do cat /var/log/httpd/global_access.log | grep $i | racecar; done 

链接: http : //crunchtools.com/software/petit/链接: http : //crunchtools.com/software/racecar/

@kyle,cut -f 1 -d''combinedlog | sort | uniq -c | sort -nr