测量来自apache访问日志的流量

时间:2011-11-05 11:00:18

标签: linux apache logging

有没有办法衡量一个Apache日志文件中使用了多少流量?

格式:

66.249.72.214 - - [05/Nov/2011:12:47:37 +0200] "GET /produktas/565638 HTTP/1.1" 200 4699 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

我的理解4699是除了标题之外传输的字节。

我需要一个简单的解决方案(可能是一个小的bash脚本)来对每个日志行中的字节进行求和。

5 个答案:

答案 0 :(得分:11)

试试这个。我在本地文件上测试了它,但无法判断它是否适用于所有配置/ locales /...

cat apache.log | perl -e 'my $sum=0; while(<>) { my ($traffic) = m/\[.+\] ".+" \d+ (\d+)/; $sum += $traffic}; print "$sum\n"'

2017年1月更新:与此同时,我学到了更多Perl,这就是我今天的表现:

cat apache.log | perl -nE '/\[.+\] ".+" \d+ (\d+)/; $sum += $1; END {say $sum}'

答案 1 :(得分:4)

有关详细的日志文件监控和实际带宽使用情况,请转到AWStats

它将Apache日志文件作为输入,并通过图表为您提供非常详细的访问者和带宽分析。

您也可以尝试GoAccess

答案 2 :(得分:3)

Apache访问日志 - 全球带宽使用情况:

awk '{ s += $10 } END { print "Total ", s/1024/1024 " Mo", "- Moyenne ", s/NR/1024/1024 " Mo", "- Accès ", NR }' access.log

对于文件:

grep NAME_OF_RESOURCE_HERE /var/log/apache2/access.log* | awk '{ s += $10 } END { print "Total ", s/1024/1024 " Mo", "- Moyenne ", s/NR/1024/1024 " Mo", "- Accès ", NR }'


你得到这样的东西:总计301.985 Mo - Moyenne 0.0430055 Mo - Accès7022

答案 3 :(得分:2)

我认为您需要使用apachetop实用程序,尝试使用下一个命令从APT安装:

sudo apt-get install apachetop

然后使用命令运行它:

sudo apachetop -f /path/to/access.log

你是摇滚乐! :)

答案 4 :(得分:0)

我们需要获得最近X天的访问量。我真的不喜欢perl,所以我要做的是:

zcat $(find -name yourvhost_access.log*.gz -mtime -3 2>/dev/null| xargs ) \ 
| awk '$10 ~ /^[0-9]+$/ {print $10}' \
| paste -sd+ \
| bc 

步骤:

  1. 找到最后3个已获得的访问日志
  2. 如果位置10是数字,则将其打印在第10位
  3. 将其与“ +”一起放
  4. 计算