■スクリプトはこちら。
sysstatで取った昨日のログをCSV化する。
$ w3m -dump https://raw.github.com/labunix/sa_report/master/checkclient.sh
for list in CPU.tmp MEM.tmp DISK.tmp JOIN1.tmp JOIN2.tmp;do
if [ -f "$list" ];then
echo "Error,Found $list" >&2
exit 1
fi
done
TARGET="/var/log/sysstat/sa`date '+%d' --date '1 days ago'`"
MYDAYS="`date '+%Y/%m/%d' --date '1 days ago'`"
LOGDAY="`date '+%Y%m%d' --date '1 days ago'`"
env LANG=C sar -u -f $TARGET | \
grep "^[0-9][0-9]\:" | \
grep -v "START" | \
sed s/%//g | \
awk '{if($8=="idle") MSG=$8; else print $1","100-$8} \
END{print "CPU USED(%)=100-"MSG > "/dev/fd/2"}' > CPU.tmp
env LANG=C sar -r -f $TARGET | \
grep "^[0-9][0-9]\:" | \
grep -v "START" | \
sed s/%//g | \
awk '{if($4=="memused") MSG=$4; else print $1","$4} \
END{print "MEM USED(%)="MSG > "/dev/fd/2"}' > MEM.tmp
env LANG=C sar -d -f $TARGET | \
grep "^[0-9][0-9]\:" | \
grep -v "START" | \
sed s/%//g | \
awk '{if($10=="util") MSG=$10; else print $1","$10} \
END{print "DISK WAIT(%)="MSG > "/dev/fd/2"}' > DISK.tmp
env LANG=C netstat -i | \
grep -v Kernel | \
awk '{print $1,$5,$6,$9,$10}' | \
awk '{if($1!="0" && $2!="0" && $3!="0")print}'
if [ -f CPU.tmp ];then
if [ -f MEM.tmp ];then
if [ -f DISK.tmp ];then
join -t, CPU.tmp MEM.tmp > JOIN1.tmp
join -t, JOIN1.tmp DISK.tmp | sed s%^%"$MYDAYS,"%g | \
sed s/"\:[0-9][0-9],"/","/g > JOIN2.tmp
echo "date,Time,CPU,MEM,Disk" | \
cat - JOIN2.tmp > `hostname -s`_Perf_$LOGDAY.csv
rm -f JOIN[12].tmp DISK.tmp MEM.tmp CPU.tmp
fi
fi
fi
unset TARGET MYDAYS LOGDAY list
exit 0
■以下のようなCSVログが出る。
$ cat dummy-host_Perf_20130422.csv
2013/04/22,03:21,0.32,40.81,0.17
2013/04/22,03:36,0.29,40.81,0.09
2013/04/22,03:51,0.29,40.82,0.09
2013/04/22,04:06,2.17,40.82,0.03
2013/04/22,04:21,0.25,40.85,0.06
2013/04/22,04:36,0.21,40.87,0.00