1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Apache や Nginx ログを sed コマンドで条件抽出する方法

Posted at

ログ解析をする際、生のログファイルから、特定の条件を追加してログを絞り込んでいく方法を置いておきます。

特定のパスへのゲットリクエストだけを抽出

$ 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

参考

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?