| 2 | |
| 3 | |
| 4 | = 時間単位別リクエスト数(日別、時間別、分別、秒別)= |
| 5 | |
| 6 | {{{ |
| 7 | grep 'May/2016' /var/log/httpd/access_log | awk '{print $4}' | cut -b 2-12 | sort | uniq -c # 日別 |
| 8 | grep '01/May/2016' /var/log/httpd/access_log | awk '{print $4}' | cut -b 2-15 | sort | uniq -c # 時間別 |
| 9 | grep '01/May/2016:01' /var/log/httpd/access_log | awk '{print $4}' | cut -b 2-18 | sort | uniq -c # 分別 |
| 10 | grep '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 | {{{ |
| 16 | grep '01/May/2016:01' /var/log/httpd/access_log | awk -F \" '{print $2}' | awk '{print $2}' | sort | uniq -c | sort -nr # リクエスト別 |
| 17 | grep '01/May/2016:01' /var/log/httpd/access_log | awk -F \" '{print $6}' | sort | uniq -c | sort -nr | head -n 5 # UserAgent別 |
| 18 | for 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 |
| 19 | grep '01/May/2016:01' /var/log/httpd/access_log | awk -F \" '{print $4}' | sort | uniq -c | sort -nr # リファラー別 |
| 20 | grep '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 | {{{ |
| 33 | grep '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 | {{{ |
| 42 | grep '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 |
| 48 | grep で年月 (ex.Feb/2016) を、cut に 2-12 を指定してやると日別のアクセス数が出力できる。 |
| 49 | }}} |
| 50 | |
| 51 | |
| 52 | 時間別リクエスト数 |
| 53 | |
| 54 | {{{ |
| 55 | grep 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 |
| 61 | grep で年月日 (ex.01/Feb/2016) を、cut に 2-15 を指定してやると時間別のアクセス数が出力できる。 |
| 62 | }}} |
| 63 | |
| 64 | 分別リクエスト数 |
| 65 | |
| 66 | {{{ |
| 67 | grep 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 |
| 73 | grep で年月日と時 (ex.01/Feb/2016:01) を、cut に 2-18 を指定してやると分別のアクセス数が出力できる。 |
| 74 | |
| 75 | }}} |
| 76 | |
| 77 | |
| 78 | 秒別リクエスト数 |
| 79 | |
| 80 | {{{ |
| 81 | grep 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 | |
| 88 | grep で年月日と時分 (ex.01/Feb/2016:01:00) を、cut に 2-21 を指定してやると秒別のアクセス数が出力できる。 |
| 89 | }}} |
| 90 | |
| 91 | 項目別リクエスト数 |
| 92 | |
| 93 | リクエスト別アクセス数 |
| 94 | |
| 95 | {{{ |
| 96 | grep 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 | |
| 103 | grep に絞り込みたい値を渡してやると、リクエスト別のアクセス数が出力できる。 |
| 104 | }}} |
| 105 | |
| 106 | 上記の例では年月日と時 (01/Feb/2016:01) を渡しているので、2016年2月1日1〜2時のリクエスト別アクセス数ということになる。 |
| 107 | |
| 108 | ユーザーエージェント別リクエスト数 |
| 109 | {{{ |
| 110 | grep 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 | {{{ |
| 121 | for 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 |
| 122 | MSIE: 33 |
| 123 | Firefox: 398 |
| 124 | Chrome: 1163 |
| 125 | Safari: 1996 |
| 126 | その他 |
| 127 | }}} |
| 128 | |
| 129 | |
| 130 | 圧縮されたログファイルのアクセス数 |
| 131 | |
| 132 | {{{ |
| 133 | ls /var/log/httpd/ |
| 134 | access_log access_log.4.gz error_log error_log.4.gz |
| 135 | access_log.1 access_log.5.gz error_log.1 error_log.5.gz |
| 136 | access_log.2.gz access_log.6.gz error_log.2.gz error_log.6.gz |
| 137 | access_log.3.gz access_log.7.gz error_log.3.gz error_log.7.gz |
| 138 | zgrep 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 | }}} |