#!/bin/bash
#
# Script to monitor daily remote backup timing
#
# @3G
#
# Parameters understood:
#
#     config    (required)
#     autoconf  (optional - used by munin-config)
#

#%# family=auto
#%# capabilities=autoconf

BCKDIR='/var/log/backup-remote'
BCKN='backup-'

if [ "$1" = "autoconf" ]; then
        if [ -d $BCKDIR ]; then
                echo yes
                exit 0
        fi
        echo "no (no backup log dir)"
        exit 0
fi

TODAY=`date +%y%m%d`
BTL=${BCKDIR}/${BCKN}${TODAY}.log
YDAY=`date +%y%m%d -d "yesterday"`
BYL=${BCKDIR}/${BCKN}${YDAY}.log

if [ -f $BTL ]; then
	BL=$BTL
elif [ -f $BYL ]; then
	BL=$BYL
else
	BL=""
fi

BAL=""
if [ -f $BTL ]; then
	BAL=$BTL
fi
if [ -f $BYL ]; then
	BAL="$BAL $BYL"
fi

if [ -n "$BAL" ]; then
	RHOSTS=`grep "start_backup" $BAL |awk '{print $2}' |sort |uniq`
else
	RHOSTS=""
fi

if [ "$1" = "config" ]; then

	echo 'graph_title Remote backup'
	echo 'graph_args --base 1000 -l 0'
	echo 'graph_scale no'
	echo 'graph_vlabel sec'
	echo 'graph_category backup'
	echo 'graph_info This graph shows the backup timings per remote host'

	for rhost in $RHOSTS; do
#		name=`echo "$rhost" | sed -e 's/\./_/g'`
		name=`echo "$rhost" | tr .- __`

		echo "$name.label $name"
		echo "$name.type GAUGE"
		echo "$name.draw AREASTACK"
		echo "$name.min 0"
		echo "$name.info backup time"
	done
	exit 0
fi


for rhost in $RHOSTS; do
#	name=`echo "$rhost" | sed -e 's/\./_/g'`
	name=`echo "$rhost" | tr .- __`

	starttime=''
	endtime=''

	if [ -n "$BL" -a -f "$BL" ]; then
		starttime=`grep "$rhost start_backup" $BL |tail -n1 |awk '{print $1}'`
		endtime=`grep "$rhost end_backup" $BL |tail -n1 |awk '{print $1}'`
	fi

	if [ -n "$starttime" -a -n "$endtime" ]; then
		let value=$(date +%s -d "$endtime")-$(date +%s -d "$starttime")
	elif [ -n "$starttime" ]; then
		let value=$(date +%s)-$(date +%s -d "$starttime")
	else
		value="U"
	fi

	echo "$name.value $value"
done
