ワンラインスクリプトでできる!ちょっとしたログ解析

サイト管理などをするようになると、やはりログ解析をしたくなります。どのページにアクセスがきているのか、どれくらいの負荷がかかっているのか分析をする必要があるからです。


Apacheのログでは、処理にかかった時間が記録に残るように %D" を追加しておきましょう。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" combined

そうすると、アクセスログを解析するときに、どの処理で時間がかかっているか調べることができます。その際にはawkを使うと便利です。次のように22時台のアクセスのうち、500エラーが返っていた行を抽出することもできます。uniq, cut, sort などを組み合わせると、いろいろな値が出せます。

grep "2011:22:" access_log | awk '$9==500{print}'
awk '$9==500{print}' access_log | cut -f2,3 -d: | sort | uniq -c
awk '{print $1}' access_log | sort | uniq -c | sort -n | tail -5

参考)