10月 24 2008
apache のリファラ解析
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 と同じことをするスクリプトを作って使ってるけどね。
まあそんなにチェックするものでもないけど、だいたいこんなコマンドとかで各種ログやら見てたりします。
