access log を解析
access log の解析っていまだに苦手。。
ちょっとそういう苦手意識をなくす為に少しづつ頑張る
access log に記載してある、接続元 IP アドレスがどれだけあるか
まずは、ざっくりとどこからの IP から接続されたのが多いのかを調べる。
※IPアドレスは適当になおしています
# cat /var/log/httpd/access_log | awk '{ print $1 }' | uniq -c | sort -nr
4 111.111.111.111
2 222.222.222.222
1 333.333.333.333
このサイトを参考にアクセスログを解析
まずは awk で 接続元 IP だけを抜粋
そのあとに uniq で重複しているものをまとめます
例えば 111.111.111.111 からのアクセスが 4 回あれば上記のようにアドレスの前に 4 と表示させる
最後に sort で数字の多い順に並び替え
これで、access_log に保存されている情報で、どこのアドレスからアクセスが多いのか分かります。
日にちとか時間で区切りたかったら、awk の前に grep で条件指定したら良いかも
時間帯ごとのアクセス数集計について
http://swfz.hatenablog.com/entry/2013/12/25/234147
面白そうなのをみつけたので、試してみた
# cat access_log | grep -P -o '15/Mar/2015:\d{2}:' | sort | uniq -c
15 15/Mar/2015:04:
1 15/Mar/2015:06:
1 15/Mar/2015:08:
11 15/Mar/2015:19:
1 15/Mar/2015:20:
実行結果は問題なさそう
grep -P で perl 正規表現を使用できる
grep -o でマッチした行だけ取り出す
ということらしい
http://linuxjm.sourceforge.jp/html/GNU_grep/man1/grep.1.html
\d{2}:
↑は perl の正規表現ということに
\d は 数字[0-9]に同じ
{n} n 回の繰り返しにマッチ
つまり数字が 2 回繰り返したらという事?
例えば
15/Mar/2015:04:
この場合の数字っていうのは 04 と思われる
数字が 2回繰り返されたら、その行を表示?
試しに uniq と sort を消してみたら
# cat access_log | grep -P -o '15/Mar/2015:\d{2}:'
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:04:
15/Mar/2015:06:
15/Mar/2015:08:
15/Mar/2015:19:
15/Mar/2015:19:
15/Mar/2015:19:
15/Mar/2015:19:
15/Mar/2015:19:
15/Mar/2015:19:
15/Mar/2015:19:
15/Mar/2015:19:
15/Mar/2015:19:
15/Mar/2015:19:
15/Mar/2015:19:
15/Mar/2015:20:
{2} は 04 を判定しているのか
例えばアクセスログの時間が
15/Mar/2015:4:
とかだと
{2} の条件に合致しない
条件を少しかえてみる
# cat access_log | grep -P -o '15/Mar/\d{2}:'
これで 2015 の部分を表示したいが、2015 は 4文字なので
{4} じゃないと表示はされない
なので {4} で表示されるはず
# cat access_log | grep -P -o '15/Mar/\d{2}:'
#
# cat access_log | grep -P -o '15/Mar/\d{3}:'
#
{2}と{3}では表示されない
# cat access_log | grep -P -o '15/Mar/\d{4}:'
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
15/Mar/2015:
表示された。
感覚だけど、なんとなくわかってきたかも
