2011-11-05 57 views
3

有沒有什麼方法可以測量一個Apache日誌文件中有多少流量?從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腳本)來總結每個日誌行中的字節。

回答

6

試試這個。我測試了它的本地文件,但如果它適用於所有配置/區域設置/說不清......

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}' 
+0

謝謝!我修改了一下,以千兆字節顯示:[code] cat access.log | perl -e'my $ sum = 0; while(<>){my($ traffic)= m/\ [。+ \]「。+」\ d +(\ d +)/; $ sum + = $ traffic}; printf(「%。3f/1024/1024/1024); print」GB \ n「'[/ code] –

2

爲詳細的日誌文件監視和實際的帶寬使用情況,去AWSTATS。 它將apache日誌文件作爲輸入,並使用圖形爲您提供訪問者和帶寬的非常詳細的分析。

也可以嘗試http://goaccess.prosoftcorp.com/

1

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莫 - Moyenne 0.0430055莫 - ACCES 7022

+0

謝謝,也曾爲NGINX訪問日誌 – cmedeiros

1

我認爲你需要使用apachetop工具,試圖從APT安裝有下一個命令:

sudo apt-get install apachetop 

然後用命令來運行它:

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

而你是搖滾樂! :)