1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #!/bin/bash
- #
- # This script polls gnunet-stats repeatedly to create statistics plots.
- # Use 'collect' to collect statistics and 'plot' to plot whats been
- # collected. All plots will be written to $STATDIR as separate .png files.
- #
- # WARNING: calling 'collect' will delete all files in $STATDIR.
- #
- # Requires: gnuplot
- #
- # Note: gnuplot syntax has changed across versions. This
- # script perhaps will not produce color images with older gnuplots.
- # The script should work atleast with gnuplot 3.8k patchlevel 1.
- #
- SLEEP=120
- GNUNET=$HOME/
- STATDIR=$GNUNET/stats
- IMAGEVIEWER='display'
- TMP=/tmp/.gnuplot_error
- ##########################################################################
- mkdir -p $STATDIR
- case "$1" in
- collect)
- rm -f $STATDIR/*
-
- STARTTIME=`date +%s`
- IFS=":"
-
- while true; do
- NOW=`date +%s`
- RELAT=$[$NOW-$STARTTIME]
- gnunet-statistics | while read KEY VALUE; do
- KEY=`echo $KEY | tr / .`
- # Collect stats of previous round
- if [ -e "$STATDIR/$KEY.dat" ]; then
- PREV=`tail --lines=1 "$STATDIR/$KEY.dat" | sed -e "s/.* //g"`
- else
- PREV=$VALUE
- fi
- # Write new stats
- echo $RELAT $VALUE >>"$STATDIR/$KEY.dat"
- echo $RELAT $PREV $VALUE >>"$STATDIR/$KEY.diff"
-
- done
- sleep $SLEEP
- done
- ;;
- plot)
- # Plot incremental
- ls -1 $STATDIR/*.dat | while read FILENAME; do
- BASENAME=`basename "$FILENAME" | sed -e "s/ *\..*//g"`
- echo "set terminal png;set output '$FILENAME.png';set title '$BASENAME - incr';plot '$FILENAME' using (\$1/60):(\$2) title '' with lines;" | nice gnuplot 2> $TMP
- EC=`cat $TMP | grep "empty" | grep "Warning" | wc -l`
- if test $EC -ge 1
- then
- rm "$FILENAME.png"
- fi
- done
-
- # Plot diff
- ls -1 $STATDIR/*.diff | while read FILENAME; do
- BASENAME=`basename "$FILENAME" | sed -e "s/ *\..*//g"`
- echo "set terminal png;set output '$FILENAME.png';set title '$BASENAME - diff';plot '$FILENAME' using (\$1/60):(\$3-\$2) title '' with lines;" | nice gnuplot 2> $TMP
- EC=`cat $TMP | grep "empty" | grep "Warning" | wc -l`
- if test $EC -ge 1
- then
- rm "$FILENAME.png"
- fi
- done
- ;;
- view)
- $IMAGEVIEWER $STATDIR/*.png
- ;;
- *)
- echo $"Usage: $0 {collect|plot|view}"
- exit 1
-
- esac
-
|