有没有办法衡量一个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脚本)来对每个日志行中的字节进行求和。
答案 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)
答案 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
步骤: