1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

apacheのアクセスログを分単位・秒単位に件数を集計

Posted at

apacheのアクセスログを分単位・秒単位に件数を集計

ぱっと、アクセスログの集計をしたい際に出すコマンド

  • まずアクセスログを確認
$ cat /var/log/httpd/access_log | tail
==========
...
192.168.XX.XX - - [02/Sep/2020:23:34:59 +0900] "GET /index.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
192.168.XX.XX - - [02/Sep/2020:23:34:59 +0900] "GET /index.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
192.168.XX.XX - - [02/Sep/2020:23:34:59 +0900] "GET /index.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
192.168.XX.XX - - [02/Sep/2020:23:35:00 +0900] "GET /index.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
192.168.XX.XX - - [02/Sep/2020:23:35:00 +0900] "GET /index.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
192.168.XX.XX - - [02/Sep/2020:23:35:00 +0900] "GET /index.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
192.168.XX.XX - - [02/Sep/2020:23:35:00 +0900] "GET /index.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
192.168.XX.XX - - [02/Sep/2020:23:35:00 +0900] "GET /index.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
192.168.XX.XX - - [02/Sep/2020:23:35:00 +0900] "GET /index.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
192.168.XX.XX - - [02/Sep/2020:23:35:00 +0900] "GET /index.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
...
==========

分間のアクセスログを集計

  • コマンド
cat /var/log/httpd/access_log | cut -f4 -d' ' | cut -f3 -d'/' | cut -f2,3 -d':' | grep '23:' | uniq -c
==========
      5 23:31
    122 23:32
      1 23:33
    162 23:34
      8 23:35
     39 23:45
      1 23:46
     ↑    ↑
    件数  時間
==========
  • cut -f4 -d' '
$ cat /var/log/httpd/access_log | cut -f4 -d' '
[02/Sep/2020:23:35:00
[02/Sep/2020:23:35:41
[02/Sep/2020:23:45:40
[02/Sep/2020:23:45:41
[02/Sep/2020:23:45:41
[02/Sep/2020:23:45:41
[02/Sep/2020:23:45:41

cut -f4 -d' '
    -f : 切り出す位置を(デフォルト)タグ区切りのフィールドで指定
    -d : 区切り文字

区切り文字をスペース( )を指定 → -d' '
切り出す位置は④番目 → -f4
==========
①192.168.XX.XX ②- ③- ④[02/Sep/2020:23:35:00 +0900] ⑤"GET ⑥/index.html.....
==========
  • cut -f3 -d'/'
$ cat /var/log/httpd/access_log | cut -f4 -d' ' | cut -f3 -d'/'
2020:23:35:00
2020:23:35:41
2020:23:45:40
2020:23:45:41
2020:23:45:41
2020:23:45:41
2020:23:45:41

cut -f3 -d'/'
    -f : 切り出す位置を(デフォルト)タグ区切りのフィールドで指定
    -d : 区切り文字

区切り文字を/を指定 → -d'/'
切り出す位置は③番目 → -f3
==========
①[02/②Sep/③2020:23:35:00 +0900]
==========
  • cut -f2,3 -d':'
$ cat /var/log/httpd/access_log | cut -f4 -d' ' | cut -f3 -d'/' | cut -f2,3 -d':'
23:35
23:45
23:45
23:45
23:45
23:45
23:45
23:45

cut -f2,3 -d':'
    -f : 切り出す位置を(デフォルト)タグ区切りのフィールドで指定
    -d : 区切り文字

区切り文字を:を指定 → -d':'
切り出す位置は②番目(時)と③番目(分) → -f2,3
==========
①2020:②23:③35:④00 +0900]
==========
  • grep '23:'
$ cat /var/log/httpd/access_log | cut -f4 -d' ' | cut -f3 -d'/' | cut -f2,3 -d':' | grep '23:'
23:35
23:45
23:45
23:45
23:45
23:45
23:45
23:45

grep '23:'
    特定の文字列が含まれている行を表示する

もし、アクセスログに24:05などが含んでいた場合に23時台のみ、抽出するため。
  • uniq -c
$ cat /var/log/httpd/access_log | cut -f4 -d' ' | cut -f3 -d'/' | cut -f2,3 -d':' | grep '23:' | uniq -c
      5 23:31
    122 23:32
      1 23:33
    162 23:34
      8 23:35
     39 23:45
      1 23:46

uniq -c
    重複している行を取り除くコマンド
    -c : 各行数の前に出現回数を出力

出現回数を出力することで、アクセスログの件数を表示することができる

秒間のアクセスログを集計

  • コマンド
cat /var/log/httpd/access_log | cut -f4 -d' ' | cut -f3 -d'/' | cut -f2,3,4 -d':' | grep '23:' | uniq -c
==========
      6 23:34:54
      6 23:34:55
      5 23:34:56
      7 23:34:57
      6 23:34:58
      7 23:34:59
      7 23:35:00
      1 23:35:41
      1 23:45:40
      5 23:45:41
      5 23:45:42
      6 23:45:43
      5 23:45:44
      6 23:45:45
      7 23:45:46
      4 23:45:47
      1 23:46:32
      ↑     ↑
    件数   時間
==========
  • cut -f4 -d' '
$ cat /var/log/httpd/access_log | cut -f4 -d' '
[02/Sep/2020:23:35:00
[02/Sep/2020:23:35:41
[02/Sep/2020:23:45:40
[02/Sep/2020:23:45:41
[02/Sep/2020:23:45:41
[02/Sep/2020:23:45:41
[02/Sep/2020:23:45:41

cut -f4 -d' '
    -f : 切り出す位置を(デフォルト)タグ区切りのフィールドで指定
    -d : 区切り文字

区切り文字をスペース( )を指定 → -d' '
切り出す位置は④番目 → -f4
==========
①192.168.XX.XX ②- ③- ④[02/Sep/2020:23:35:00 +0900] ⑤"GET ⑥/index.html.....
==========
  • cut -f3 -d'/'
$ cat /var/log/httpd/access_log | cut -f4 -d' ' | cut -f3 -d'/'
2020:23:35:00
2020:23:35:41
2020:23:45:40
2020:23:45:41
2020:23:45:41
2020:23:45:41
2020:23:45:41

cut -f3 -d'/'
    -f : 切り出す位置を(デフォルト)タグ区切りのフィールドで指定
    -d : 区切り文字

区切り文字を/を指定 → -d'/'
切り出す位置は③番目 → -f3
==========
①[02/②Sep/③2020:23:35:00 +0900]
==========
  • cut -f2,3,4 -d':'
$ cat /var/log/httpd/access_log | cut -f4 -d' ' | cut -f3 -d'/' | cut -f2,3,4 -d':'
23:35:41
23:45:40
23:45:41
23:45:41
23:45:41
23:45:41
23:45:41
23:45:42
23:45:42

cut -f2,3,4 -d':'
    -f : 切り出す位置を(デフォルト)タグ区切りのフィールドで指定
    -d : 区切り文字

区切り文字を:を指定 → -d':'
切り出す位置は②番目(時)と③番目(分)と④番目(秒) → -f2,3,4
==========
①2020:②23:③35:④00
==========
  • grep '23:'
$ cat /var/log/httpd/access_log | cut -f4 -d' ' | cut -f3 -d'/' | cut -f2,3,4 -d':' | grep '23:'
23:35:41
23:45:40
23:45:41
23:45:41
23:45:41
23:45:41
23:45:41
23:45:42
23:45:42

grep '23:'
    特定の文字列が含まれている行を表示する

もし、アクセスログに24:05などが含んでいた場合に23時台のみ、抽出するため。
  • uniq -c
$ cat /var/log/httpd/access_log | cut -f4 -d' ' | cut -f3 -d'/' | cut -f2,3,4 -d':' | grep '23:' | uniq -c
      7 23:35:00
      1 23:35:41
      1 23:45:40
      5 23:45:41
      5 23:45:42
      6 23:45:43
      5 23:45:44
      6 23:45:45


uniq -c
    重複している行を取り除くコマンド
    -c : 各行数の前に出現回数を出力

出現回数を出力することで、アクセスログの件数を秒ごとに表示することができる
1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?