10月 24 2008

apache のリファラ解析

Published by HoLY under tech

awk とか sed とか - qootas.org/blog を見て、せっかくなので自分もメモ書き。

apache のアクセスログからリファラを調べるとき、awstats や google analytics だと細かいものが調べられなかったりするので、自分はこんなコマンドを使っています。環境は FreeBSD。

$ grep `date -v-1d +%d/%b` access_log | awk '{print $11}' | grep -v '"http://holy' | ruby -rnkf -n -e 'print NKF.nkf("-w", $_.gsub(/%([0-9A-F][0-9A-F])/i){$1.to_i(16).chr})' | sort | uniq -c | sort -r 

最初の grep で「昨日のログだけ」調べる。 Linux なら -v-1d のかわりに 1 days ago とか書いておけばよいはず。

awk でリファラ部分だけ残す。 awk で { print $11 } とやるのは必須すぎるので覚えておくのをおすすめ。 cut -f 11 -d ' ' としてもいいけど、なんとなく分かりにくいよね。

grep の部分で(必要なら)自分の URL は省く。 awk の部分でやってもいいけど、何にも考えてない(ぉぃ。

Ruby部分は後で。

あとは sort と uniq でいつもの多い順にならべる奴。

実際には最後に lv とか w3m とかにパイプつないでで見る。 w3m なら「:」ですぐリンク先に飛べて便利。

Ruby 部分について。URLエスケープを戻して文字コードを統一してる。文字コードは各行で違うので、単純に iconv コマンドとか使うのはダメ。 実際は ~/bin/url2utf8.rb と同じことをするスクリプトを作って使ってるけどね。

まあそんなにチェックするものでもないけど、だいたいこんなコマンドとかで各種ログやら見てたりします。

まだコメントはありません