Graphing atop logs
A shell script to plot the three CPL load average fields from a list of atop log files.
#!/bin/sh -u
# $0 [list of atop logfiles to plot]
# Plot the three CPL load average numbers from a list of atop log files.
# Uses a default atop log file if no arguments given.
# -Ian! D. Allen - [email protected] - www.idallen.com
if [ $# -eq 0 ] ; then
set -- '/var/log/atop.log'
fi
tmp=/tmp/atop$$
rm -f $tmp
trap "rm -f $tmp" 0 1 2
title=''
for log do
if [ ! -s "$log" -o ! -r "$log" ] ; then
echo 1>&2 "$0: $log: empty or unreadable - skipping"
continue
fi
atop -PCPL -r "$log" >>$tmp || exit $?
title="$title ${log##*/}"
done
if [ ! -s "$tmp" ] ; then
echo 1>&2 "$0: No files plotted"
exit 1
fi
len=${#title}
if [ $len -le 80 ] ; then
title="Three CPL load averages from atop -PCPL\n$title"
else
title="Three CPL load averages from atop -PCPL\n$(printf "%.77s..." "$title")"
fi
gnuplot -persist <<EOF
set xdata time
set timefmt '%Y/%m/%d %H:%M:%S'
set format x "%Y\n%m/%d\n%H:%M"
set grid
set title noenhanced
set title "$title"
plot \
"$tmp" using 4:8 notitle 'L1+' with points lc rgbcolor 'blue', \
"$tmp" using 4:8 title 'L1+' smooth csplines lc rgbcolor 'blue', \
"$tmp" using 4:9 notitle 'L2*' with points lc rgbcolor 'green', \
"$tmp" using 4:9 title 'L2*' smooth csplines lc rgbcolor 'green', \
"$tmp" using 4:10 notitle 'L3x'with points lc rgbcolor 'red', \
"$tmp" using 4:10 title 'L3x' smooth csplines lc rgbcolor 'red', \
;
EOF