Graphing system activity with SAG

In today's column, we're going to look at a script that turns sar data into useful little performance graphs using sag, the system activity grapher. The sag utility reads data from sar's binary files and, provided with a graphical terminal, creates a line chart showing CPU usage or some other sar data.

To use this script, graciously provided by Andrew Hay ("Sandwich Maker" to me), I started an X client on my laptop, logged in to one of my servers and invoked the script. A few seconds later, a graph of today's CPU usage opened on my screen.

Both sar and sag go a lot further back than I had suspected. While I began using sar in some release of SunOS 2.x, the commands may date back as far as AT&T System V.

#!/usr/bin/ksh -p
# xsag - graph sar data on screen
# 20041001

[ -n "$1" ] &&
       typeset -Z2 DAY=$(($(date +%d) - $1))
       (( DAY < 1 )) &&
               for LASTDAY in 31 30 29 28
                       [ -f /var/adm/sa/sa$LASTDAY ] &&
       SAGFILE="-f /var/adm/sa/sa${DAY}"

cd /tmp

at now <<--
toolwait xterm -t -n "SAG day $DAY" -T "System Activity Graph \
 ${DAY:+- day $DAY }" -e sh -c "sag -T tek -s 00:00 -e 24:00 $SAGFILE; \
 PS1=''; export PS1; biff n 2>`tty` \
 stty 0:1805:f003f:0:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff; \
 exec nice -19 sh -n"

Cut and paste the script into a file and make it executable. Much of the text in the xterm line is there to null out the tty and shell control characters while the final sh holds the xterm open after sag has completed its work so that you have a chance to look at the graph.

I also had to make sure that biff (/usr/ucb/biff) was on my search path.

Thanks to Sandwich Maker for sharing his script.

This article is published as part of the IDG Contributor Network. Want to Join?

Computerworld's IT Salary Survey 2017 results
Shop Tech Products at Amazon