#!/bin/bash # Depends on gnuplot, imagemagick (convert), corefonts export GDFONTPATH=/usr/share/fonts/corefonts/ #DIR=/var/tmp TMPDIR=. #OUTPUTDIR=/var/www/mirrorstats.gentoo.org/htdocs/rsync OUTPUTDIR=. cat > ${TMPDIR}/gmirrorstats-$$.gp <<- EOF set terminal svg enhanced size 900,600 set output "${OUTPUTDIR}/rsync-usage.svg" set title "Gentoo rsync.g.o stats" \ font "/usr/share/fonts/corefonts/arial.ttf,22" set ylabel "Sync count" \ font "/usr/share/fonts/corefonts/arial.ttf,22" \ offset -4,0 set key rmargin center reverse Left set xdata time # The x axis data is time set timefmt "%Y/%m/%d" # The dates in the file look like 2011/04/30 set format x "%F" # On the x-axis, we want tics like 2011-04-30 set border 3 lw 1.0 set xtics nomirror rotate by -45 \ font "/usr/share/fonts/corefonts/arial.ttf,16" \ offset -1,-1 set ytics nomirror \ 1000 \ font "/usr/share/fonts/corefonts/arial.ttf,16" set mytics 4 #set logscale y 10 set style data lines set yrange [1000:] #set grid plot \\ EOF array=() # don't include files that have no real data for i in ${TMPDIR}/gmirrorstats/*.txt; do num=$(grep " 0" $i | wc -l ) if [[ ${num} != $(wc -l $i | cut -d ' ' -f1) ]]; then array+=( $i ) tail -n 28 $i > ${i/.txt/.gp} if [[ $(grep " 0" ${i/.txt/.gp} | wc -l) == 28 ]]; then rm ${i/.txt/.gp} fi fi done # echo the files into the gp file j=0 for filename in ${array[@]}; do NODES=$((${#array[@]}-1)) if [[ ${filename} == *all-data.txt ]]; then echo -n "\"${filename}\" using 1:(\$2/${NODES}) lc rgb 'black' lw 5 " >> ${TMPDIR}/gmirrorstats-$$.gp echo -n "title '{//usr/share/fonts/corefonts/arial.ttf=14 average}'" >> \ ${TMPDIR}/gmirrorstats-$$.gp else echo -n "\"${filename}\" using 1:2 lw 3 " >> ${TMPDIR}/gmirrorstats-$$.gp echo -n "title '{//usr/share/fonts/corefonts/arial.ttf=14 $(basename ${filename} | cut -d- -f1 )}'" >> \ ${TMPDIR}/gmirrorstats-$$.gp fi : $((j++)) if [[ ${j} -lt ${#array[@]} ]] ; then echo ",\\" >> ${TMPDIR}/gmirrorstats-$$.gp fi done echo "" >> ${TMPDIR}/gmirrorstats-$$.gp gnuplot ${TMPDIR}/gmirrorstats-$$.gp # last 4 weeks graph sed -i 's/rsync-usage.svg/rsync-usage-last4weeks.svg/' ${TMPDIR}/gmirrorstats-$$.gp sed -i 's/.txt/.gp/' ${TMPDIR}/gmirrorstats-$$.gp sed -i -e 's/lw 3/lw 4/' -e 's/lw 5/lw 7/' ${TMPDIR}/gmirrorstats-$$.gp gnuplot ${TMPDIR}/gmirrorstats-$$.gp 2> /dev/null # warnings due to missing files # end last 4 weeks graph # gnuplot likes printing labels outside of the viewable area sed -i -e 's:viewBox="0 0 900 600":viewBox="-30 0 950 650":g' rsync-usage*.svg convert rsync-usage.svg rsync-usage.png convert rsync-usage-last4weeks.svg rsync-usage-last4weeks.png rm ${TMPDIR}/gmirrorstats-$$.gp rm ${TMPDIR}/gmirrorstats/*.gp