如何查看每个 Apache 虚拟主机使用了多少带宽?

如何查看每个 Apache 虚拟主机使用了多少带宽?

我已设置 Apache 来为多个虚拟主机提供服务,我想查看每个站点使用的带宽。我可以看到整个服务器的带宽使用情况,但我希望获得更详细的报告。

我发现大多数方法都是为了限制虚拟主机的带宽,但我不想这么做;我只是想看看哪些网站使用了多少带宽。

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

我应该使用 Apache 模块吗?或者还有其他方法可以做到这一点?

答案1

您需要的信息都在日志​​中,因此您应该查看日志分析器,例如统计. 另一个选择是使用 Google Analytics。

为了分析日志,这里有一个粗略的例子,您可以使用它来告诉您日志文件从命令行报告了多少 MB 的流量:

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

答案2

我建议你使用出色的 Apache 日志记录机制及其鲜为人知的%我氧含量标志:

定义格式:

日志格式“%t%a%v%U%q%I%O”IO格式

在你的主程序中使用它httpd配置文件

自定义日志 /var/log/apache2/all-bw.log IOFormat

这些值可能没有考虑到所有的标头信息,但对于准确了解 VirtualHost 流量来说相当准确。

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

这些标志由 mod_logio 提供,它可能内置于您的 Apache 中(就像我的 Debian 的 Apache 一样)。

答案3

统计信息系统是一种方法,但可能不是最好的

答案4

这里是一些正则表达式来解析 Xerxes 提出的日志格式。

\[([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 [2011年1月12日:14:25:04 +0000] 157.157.12.206 files.hjaltijakobsson.com /favicon.ico 592 512

火柴:

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

干杯。

相关内容