LoginSignup
66
67

More than 5 years have passed since last update.

(メモ)Apacheアクセスログからリクエスト回数が多いURLを集計するコマンド

Last updated at Posted at 2014-02-20

アクセスログが下記のフォーマットだとすると(たぶんApacheのデフォルト設定だとこれ)、

access_log-YYYYMMDD
XXX.XXX.XXX.XXX - - [09/Feb/2014:14:47:20 +0000] "GET /test.php?txt=hoge HTTP/1.1" 200 4 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.71 (KHTML, like Gecko) Version/7.0 Safari/537.71"

awkとsortとuniqコマンドで、次のように集計できる。

$ cat access_log-YYYYMMDD | awk -F\" '{print $2}' | awk -F' ' '{print $2}' | sort | uniq -c | sort -n -r

例えば結果はこんな感じ。

    374 /hoge.php
    265 /img/hoge.png
    216 /css/hoge.css
     23 /hoge.php?var=1
    ~以下つづく~

このコマンドの説明:

  1. まず awk で、 " で区切られた文字列の 2 番目を切り出す
  2. さらに awk で、スペースで区切られた文字列の 2 番目を切り出す
  3. ソートして重複行を削除。この際、uniq の -c オプションで重複した行数を出力
  4. 重複した行数(=アクセスカウント数)を降順に並びかえる。このとき -n を指定するのがポイント
66
67
1

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
66
67