我已经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。