Unix系サーバでCPUやメモリ、ネットワークなどのリソースログを出力する
Linux上で使用されるコマンド(top、vmstat、netstat)でプロセスごとのCPU・使用メモリなど(top)、システム全体のそれ(vmstat)、及びネットワークトラフィック(netstat)をログに出力する。
topコマンドのログ
#/bin/sh # check hoge.pid file if [ -e ${HOME}/bin/hoge.pid ] then echo Program hoge is not running. exit 1 fi LOGFILE=${HOME}/performance/log/topinfo.log INTERVAL=$1 if [ -x $INTERVAL ] then # Set Default Interval time (60sec) INTERVAL=60 fi # check logger's pid file if [ -e ./topinfo.pid ] then echo Already running. exit 1 fi echo $$ > topinfo.pid while [ ! -e ./topinfo_stop ] do PROGRAM_PID=`cat ${HOME}/bin/hoge.pid` TOPINFO=`top -b -n 1 -p $PROGRAM_PID` TOPINFO=`echo $TOPINFO | awk '{print $27$28$29$30$31$32$33$34","$36","$38","$40","$42","$45","$47","$49","$51","$67","$68","$69","$70","$71","$72","$73","$74","$75}'` echo `date "+%Y/%m/%d %H:%M:%S"`,$TOPINFO >> $LOGFILE sleep $INTERVAL done rm -f ./topinfo.pid
vmstatのログ
#/bin/sh LOGFILE=${HOME}/performance/log/vmstat.log INTERVAL=$1 if [ -x $INTERVAL ] then # Set Default Interval time (5 sec) INTERVAL=5 fi if [ -e ./vmstat.pid ] then echo Already running. exit 1 fi echo $$ > vmstat.pid while [ ! -e ./vmstat_stop ] do # SRVSTAT=`vmstat 2 2 | tail -1 | awk '{printf $4","$7","$8","$13","$14","$15","$16}' ` SRVSTAT=`vmstat $INTERVAL 2 | tail -1 | awk '{printf ","$1","$2","$3","$4","$5","$6","$7","$8","$9","$10","$11","$12","$13","$14","$15","$16}' ` echo `date "+%Y/%m/%d %H:%M:%S"` $SRVSTAT >> $LOGFILE done rm -f ./vmstat.pid
netstatのログ
#/bin/sh LOGFILE=/home/YqP5Bu8z/performance/log/ntstat.log INTERFACE=$1 INTERVAL=$2 if [ -x $INTERFACE ] then echo Usage: ntstat_logger.sh interface [interval] exit 1 fi if [ -x $INTERVAL ] then # Set Default Interval time (5sec) INTERVAL=5 fi if [ -e ./ntstat.pid ] then echo Already running. exit 1 fi echo $$ > ntstat.pid while [ ! -e ./ntstat_stop ] do NTSTAT=`netstat -I$INTERFACE | tail -1 | awk '{printf ","$1","$2","$3","$4","$5","$6","$7","$8","$9","$10","$11","$12}' ` echo `date "+%Y/%m/%d %H:%M:%S"` $NTSTAT >> $LOGFILE sleep $INTERVAL done rm -f ./ntstat.pid