Apacheのcombinedログの解析

 

Apacheのアクセスログといえばcombinedログがメジャーなのかな?殺風景なログからも、見方を工夫すれば色々と情報を収集できたりする。

combinedログとは

まず、combinedログは次のような形式のログです。

config的に書くとこんな感じ。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  • %h:リモートホスト
  • %l:リモートログ名(基本”-“になる)
  • %u:リモートユーザ(Basic認証のユーザ)
  • %t:リクエスト受付時刻
  • %r:リクエストの最初の行
  • %s:ステータス
  • %{Referer}i:リファラ
  • %{User-Agent}i:ユーザエージェント

1リクエストの処理時間を調べたければ最後に「%D」とか入れておくと良い。

実際のログはこんな感じで出力される。

118.86.194.71 - - [17/Aug/2011:23:04:03 +0900] "GET /home/name/category/web HTTP/1.1" 200 11815 "http://naoberry.com/home/name/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1"

ログの加工方法

ログフォーマットが決まっているので、工夫次第で目的に応じた情報が収集できます。

◆アクセスが多いリモートホストTOP10

awk '{print $1}' access_log | sort | uniq -c | sort -n | tail -5

◆時間ごとのアクセス数(時分)

awk '{print $4}' access_log|cut -f2,3 -d:|sort|uniq -c

◆時間ごとのアクセス数(時)

awk '{print $4}' access_log|cut -f2 -d:|sort|uniq -c

◆URLごとのアクセス数(URLパラメータは除外する)

awk '{print $7}' access_log | cut -f1 -d? | sort | uniq -c

◆500(Internal Server Error)が発生したURL

awk '$9==500{print $7}' access_log | cut -f1 -d? | sort | uniq -c

◆500(Internal Server Error)が発生した時間

awk '$9==500{print $4}' access_log | cut -f2,3 -d: | sort | uniq -c

 

ちなみにこのHPのここ3日間の時間ごとのアクセス数はこんな感じ。(すくなっ)※アクセス数 時刻 の順に並びます

 

# awk '{print $4}' access_log|cut -f2 -d:|sort|uniq -c
81 00
96 01
85 02
91 03
72 04
100 05
114 06
171 07
98 08
125 09
153 10
184 11
128 12
109 13
112 14
105 15
149 16
123 17
162 18
104 19
88 20
154 21

 

  • このエントリーをはてなブックマークに追加
  • Pocket

コメント一覧

  1. Server より:

    Anyone who can write to the directory where Apache is writing a log file can almost certainly gain access to the uid that the server is started as, which is normally root. Do

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。