13
10

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 5 years have passed since last update.

Apache (アパッチ) ログ 解析

Last updated at Posted at 2015-12-25

##combined Log形式の確認と設定

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

apache公式ドキュメント
https://httpd.apache.org/docs/2.2/ja/mod/mod_log_config.html

##エラーとなったアクセスを抜き出す
logファイルへ移動

$ cd /var/log/httpd/logs

error 404のエラーを抜き出す

$ grep "HTTP/1.1\" 404" access_log

出力個数を確認する時

$ grep "HTTP/1.1\" 404" access_log | wc -l

検索条件にマッチしないものを数える

$ grep "HTTP/1.1\" 404" access_log | grep -c -v "favicon.ico"

##集約して数える

毎時のリクエスト数を数える

$ grep -o '[0-9]\{2\}/.../2015:[0-9]\{2\}' access_log | uniq -c

grep option [o]はマッチ部を取り出す。
つまりあるキーワードを含む「行」ではなく「マッチ部分」を取り出す。
uniq ソート済みのファイルから重複した行を削除

##ProcessSubstitutionを使用してみる。
###ProcessSubstitutionとは
簡単に言うと、コマンドの実行結果をファイルとして扱うことができる。

ProcessSubstitutionを使わない例

$ sort file1 > file1.sorted
$ sort file2 > file2.sorted
$ diff file1.sorted file2.sorted

ProcessSubstitutionを用いると

$ diff <(sort file1) <(sort file2)

上記のように「<(コマンド)」という記法で、コマンドの実行結果をファイルとして他のコマンドに渡すことができる。

###実用例
ProcessSubstitutionを使用すると、2つのクライアントのリクエストの差分が取得できる。

$ diff -u <(grep "00.00.0.0" access_log | grep -o "\(GET\|POST\) [^ ]*" | sort | uniq) <(grep "127.0.0.1" access_log | grep -o "\(GET\|POST\) [^ ]*" | sort | uniq)
13
10
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
13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?