top of page

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:

 

表示された。

 

感覚だけど、なんとなくわかってきたかも

© 2023 by Digital Marketing. Proudly created with Wix.com

bottom of page