Answers:
您所需要的信息全部在日志中,因此您应该查看日志分析器,例如AWStats。另一种选择是使用Google Analytics(分析)。
为了分析日志,这是一个粗略的示例,您可以使用该示例来告诉您日志文件从命令行报告多少MB流量:
cat /var/log/apache/access.log | awk '{SUM+=$10}END{print SUM/1024/1024}'
我建议您使用出色的Apache日志记录机制及其鲜为人知的%I和%O标志:
定义格式:
LogFormat“%t%a%v%U%q%I%O” IOFormat
在您的主要httpd.conf中使用它:
CustomLog /var/log/apache2/all-bw.log IOFormat
这些值可能不会考虑所有标头信息,但是对于VirtualHost流量的精确概念是非常准确的。
使用perl脚本扫描日志,以每n分钟(例如5个)汇总每个虚拟主机,并将其发送给cacti。
这些标志由mod_logio提供,mod_logio可能内置在您的Apache中(就像我的Debian的Apache一样)。
如果您决定将awstats与Apache一起使用,则开箱即用它将显示整个服务器的聚合带宽。
要查看每个虚拟主机的带宽,建议安装vlogger。
Vlogger实际上将在单独的目录/文件中收集您为此设置的每个虚拟主机的Apache访问日志信息。
例如,如果您的Apache日志文件位于/ var / log / apache2中,则典型的vlogger安装将为您的虚拟主机(例如vhost1.com vhost2.com)创建以下内容:
/var/log/apache2/vhost1.com/access.log
/var/log/apache2/vhost2.com/access.log
Vlogger为您提供了轮换这些日志的选项,提供了一种更改访问日志文件的命名模板(例如,添加日期)的方法,并声称它处理的日志文件比Apache更好。
不利的一面是,您将不再具有聚合的服务器视图(您将需要分别聚合日志,或者可能需要使用额外的Apache设置或其他方法?)。
我会提醒您不要使用Google Analytics(分析)(或任何基于JavaScript的跟踪)来监控服务器带宽,因为您依赖客户端通过javascript报告。Google Analytics(分析)不会向您报告禁用了javascript的人以及所有抓取工具/蜘蛛/机器人。
这是一些正则表达式,用于解析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 +)
日志示例:
[2011年1月12日:14:25:04 +0000] 157.157.12.206 files.hjaltijakobsson.com / 581669 [2011年1月12日: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 687186 [12 / Jan / 2011:14:25:04 +0000] 157.157。 12.206 files.hjaltijakobsson.com /icons/compressed.gif 693188 [12 / Jan / 2011:14:25:04 +0000] 157.157.12.206 files.hjaltijakobsson.com /favicon.ico 592512
火柴:
子模式1(每月的一天):12子
模式2(缩写为月份):一月子
模式3(年):2011子
模式4(访问者主机):157.157.12.206子
模式5(虚拟主机):files.hjaltijakobsson.com子
模式6(传入字节):581子
模式7(传出字节):669
干杯。
假设服务器上实际上有多个虚拟主机(因此有多个site.com.access_log),请稍稍调整可接受的答案。这将排序并列出每个虚拟主机
for f in *.access_log ; do echo `awk '{SUM+=$10}END{print SUM/1024/1024}' $f` $f ; done | sort -rn | more
以及用于gzip压缩日志的目录
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