Changes between Version 2 and Version 3 of ApacheLog解析


Ignore:
Timestamp:
Nov 9, 2016, 10:20:57 PM (7 years ago)
Author:
admin
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ApacheLog解析

    v2 v3  
    11[wiki:WikiStart 戻る]
     2
     3
     4= 時間単位別リクエスト数(日別、時間別、分別、秒別)=
     5
     6{{{
     7grep 'May/2016' /var/log/httpd/access_log | awk '{print $4}' | cut -b 2-12 | sort | uniq -c          # 日別
     8grep '01/May/2016' /var/log/httpd/access_log | awk '{print $4}' | cut -b 2-15 | sort | uniq -c       # 時間別
     9grep '01/May/2016:01' /var/log/httpd/access_log | awk '{print $4}' | cut -b 2-18 | sort | uniq -c    # 分別
     10grep '01/May/2016:01:00' /var/log/httpd/access_log | awk '{print $4}' | cut -b 2-21 | sort | uniq -c # 秒別
     11}}}
     12
     13項目別リクエスト数(リクエスト別、UA別、ブラウザ別、リファラー別、IP別)
     14
     15{{{
     16grep '01/May/2016:01' /var/log/httpd/access_log | awk -F \" '{print $2}' | awk '{print $2}' | sort | uniq -c | sort -nr # リクエスト別
     17grep '01/May/2016:01' /var/log/httpd/access_log | awk -F \" '{print $6}' | sort | uniq -c | sort -nr | head -n 5        # UserAgent別
     18for UA in MSIE Firefox Chrome Safari; do COUNT=`grep '01/May/2016:01' /var/log/httpd/access_log | grep "$UA" | wc -l`; echo "$UA: $COUNT"; done
     19grep '01/May/2016:01' /var/log/httpd/access_log | awk -F \" '{print $4}' | sort | uniq -c | sort -nr # リファラー別
     20grep '01/May/2016:01' /var/log/httpd/access_log | cut -d " " -f 1 | sort | uniq -c                   # IP別
     21}}}
     22
     23静的ファイルの除外
     24
     25{{{
     26 | grep -ive "GET /.*\.\(css\|js\|jpg\|gif\|png\|swf\|ico\)\ HTTP"
     27}}}
     28
     29
     30指定キーワードのリクエスト総数
     31
     32{{{
     33grep '01/May/2016:01' /var/log/httpd/access_log | grep -c 'favicon.ico'
     34}}}
     35
     36時間単位別リクエスト数
     37時間単位別リクエスト数を集計するために、まず grep コマンドで日時などのテキストで全体の行を絞り込んで取得、 awk コマンドで4番目の日時データを切り出し、さらに特定の時間単位で集計するために cut コマンドで範囲を指定して切り出し、sort コマンドで時間順に並び替えてから、最後に uniq コマンドで集計して終わり。
     38
     39日別リクエスト数
     40
     41{{{
     42grep 'Feb/2016' access_log | awk '{print $4}' | cut -b 2-12 | sort | uniq -c
     43   5960 01/Feb/2016
     44   7493 02/Feb/2016
     45   7023 03/Feb/2016
     46   7292 04/Feb/2016
     47   7144 05/Feb/2016
     48grep で年月 (ex.Feb/2016) を、cut に 2-12 を指定してやると日別のアクセス数が出力できる。
     49}}}
     50
     51
     52時間別リクエスト数
     53
     54{{{
     55grep 01/Feb/2016 access_log | awk '{print $4}' | cut -b 2-15 | sort | uniq -c
     56    149 01/Feb/2016:00
     57    384 01/Feb/2016:01
     58    465 01/Feb/2016:02
     59    328 01/Feb/2016:03
     60    272 01/Feb/2016:04
     61grep で年月日 (ex.01/Feb/2016) を、cut に 2-15 を指定してやると時間別のアクセス数が出力できる。
     62}}}
     63
     64分別リクエスト数
     65
     66{{{
     67grep 01/Feb/2016:01 access_log | awk '{print $4}' | cut -b 2-18 | sort | uniq -c
     68      7 01/Feb/2016:01:00
     69     13 01/Feb/2016:01:01
     70      6 01/Feb/2016:01:02
     71      6 01/Feb/2016:01:03
     72      2 01/Feb/2016:01:04
     73grep で年月日と時 (ex.01/Feb/2016:01) を、cut に 2-18 を指定してやると分別のアクセス数が出力できる。
     74
     75}}}
     76
     77
     78秒別リクエスト数
     79
     80{{{
     81grep 01/Feb/2016:01:00 access_log | awk '{print $4}' | cut -b 2-21 | sort | uniq -c
     82      1 01/Feb/2016:01:00:00
     83      2 01/Feb/2016:01:00:10
     84      1 01/Feb/2016:01:00:12
     85      1 01/Feb/2016:01:00:23
     86      2 01/Feb/2016:01:00:25
     87
     88grep で年月日と時分 (ex.01/Feb/2016:01:00) を、cut に 2-21 を指定してやると秒別のアクセス数が出力できる。
     89}}}
     90
     91項目別リクエスト数
     92
     93リクエスト別アクセス数
     94
     95{{{
     96grep 01/Feb/2016:01 access_log | awk -F '"' '{print $2}' | awk '{print $2}' | sort | uniq -c | sort -n -r | head -n 5
     97     69 /
     98     48 /en/
     99     35 /css/base.css
     100     23 /favicon.ico
     101     23 /img/example.jpg
     102
     103grep に絞り込みたい値を渡してやると、リクエスト別のアクセス数が出力できる。
     104}}}
     105
     106上記の例では年月日と時 (01/Feb/2016:01) を渡しているので、2016年2月1日1〜2時のリクエスト別アクセス数ということになる。
     107
     108ユーザーエージェント別リクエスト数
     109{{{
     110grep 01/Feb/2016:01 access_log | awk -F '"' '{print $6}' | sort | uniq -c | sort -n -r | head -n 5
     111     20 Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13D15 Safari/601.1
     112     19 Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; GT-N7100 Build/KOT49H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
     113     18 Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
     114     17 Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0
     115     17 Mozilla/5.0 (Linux; Android 5.0; Lenovo A7000-a Build/LRX21M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.95 Mobile Safari/537.36
     116}}}
     117
     118ブラウザ別リクエスト数
     119
     120{{{
     121for UA in MSIE Firefox Chrome Safari; do COUNT=`grep '01/Feb/2016:01' /var/log/httpd/access_log | grep "$UA" | wc -l`; echo "$UA: $COUNT"; done
     122MSIE: 33
     123Firefox: 398
     124Chrome: 1163
     125Safari: 1996
     126その他
     127}}}
     128
     129
     130圧縮されたログファイルのアクセス数
     131
     132{{{
     133ls /var/log/httpd/
     134access_log        access_log.4.gz   error_log        error_log.4.gz
     135access_log.1      access_log.5.gz   error_log.1      error_log.5.gz
     136access_log.2.gz   access_log.6.gz   error_log.2.gz   error_log.6.gz
     137access_log.3.gz   access_log.7.gz   error_log.3.gz   error_log.7.gz
     138zgrep 01/Feb/2016 /var/log/httpd/access_log* | awk -F '"' '{print $2}' | awk '{print $2}' | sort | uniq -c | sort -n -r
     139     69 /
     140     48 /en/
     141     35 /css/base.css
     142     23 /favicon.ico
     143}}}