ログ解析をする際、生のログファイルから、特定の条件を追加してログを絞り込んでいく方法を置いておきます。
特定のパスへのゲットリクエストだけを抽出
$ sed -n '/GET \[URL]/p' [Apache/Nginxログファイル] > [抽出先].log
例
# /about/intro 配下のアクセスだけを抽出する
$ sed -n '/GET \/about\/intro/p' [Apache/Nginxログファイル] > [抽出先].log
Googlebot
Googlebot からのアクセスを抽出する
sed -n '/Googlebot/p' [Apache/Nginxログファイル] > [抽出先].log
Googlebot からのアクセスを除外する
sed '/Googlebot/d' [Apache/Nginxログファイル] > [除外処理後ファイル].log
SVGファイル and/or 画像などのアセットのアクセスを除外する
sed '/.svg/d' [Apache/Nginxログファイル] > [除外処理後ファイル].log
JPEG,GIF, PNG, SVG, CSS, JS ファイルのアクセスログを削除する
sed '/(.jpg|.jpeg|.gif|.png|.svg|.css|.js)/d' [Apache/Nginxログファイル] > [除外処理後ファイル].log
特定 IP (例 8.8.8.8 ) のアクセスを除外する
sed '/8.8.8.8/d' [Apache/Nginxログファイル] > [除外処理後ファイル].log
サンプル実行例
前述のサンプルを参考に、条件を元に作業手順のコマンドを作って順番に実行していく。
access.log ログを home ディレクトリに作った作業ディレクトリにコピーし、Googlebot、画像などのアセット、192.168.1.1からのアクセス(例えば自社事務所の IP 等)を除外したものを access_final.log として抽出するサンプル実行例です。
$ mkdir ~/log_working
$ sudo cp /var/log/nginx/access.log ~/log_working/
$ cd ~/log_working
$ sed '/Googlebot/d' access.log > access_step1.log
$ sed '/(.jpg|.jpeg|.gif|.png|.svg|.css|.js)/d' access_step2.log > access_step3.log
$ sed '/192.168.1.1/d' access_step3.log > access_final.log
参考