Apacheアクセスログからユーザーエージェント毎で集計する

estis2012/10/08 (月) 04:23 に投稿

ログフォーマットが、combinedであることを想定している。

awk -F\" '{UA[$6]++;x++}END{for(i in UA)printf "%s %i %.2f% \n", i, UA[i], UA[i]/x*100}' access_log

出力結果
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) 1 25.00%
SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html) 1 25.00%
Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0 2 50.00%

出現数の降順で並べ替えたいときは

awk -F\" '{UA[$6]++;x++}END{for(i in UA)printf "%s %i %.2f% \n", i, UA[i], UA[i]/x*100}' access_log | sort -k2 -n

Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0 2 50.00%
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) 1 25.00%
SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html) 1 25.00%

awk -F¥" の場合
$2は、リクエスト
$4は、リファラー

awk -F\" '{print $2,$4}' access_log
GET /zenphoto/ HTTP/1.0 http://***.jp/zenphoto/
GET /zenphoto/zp-core/setup.php?autorun=gallery HTTP/1.0 http://***.jp/zenphoto/zp-core/setup.php?autorun=gallery
GET /robots.txt HTTP/1.1 -
GET / HTTP/1.1 -