[wiki:WikiStart 戻る] = 時間単位別リクエスト数(日別、時間別、分別、秒別)= {{{ grep 'May/2016' /var/log/httpd/access_log | awk '{print $4}' | cut -b 2-12 | sort | uniq -c # 日別 grep '01/May/2016' /var/log/httpd/access_log | awk '{print $4}' | cut -b 2-15 | sort | uniq -c # 時間別 grep '01/May/2016:01' /var/log/httpd/access_log | awk '{print $4}' | cut -b 2-18 | sort | uniq -c # 分別 grep '01/May/2016:01:00' /var/log/httpd/access_log | awk '{print $4}' | cut -b 2-21 | sort | uniq -c # 秒別 }}} 項目別リクエスト数(リクエスト別、UA別、ブラウザ別、リファラー別、IP別) {{{ grep '01/May/2016:01' /var/log/httpd/access_log | awk -F \" '{print $2}' | awk '{print $2}' | sort | uniq -c | sort -nr # リクエスト別 grep '01/May/2016:01' /var/log/httpd/access_log | awk -F \" '{print $6}' | sort | uniq -c | sort -nr | head -n 5 # UserAgent別 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 grep '01/May/2016:01' /var/log/httpd/access_log | awk -F \" '{print $4}' | sort | uniq -c | sort -nr # リファラー別 grep '01/May/2016:01' /var/log/httpd/access_log | cut -d " " -f 1 | sort | uniq -c # IP別 }}} 静的ファイルの除外 {{{ | grep -ive "GET /.*\.\(css\|js\|jpg\|gif\|png\|swf\|ico\)\ HTTP" }}} 指定キーワードのリクエスト総数 {{{ grep '01/May/2016:01' /var/log/httpd/access_log | grep -c 'favicon.ico' }}} 時間単位別リクエスト数 時間単位別リクエスト数を集計するために、まず grep コマンドで日時などのテキストで全体の行を絞り込んで取得、 awk コマンドで4番目の日時データを切り出し、さらに特定の時間単位で集計するために cut コマンドで範囲を指定して切り出し、sort コマンドで時間順に並び替えてから、最後に uniq コマンドで集計して終わり。 日別リクエスト数 {{{ grep 'Feb/2016' access_log | awk '{print $4}' | cut -b 2-12 | sort | uniq -c 5960 01/Feb/2016 7493 02/Feb/2016 7023 03/Feb/2016 7292 04/Feb/2016 7144 05/Feb/2016 grep で年月 (ex.Feb/2016) を、cut に 2-12 を指定してやると日別のアクセス数が出力できる。 }}} 時間別リクエスト数 {{{ grep 01/Feb/2016 access_log | awk '{print $4}' | cut -b 2-15 | sort | uniq -c 149 01/Feb/2016:00 384 01/Feb/2016:01 465 01/Feb/2016:02 328 01/Feb/2016:03 272 01/Feb/2016:04 grep で年月日 (ex.01/Feb/2016) を、cut に 2-15 を指定してやると時間別のアクセス数が出力できる。 }}} 分別リクエスト数 {{{ grep 01/Feb/2016:01 access_log | awk '{print $4}' | cut -b 2-18 | sort | uniq -c 7 01/Feb/2016:01:00 13 01/Feb/2016:01:01 6 01/Feb/2016:01:02 6 01/Feb/2016:01:03 2 01/Feb/2016:01:04 grep で年月日と時 (ex.01/Feb/2016:01) を、cut に 2-18 を指定してやると分別のアクセス数が出力できる。 }}} 秒別リクエスト数 {{{ grep 01/Feb/2016:01:00 access_log | awk '{print $4}' | cut -b 2-21 | sort | uniq -c 1 01/Feb/2016:01:00:00 2 01/Feb/2016:01:00:10 1 01/Feb/2016:01:00:12 1 01/Feb/2016:01:00:23 2 01/Feb/2016:01:00:25 grep で年月日と時分 (ex.01/Feb/2016:01:00) を、cut に 2-21 を指定してやると秒別のアクセス数が出力できる。 }}} 項目別リクエスト数 リクエスト別アクセス数 {{{ grep 01/Feb/2016:01 access_log | awk -F '"' '{print $2}' | awk '{print $2}' | sort | uniq -c | sort -n -r | head -n 5 69 / 48 /en/ 35 /css/base.css 23 /favicon.ico 23 /img/example.jpg grep に絞り込みたい値を渡してやると、リクエスト別のアクセス数が出力できる。 }}} 上記の例では年月日と時 (01/Feb/2016:01) を渡しているので、2016年2月1日1〜2時のリクエスト別アクセス数ということになる。 ユーザーエージェント別リクエスト数 {{{ grep 01/Feb/2016:01 access_log | awk -F '"' '{print $6}' | sort | uniq -c | sort -n -r | head -n 5 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 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 18 Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko 17 Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0 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 }}} ブラウザ別リクエスト数 {{{ 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 MSIE: 33 Firefox: 398 Chrome: 1163 Safari: 1996 その他 }}} 圧縮されたログファイルのアクセス数 {{{ ls /var/log/httpd/ access_log access_log.4.gz error_log error_log.4.gz access_log.1 access_log.5.gz error_log.1 error_log.5.gz access_log.2.gz access_log.6.gz error_log.2.gz error_log.6.gz access_log.3.gz access_log.7.gz error_log.3.gz error_log.7.gz zgrep 01/Feb/2016 /var/log/httpd/access_log* | awk -F '"' '{print $2}' | awk '{print $2}' | sort | uniq -c | sort -n -r 69 / 48 /en/ 35 /css/base.css 23 /favicon.ico }}} == 1週間分の総接続端末台数 == {{{ cd /home/$1/ sort 20161122/logMain/access_log.1 | awk '{ print $1 }' | uniq | wc -l sort 20161122/logMain/access_log.1 | awk '{ print $1 }' | uniq | wc -l sort 20161123/logMain/access_log.1 | awk '{ print $1 }' | uniq | wc -l sort 20161121/logMain/access_log.1 | awk '{ print $1 }' | uniq | wc -l sort 20161124/logMain/access_log.1 | awk '{ print $1 }' | uniq | wc -l sort 20161125/logMain/access_log.1 | awk '{ print $1 }' | uniq | wc -l sort 20161126/logMain/access_log.1 | awk '{ print $1 }' | uniq | wc -l sort 20161127/logMain/access_log.1 | awk '{ print $1 }' | uniq | wc -l }}} == 1週間分の秒間最大接続台数 == {{{ cd /home/$1/ awk '{ print $4 }' 20161121/logMain/access_log.1 | sort | uniq -c | sort -r -n | head awk '{ print $4 }' 20161122/logMain/access_log.1 | sort | uniq -c | sort -r -n | head awk '{ print $4 }' 20161123/logMain/access_log.1 | sort | uniq -c | sort -r -n | head awk '{ print $4 }' 20161124/logMain/access_log.1 | sort | uniq -c | sort -r -n | head awk '{ print $4 }' 20161125/logMain/access_log.1 | sort | uniq -c | sort -r -n | head awk '{ print $4 }' 20161126/logMain/access_log.1 | sort | uniq -c | sort -r -n | head awk '{ print $4 }' 20161127/logMain/access_log.1 | sort | uniq -c | sort -r -n | head }}}