我怎样才能看到每个Apache虚拟主机使用多less带宽?

我已经build立了Apache服务几个虚拟主机,我想看看每个站点使用多less带宽。 我可以看到整个服务器使用了多less,但是我想要更详细的报告。

我发现的大部分事情都是为了限制虚拟主机的带宽,但我不想这么做。 我只想看看哪些网站正在使用多less带宽。

这不是用于计费的目的,仅供参考。

有我应该使用的apache模块? 还是有其他的方法来做到这一点?

你以后的信息都在日志​​里,所以你应该看看日志分析器,比如AWStats 。 另一个select是使用Google Analytics。

为了分析日志,下面是一个粗略的例子,您可以使用它来告诉您日志文件从命令行报告的stream量有多lessMB:

cat /var/log/apache/access.log | awk '{SUM+=$10}END{print SUM/1024/1024}' 

Awstats是这样做的一种方法,但可能不是最好的

我build议你使用美妙的apache日志logging机制以及较less已知的%I%O标志:

定义格式:

LogFormat“%t%a%v%U%q%I%O”IOFormat

在你的主httpd.conf中使用它:

CustomLog /var/log/apache2/all-bw.log IOFormat

这些值可能不会logging所有头信息,但是对VirtualHoststream量有精确的想法是相当准确的。

使用perl脚本扫描日志,每n分钟为每个虚拟主机聚合(例如5个),并将其发送给cacti。

这些标志由mod_logio提供,它可能是在你的Apache中构build的(就像我的Debian的Apache一样)。

如果您决定在Apache中使用awstats,它将显示您的整个服务器的聚合带宽。

要查看每个虚拟主机的带宽,我build议安装vlogger 。

Vlogger实际上会收集每个虚拟主机的Apache访问日志信息,这些虚拟主机是在不同的目录/文件中设置的。

例如,如果您的Apache日志文件位于/ var / log / apache2中,则典型的vlogger安装将为您的虚拟主机(例如vhost1.com vhost2.com)创build类似如下的内容:

 /var/log/apache2/vhost1.com/access.log /var/log/apache2/vhost2.com/access.log 

Vlogger为您提供旋转这些日志的选项,提供了一种方法来更改访问日志文件的命名模板(例如添加date),并声称它比Apache更好地处理大量日志文件。

一个不利的方面是你不会有一个聚合的服务器视图了(你需要单独聚合日志或者使用额外的apache设置或者其他方法?)。

我会告诫不要使用谷歌分析(或任何基于JavaScript的跟踪)服务器带宽监控,因为你是依靠客户端通过JavaScript报告。 Google Analytics(分析)不向您报告已禁用JavaScript的用户以及任何爬虫/蜘蛛/机器人。

这里有一些正则expression式来parsingXerxes提出的日志格式。

\ [([0-9] +)/(\ W +)/([0-9] {4})[^ \]] + \] \ S(\ d {1,3}。\ d {1, 3}。\ d {1,3}。\ d {1,3})\ S([^ /] +)[^ \ S] + \ S(\ d +)\ S(\ d +)

示例日志:

[12 / Jan / 2011:14:25:04 +0000] 157.157.12.206 files.hjaltijakobsson.com / 581 669 [12 / Jan / 2011:14:25:04 +0000] 157.157.12.206 files.hjaltijakobsson.com / 624 747 [12 / Jan / 2011:14:25:04 +0000] 157.157.12.206 files.hjaltijakobsson.com /icons/blank.gif 687 186 [12 / Jan / 2011:14:25:04 +0000] 157.157。 12.206 files.hjaltijakobsson.com /icons/compressed.gif 693 188 [12 / Jan / 2011:14:25:04 +0000] 157.157.12.206 files.hjaltijakobsson.com /favicon.ico 592 512

火柴:

子模式1(月中的一天):12
子模式2(缩写月份):1月
子模式3(年份):2011
子模式4(访客主持人):157.157.12.206
子模式5(虚拟主机):files.hjaltijakobsson.com
子模式6(传入字节):581
子模式7(传出字节):669

干杯。

稍微调整一下接受的答案,假设服务器上有多个虚拟主机(因此有多个site.com.access_log)。 这将sorting和列出每个虚拟主机

 for f in *.access_log ; do echo `awk '{SUM+=$10}END{print SUM/1024/1024}' $f` $f ; done | sort -rn | more 

和一个压缩日志的目录

 for f in *.access_log.*.gz ; do echo `zcat $f|awk '{SUM+=$10}END{print SUM/1024/1024}'` $f `stat -c%z $f`; done | sort -rn | more 

嗯,你可以得到邪恶的IPTables和string匹配logging的数据包以备后用。 只能用于非SSL连接。

或者像Snort这样的协议和会话可能会成为鞋的angular色。

正确。 过滤日志是一个好主意。 下载文件时我也想获得我的Apache服务器的带宽。

 LogFormat "%h %l %t %u \"%r\" %>s %b/%D**" combined 

计算%b%d输出,这会给你带宽的电stream。