Apacheのアクセスログ簡易解析

Apacheのアクセスログ解析には、いろんなツールがあり、グラフになったりフローチャート図になったり便利なものも多くあるのですが、Linuxで構築したwebサーバのログ解析については、コマンドを使ってログファイルを集計する方が、見やすい場合があります。例えば、単純に「誰がいつアクセスしてきたか」とか、「誰が何回アクセスしてきたか」などの情報は、Linuxならではのテキスト編集コマンドを実行するだけで簡単に確認ができます。

Apacheのアクセスログには、どの検索サイトからきたかとか、検索キーワードとか、OSやブラウザの種類など情報がたくさんあります。これらの情報うちほしい物だけ抜き出します。まずはそのほしい情報がどこにあるかを確認します。今回は、「誰が」と「いつ」を調べようと思います。Apacheのアクセスログのフォーマットは、各環境で違うのですが、だいたい以下のようなフォーマットです。

192.168.0.1 - - [13/Jul/2008:06:44:38 +0900] "GET /wordpress/?p=167 HTTP/1.1" 200 24314 "http://www.uetyi.com/server-const/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9) Gecko/2008052906 Firefox/3.0"

ここで「誰が」に当たる情報は、先頭のIPアドレスで、「いつ」の情報は、[ではじまる、[13/Jul/2008:06:44:38の部分です。この情報を抜き出すのに、「cut」コマンドを使います。このコマンドは、「-d」に区切り文字を「-f」のあとに区切り文字で区切られたフィールド番号を設定し、表示したい情報のみを出力します。次のコマンドを実行すればよいです。

cut -d " " -f 1,4 /var/log/apache2/access.log
192.168.0.5 [13/Jul/2008:06:44:38
192.168.0.1 [13/Jul/2008:06:45:40
192.168.0.4 [13/Jul/2008:06:46:41
192.168.0.1 [13/Jul/2008:06:47:46
192.168.0.4 [13/Jul/2008:06:48:38

あとは、この情報を「sort」コマンドで並び替えれば、「誰がいつアクセスしてきたか」は、わかります。次の例は、僕がよく使うコマンドです。

cat /var/log/apache2/access.log.1 /var/log/apache2/access.log | cut -d " " -f 1,4 | sort > access_check.log

つぎは、「誰が何回アクセスしてきたか」の情報ですが、以下のようなコマンドを実行します。

cut -d " " -f 1 /var/log/access.log | sort | uniq -c
2 192.168.0.1
2 192.168.0.4
1 192.168.0.5

行頭の数字が、アクセス件数を表します。その次がIPアドレスです。これで簡易的に「誰が何回」の情報は、確認できます。
後は、特定のページについて調べたいときは、「grep」コマンドを使います。例えば、wordpressというブログツールを使っている場合、ブログに対してのアクセスのみカウントしたい場合は、次のようにします。

cat /var/log/apache2/access.log | grep -E '.* /wordpress/?|.* /wordpress/ |.* /wordpress ' | cut -d " " -f 1 | sort | uniq -c > access_count.log
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする