我已设置 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
干杯。