MakitSystem

メモリとCPUを出力するShellスクリプト

サーバーの負荷テストを行う際に、CPUやメモリの使用割合を記録するスクリプトです。

使用しているCPU割合

vmstatを利用してCPUの使用割合をログに出します。 下記をshellスクリプトとして作成し、実行すると指定のファイルパスにログが出力されます。

cpu.sh
#!/bin/bash

LOGFILE="/home/ec2-user/cpu.log" #ログファイルパス
TOTAL=0

while true
do
  VMSTAT=`vmstat 1 2 2> /dev/null | tail -1`;
  US=`echo ${VMSTAT} | awk '{print $13}'`;
  SY=`echo ${VMSTAT} | awk '{print $14}'`;
  TOTAL=`expr ${US} + ${SY}`
  echo "$(date +'%Y/%m/%d %H:%M:%S'),${TOTAL}" >> ${LOGFILE}
done

使用しているmemory割合

freeを利用してメモリの使用割合をログに出します。 下記をshellスクリプトとして作成し、実行すると指定のファイルパスにログが出力されます。

memory.sh
#!/bin/bash

LOG_FILE=/home/ec2-user/memory.log #ログファイルパス
INTERVAL=1 #出力間隔(s)

while true
do
  TOTAL=`free | grep "Mem:" | awk '{print $2}'`
  AVAILABLE=`free | grep "Mem:" | awk '{print $7}'`
  USED=`expr ${TOTAL} - ${AVAILABLE}`
  RATE=`expr 100 \* ${USED} / ${TOTAL}`
  echo "`date +'%Y/%m/%d %H:%M:%S'`,${RATE}" >> ${LOG_FILE}
  sleep ${INTERVAL}
done