LoginSignup
6
6

More than 5 years have passed since last update.

アクセスログを分析する

Posted at

各コマンドについて

wcコマンド

Word Countの略で単語数や行数を数えるコマンド。

grepコマンド

ファイルの中の文字列に対して正規表現を使って検索するコマンド。

cutコマンド

各行の一部を出力するコマンド。

uniqコマンド

連続して重複した行を1つにまとめる
同じファイル内に同じ行があったとしても、連続していないとまとめられないため、sortコマンドとよく一緒に使用される。
-dで重複している行のみを抽出したり-uで重複した行をまとめるのではなく削除したりする。

sortコマンド

行の並び替えができるコマンド。
2行目でソートさせたい場合には-kを付けるとできる。

$ sort -k2 fuga.txt
1 22
6 24
2 34
7 4
5 43
4 46
8 5
9 5
3 53

一見ソートされていないように見えるが、2がつく数字が上に来るようにソートされている。
数値としてソートさせるには-nオプションが必要。

$ sort -k2n fuga.txt
7 4
8 5
9 5
1 22
6 24
2 34
5 43
4 46
3 53

実際にやってみる

アクセスログを実際に集計してみる(練習)

ログの総件数を求める

$ wc -l access_log.20170201
4661 access_log.20170201

$ wc -l access_log.20170201 access_log.20170202
34661 access_log.20170201
34785 access_log.20170202
69446 合計

wcコマンドの引数にファイルを指定すれば、件数を表示してくれる。
-lオプションで行数だけを表示させることができる。
注意点としては改行があって1行とカウントされるので、改行が一つもないと中身が存在しても0行になってしまう。

hoge.phpへの全アクセス数を求める

$ grep hoge.php access_log.20170201 | wc -l
5633

grepでhoge.phpが含まれる行だけを出力し、それをwcコマンドの渡すことでhoge.phpに対するアクセス数を計算している。

hoge.phpへの12時台のアクセス数を求める

$ grep 01/Feb/2017:12 access_log.20170201 | grep hoge.php |  wc -l
672

上記の例にさらにgrepで検索を行っている。

ログファイル中のユニークなIPアドレスのリストを求める

$ cat access_log.20170201 | cut -d ' ' -f 1 | sort | uniq
10.11.12.13
10.11.12.14
10.11.12.15

cutコマンドは-dオプションでデリミタを指定して-fオプションでフィールドを指定している。
今回の場合スペースで区切られたフィールドのうち、最初のフィールドのみを出力させている。
それに対してsortコマンドで重複が連続するようにした後に、uniqコマンドで重複をまとめている。

IPアドレスごとのhoge.phpへのアクセス数を求める

$ grep hoge.php access_log.20170201 | cut -d ' ' -f 1 | sort | uniq -c
30  10.11.12.13
3   10.11.12.14
223 10.11.12.15

uniquコマンドに-cオプションをつけることで重複した行数を先頭に付加することができるため、何行あるかを表示できる。

時間帯ごとのhoge.phpへのアクセス数を求める

$ grep 01/Feb/2017 access_log.20170201 | grep hoge.php | cut -b  25-31  | sort | uniq -c
 420 2017:00
 512 2017:01
 641 2017:02
 167 2017:03
 143 2017:04
 174 2017:05
 298 2017:06
 387 2017:07
 476 2017:08
 367 2017:09
 410 2017:10
 699 2017:11
 802 2017:12
1043 2017:13
1536 2017:14
1833 2017:15
1409 2017:16
1902 2017:17
2367 2017:18
2435 2017:19
2525 2017:20
2362 2017:21
1958 2017:22
1400 2017:23

cut -b 25-31ってところがいけてないけど、他に思いつかなかった。

6
6
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
6
6