railsログを分析し、応答率を計算



chmod +x analyse_log copy_log

 
(1)スクリプトをローカルにコピーする
スクリプトの内容は次のとおりです.
#!/usr/bin/env bash

LOG_PATH=/opt/logs
LOCAL_LOG_PATH=~/Documents/logs/8-15
PROJECTS=(m-cms-for-tudou-tv m-cms-for-tv)

if [[ $1 == "--debug" ]]; then
  set -x
fi

# Create local directories
for project in ${projects[@]}; do
  mkdir -p $SAVE_TO/$project
done

# Copy m-cms-for-tv
project=m-cms-for-tv
remote_log_dir=$LOG_PATH/$project

for server in {13..15}; do
  for port in {5200..5207}; do
    server_ip="10.xxx.32.$server"
    local_log_dir=$LOCAL_LOG_PATH/$project/$server_ip
    log_file="thin server (0.0.0.0:$port)_2015-08-15.log"

    if [[ ! -e $local_log_dir/"$log_file" ]]; then
      mkdir -p $local_log_dir
      scp $server_ip:$remote_log_dir/"'$log_file'" $local_log_dir/$port.log
    fi
  done
done

# Copy m-cms-for-todou-tv
project=m-cms-for-tudou-tv
remote_log_dir=$LOG_PATH/$project

for server in {13..15}; do
  for port in {3201..3208}; do
    server_ip="10.xxx.32.$server"
    local_log_dir=$LOCAL_LOG_PATH/$project/$server_ip
    log_file="thin server (0.0.0.0:$port)_2015-08-15.log"

    if [[ ! -e $local_log_dir/"$log_file" ]]; then
      mkdir -p $local_log_dir
      scp $server_ip:$remote_log_dir/"'$log_file'" $local_log_dir/$port.log
    fi
  done
done

project=ott-client-cms
remote_log_dir=/opt/app/ruby/$project/current/log

for server in {13..15}; do
  server_ip="10.xxx.32.$server"
  local_log_dir=$LOCAL_LOG_PATH/$project/$server_ip
  log_file="nginx.access.20150815.log"

  if [[ ! -e $local_log_dir/"$log_file" ]]; then
    mkdir -p $local_log_dir
    scp $server_ip:$remote_log_dir/$log_file $local_log_dir/$log_file
  fi
done

実行:
$./copy_log 

実行後にコピーされたログは次のとおりです.
thin server (0.0.0.0:5200)_2015-08-15.log                                                                           100%   37MB   4.1MB/s   00:09    
thin server (0.0.0.0:5201)_2015-08-15.log                                                                           100%   37MB   4.6MB/s   00:08    
thin server (0.0.0.0:5202)_2015-08-15.log                                                                           100%   37MB   4.6MB/s   00:08    
thin server (0.0.0.0:5203)_2015-08-15.log                                                                           100%   37MB   3.7MB/s   00:10    
thin server (0.0.0.0:5204)_2015-08-15.log                                                                           100%   37MB   4.6MB/s   00:08    
thin server (0.0.0.0:5205)_2015-08-15.log                                                                           100%   37MB   4.6MB/s   00:08    
thin server (0.0.0.0:5206)_2015-08-15.log                                                                           100%   37MB   2.6MB/s   00:14    
thin server (0.0.0.0:5207)_2015-08-15.log                                                                           100%   37MB   3.7MB/s   00:10    
thin server (0.0.0.0:5200)_2015-08-15.log                                                                           100%   37MB   6.2MB/s   00:06    
thin server (0.0.0.0:5201)_2015-08-15.log                                                                           100%   37MB   4.1MB/s   00:09    
thin server (0.0.0.0:5202)_2015-08-15.log                                                                           100%   37MB   3.7MB/s   00:10    
thin server (0.0.0.0:5203)_2015-08-15.log                                                                           100%   37MB   3.1MB/s   00:12    
thin server (0.0.0.0:5204)_2015-08-15.log                                                                           100%   37MB   3.4MB/s   00:11    
thin server (0.0.0.0:5205)_2015-08-15.log                                                                           100%   37MB   3.4MB/s   00:11    
thin server (0.0.0.0:5206)_2015-08-15.log                                                                           100%   37MB   2.7MB/s   00:14    
thin server (0.0.0.0:5207)_2015-08-15.log                                                                           100%   37MB   2.7MB/s   00:14    
thin server (0.0.0.0:5200)_2015-08-15.log                                                                           100%   37MB   3.4MB/s   00:11    
thin server (0.0.0.0:5201)_2015-08-15.log                                                                           100%   37MB   4.6MB/s   00:08    
thin server (0.0.0.0:5202)_2015-08-15.log                                                                           100%   37MB   4.6MB/s   00:08    
thin server (0.0.0.0:5203)_2015-08-15.log                                                                           100%   37MB   6.2MB/s   00:06    
thin server (0.0.0.0:5204)_2015-08-15.log                                                                           100%   37MB   3.1MB/s   00:12    
thin server (0.0.0.0:5205)_2015-08-15.log                                                                           100%   37MB   3.4MB/s   00:11    
thin server (0.0.0.0:5206)_2015-08-15.log                                                                           100%   37MB   4.7MB/s   00:08    
thin server (0.0.0.0:5207)_2015-08-15.log                                                                           100%   37MB   3.7MB/s   00:10    
thin server (0.0.0.0:3201)_2015-08-15.log                                                                           100%   64KB  63.7KB/s   00:00    
thin server (0.0.0.0:3202)_2015-08-15.log                                                                           100%   63KB  63.2KB/s   00:00    
thin server (0.0.0.0:3203)_2015-08-15.log                                                                           100%   69KB  68.9KB/s   00:00    
thin server (0.0.0.0:3204)_2015-08-15.log                                                                           100%   67KB  66.9KB/s   00:00    
thin server (0.0.0.0:3205)_2015-08-15.log                                                                           100%   55KB  55.5KB/s   00:00    
thin server (0.0.0.0:3206)_2015-08-15.log                                                                           100%   63KB  63.0KB/s   00:00    
thin server (0.0.0.0:3207)_2015-08-15.log                                                                           100%   57KB  56.7KB/s   00:00    
thin server (0.0.0.0:3208)_2015-08-15.log                                                                           100%   60KB  60.4KB/s   00:00    
scp: /opt/logs/m-cms-for-tudou-tv/thin server (0.0.0.0:3201)_2015-08-15.log: No such file or directory
thin server (0.0.0.0:3202)_2015-08-15.log                                                                           100%   51KB  50.7KB/s   00:00    
thin server (0.0.0.0:3203)_2015-08-15.log                                                                           100%   51KB  50.6KB/s   00:00    
thin server (0.0.0.0:3204)_2015-08-15.log                                                                           100%   52KB  52.5KB/s   00:00    
thin server (0.0.0.0:3205)_2015-08-15.log                                                                           100%   52KB  52.0KB/s   00:00    
thin server (0.0.0.0:3206)_2015-08-15.log                                                                           100%   49KB  49.1KB/s   00:00    
thin server (0.0.0.0:3207)_2015-08-15.log                                                                           100%   52KB  52.3KB/s   00:00    
thin server (0.0.0.0:3208)_2015-08-15.log                                                                           100%   52KB  52.4KB/s   00:00    
thin server (0.0.0.0:3201)_2015-08-15.log                                                                           100%   45KB  44.9KB/s   00:00    
thin server (0.0.0.0:3202)_2015-08-15.log                                                                           100%   44KB  43.7KB/s   00:00    
thin server (0.0.0.0:3203)_2015-08-15.log                                                                           100%   46KB  45.6KB/s   00:00    
thin server (0.0.0.0:3204)_2015-08-15.log                                                                           100%   46KB  46.1KB/s   00:00    
thin server (0.0.0.0:3205)_2015-08-15.log                                                                           100%   43KB  43.4KB/s   00:00    
thin server (0.0.0.0:3206)_2015-08-15.log                                                                           100%   46KB  45.7KB/s   00:00    
thin server (0.0.0.0:3207)_2015-08-15.log                                                                           100%   44KB  44.5KB/s   00:00    
thin server (0.0.0.0:3208)_2015-08-15.log                                                                           100%   44KB  43.6KB/s   00:00    
nginx.access.20150815.log                                                                                           100%   81MB   4.3MB/s   00:19    
nginx.access.20150815.log                                                                                           100%   81MB   4.1MB/s   00:20    
nginx.access.20150815.log                                                                                           100%   81MB   2.7MB/s   00:30    

 
 
(2)分析ログ
分析ログのスクリプトは次のとおりです.
#!/usr/bin/env bash

if [[ $1 == "--debug" ]]; then
  set -x
fi

LOG_PATH=~/Documents/logs/8-15
TMP_FILE=/tmp/analyse_cat.log

tv() {
  project=$1
  log_files=$LOG_PATH/$project/**/*.log

  for hour in {15..16}; do
    for min in {0..5}; do
      if [[ $hour -lt 10  ]]; then
        str="2015-08-15 0$hour:$min"
      else
        str="2015-08-15 $hour:$min"
      fi  

      request_count=$(grep "$str" $log_files | wc -l)
      response_count=$(grep "^$hour:$min" $log_files | grep Completed | wc -l)
      grep "^$hour:$min" $log_files | grep Completed > $TMP_FILE

      echo "------- $str      : $request_count,   :$response_count"
      echo ''
      cut -d ' ' -f4 $TMP_FILE | sort -n | uniq -c
      # echo '    :'
      # cut -d ' ' -f7 $TMP_FILE | sort -n | uniq -c | sort -nr
    done
  done
}

echo '*** Youku TV ***'
tv m-cms-for-tv

echo '*** Tubou TV ***'
tv m-cms-for-tudou-tv

実行
$ ./analyse_log

実行後の結果
~/Desktop:$ ./analyse_log 
*** Youku TV ***
------- 2015-08-15 15:0      : 10934,   :1093410934 200
------- 2015-08-15 15:1      : 10908,   :1090810908 200
------- 2015-08-15 15:2      : 10903,   :1090310903 200
------- 2015-08-15 15:3      : 7184,   :71607160 200
------- 2015-08-15 15:4      : 552,   :0
   :
------- 2015-08-15 15:5      : 194063,   :193978193978 200
------- 2015-08-15 16:0      : 142234,   :142233142233 200
------- 2015-08-15 16:1      : 195244,   :195244195244 200
------- 2015-08-15 16:2      : 233320,   :233342233342 200
------- 2015-08-15 16:3      : 12787,   :1278812788 200
------- 2015-08-15 16:4      : 11341,   :1134111341 200
------- 2015-08-15 16:5      : 12470,   :1247012470 200
*** Tubou TV ***
------- 2015-08-15 15:0      : 5,   :55 200
------- 2015-08-15 15:1      : 3,   :33 200
------- 2015-08-15 15:2      : 39,   :3939 200
------- 2015-08-15 15:3      : 11,   :33 200
------- 2015-08-15 15:4      : 31,   :0
   :
------- 2015-08-15 15:5      : 1315,   :12881288 200
------- 2015-08-15 16:0      : 9,   :99 200
------- 2015-08-15 16:1      : 2,   :22 200
------- 2015-08-15 16:2      : 39,   :3939 200
------- 2015-08-15 16:3      : 10,   :1010 200
------- 2015-08-15 16:4      : 2,   :22 200
------- 2015-08-15 16:5      : 15,   :1515 200