スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

access_logのちょっとした解析

サーバーメモ。

アクセス数がたくさんあった場合の話。
access_logが1日で4GBを超えるくらいからを想定してます。

お金がなくてお高いサーバー代を出せない場合、access_logを解析するのも一苦労です。

Google Analyticsが使えるケースはとても楽チンですが、そうでないケースもあります。また、無料のAWStatsやwebalizerだと欲しい情報だけ取れなかったり、そもそもサーバー負荷が高いので別のサーバーで解析させなきゃだったり。

というか、webalizerはメモリ使いすぎで落ちちゃうなんてこともあります。古いし解析後の情報も見にくいしダメツールです。たくさんの無料レンタルサーバーで採用されてますが。クソです。アクセス数が少ない場合には良いのですが。

というわけで、お金も無いしサーバー増やせないし、クライアントは○月×日のリファラ欲しいとか言ってくるし、いざって時のためのコマンドです。もちろん、access_logにリファラを出力してないって場合はapacheの設定から変えなければ出来ませんので、そこは出力されているとして。
まずはメモリサイズ的に1つのaccess_logを読み込めない時のため、ファイルの分割と結合。

■分割
split -b 2000m access_log access_log.
■結合
cat access_log.* > access_log

これで、access_logのファイルを1つ2000MB=2GBに分けます。ログローテーションで最初から指定しとくのもアリです。
次に、日付での抽出。

■抽出
grep '4\/Jul\/2013' access_log.aa > day20130704.log

■別の抽出例(2013/7/6の10時〜17時)
grep -e '6\/Jul\/2013:1[0-7]' access_log.aa > day20130706_10-17.log

という感じで、お好みの日付や期間だけ取り出します。分割したログに対して抽出を行い、抽出したファイルは結合の方法で一つのファイルにまとめます。それで、特定日のみのaccess_logが出来上がります。

リファラの取得にはawkを使います。こいつはハイパー便利な機能で、本が一冊書けるくらいイロイロ出来ます。今回はシンプルな使い方のみ。便利な分オーバーヘッドもでかいですが、やっぱ便利なので使います。

■リファラの取得
cat day20130704.log | awk '{print $11}' | sort | uniq -c | sort -nr | head -n 100 > ref20130704.log

awkの「print $11」は、1行毎の処理で、スペースを区切りとして、11個目の文字列を出力してくれます。11個目がリファラでは無い場合は、適時変更します。

他にもイロイロな使い方が出来て、例えば時間帯別にアクセス数を出力したい場合は以下の様なコマンドになります。

■時間別のアクセス数
cat day20130704.log | awk '{ split($4,a,":"); print a[2];}' | sort | uniq -c > put.log

awkのsplitは文字列の分割です。

split(元の文字列,出力変数,区切り文字)

出力変数は、配列になります。
awkの{から}で;を入れて、splitとprintの2つの命令を書いてますね。

print a[2]は、変数aの3個目([0]が1個目)の値を出力してます。

sortは昇順で並び替え。uniq -cは重複行のカウントです。重複は連続した行しか判定してくれないので、uniqの前にソートしてるのです。

他、特に説明無くすっ飛ばしたものは以下の通り。

■数値的に降順ソート
sort -nr

■上位100行を出力
head -n 100

■ファイル内容を出力
cat ファイル名

ちなみに、「|」で区切ると、左から順番に実行してくれます。
「>」は、結果をファイルに出力してます。
「*」は、ワイルドカードといって、全ての文字に置き換わってくれます。
例えば、以下のファイルがあったとして、

access_log.1
access_log.2
access_log.3

これらのファイルを結合したい場合、

cat access_log.1 access_log.2 access_log.3 > access_log.all



cat access_log.* > access_log.all

は一緒です。

とまぁ、ちょっとしたことならコマンドのほうが楽なので、ツールに頼れない場合には使ってみて下さい。
関連記事

コメントの投稿

非公開コメント

プロフィール

エロぺんぎん

管理人:エロぺんぎん
不純な動機でプログラマーになった男、エロぺんぎんです。ブラザー達を猛烈に応援したい気持ちと、自分もプログラマーとして成長したい思いで、当ブログを立ち上げました。
エロぺん動画を運営しております。

検索フォーム
Twitter
最新記事
最新コメント
カテゴリ
リンク
RSSリンク
エロぺん動画で人気の動画
人気の記事
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。