アクセスログ解析 ログファイルから社内アクセスをgrepで除く
- 2006.11.25
- Webマスター
Linuxでの作業なので grep を使っています。Solaris10での作業は、/usr/bin/egrep で。
■社内アクセスのみ取得する
社内アクセスを emp.log として保存する
社内のIPアドレスが、192.168.* の場合、
$ grep ^192.168 access_log > emp.log
apacheのアクセスログは、行頭にIPアドレスを記述するので、192.168の前に ^ を付ける。
■社内アクセスを除く-1
お客様からのアクセスのみを customer.log として保存する
$ grep -v ^192.168 access_log > customer.log
■社内アクセスを除く-2
複数のログファイルがあるとき、
例えば、access_log.20061101, access_log.20061102, access_log.20061103…
$ grep -h -v ^192.168 access_log.* > customer.log
access_log.* と指定して複数ログを対象にする。
-hオプションで、ファイル名の出力を抑制する。
■社内アクセスを除く-3(オススメ)
社内のIPアドレスが複数あるとき、
例えば、192.168.* と 172.16.* と abc.co.jp だとする。この3つのアクセスを除外したい。
最初にパターンファイルを作っておく。テキストエディタで新規にpattern.txtを作る。中身は、
^192.168. ^172.16. ^abc.co.jp
そして、grepを実行する。
$ grep -v -f pattern.txt access_log > customer.log
-f オプションで、パターンファイルを指定する。これで複数の条件を指定できる。
-v オプションで、パターンにマッチしたものを除外する。
■社内アクセスを除く-4
上記3の方法は、ログファイルが一個のときのやりかた。
ログファイルが複数あるときは、このように。(2007年の複数ログファイルの場合)
$ grep -h -v -f pattern.txt access_2007* > customer_2007.log
-
前の記事
IE6でページ内リンクが効かない! 2006.11.09
-
次の記事
アクセスログ解析:ログファイルから特定ファイルへのアクセスを取得する 2006.11.25