Vmware Data Recovery alert via email

Posted on 21 dicembre 2010 di

19


La nuova versione del VDR introduce molte migliorie rispetto alla precedente e soprattutto la possibilità di lavorare con tante appliance in parallelo (fino a 10) per dividere i carichi di lavoro dei backup.

Resta però il problema di sapere la mattina (nel mio caso alle ore 08:50), se tutto è filato liscio…se ci sono job in errore o se l’appliance ha problemi.

Ho quindi deciso di modificare uno script che via telnet invia una mail formattata nel miglior modo possibile al nostro sistema di ticket…se il sistema individua che i job in errore sono diversi da 0 (in oggetto della mail), allora aprirà una anomalia.

Basterà semplicemente inserire lo script sottoriportato (e propriamente configurato per il proprio ambiente con il mittente, il server smtp, etc…) nella cartella /root

Dopodichè creare un cron job come sotto:

EMAIL risultante:

OGGETTO:

VDR2-01 VDR-Report 2010.12.21 08:50 New jobs OK: 3, New jobs in errore: 0

MESSAGGIO:

Aggiornamento dall’ultimo mail-report dello stato dei Backup Vmware su VDR2-01 del 2010.12.21 08:50 ULTIMI BACKUP OK: 3, ULTIMI BACKUP IN ERRORE: 0

####################################################################

******************* Dettaglio Jobs Ok (3) **********************

>

> 12/20/2010 9:37:39 AM : Starting incremental integrity check 5/%D

> %.1T: Starting incremental integrity check] 12/20/2010 9:54:33 AM :

> Execution completed successfully 1/%D %.1T: %s]

>

> 12/20/2010 2:00:43 PM : Performing incremental back up of disk ”

> [DSFC01] szuccapp_1/szuccapp-flat.vmdk 12/20/2010 2:03:13 PM :

> Execution completed successfully 1/%D %.1T: %s]

>

> 12/20/2010 2:05:24 PM : Performing incremental back up of disk ”

> [DSFC01] szuccdb_2k3_64/szuccdb_2k3_64_1-flat.vmdk

> 12/20/2010 2:34:59 PM : Execution completed successfully 1/%D %.1T:

> %s]

####################################################################

********************* Jobs in errore totale: (0) ************************

Tutto ok: nessun processo è andato male!!

ISTRUZIONI: copiate ed incollate il SOTTOSTANTE in un file di testo e rinominate in VDReport.sh

#!/bin/bash
#
#
# strings -e l /var/vmware/datarecovery/operations_log.utx | grep -i -B2 "error" | awk -F"$" '{print "[1: " $1 "] [2: " $2 "] [3: " $3 "] [4: " $4 "] [5: " $5 "] [6: " $6 "] [7: " $7 "] [8: " $8 "] [9: " $9 "]"}'
#
# Variabili da compilare
domain=xxx.dom
host=$HOSTNAME
smtphost=10.0.0.xxx
mailto1=m.giuricin@xxx.dom
mailto2=m.salierno@xxx.dom
mailto3=support.alarm@xxx.dom
#
cat /dev/null >> /root/olderror.out
cat /dev/null >> /root/oldsuccess.out
err=0
succ=0
#
# errorlist
strings -e l /var/vmware/datarecovery/operations_log.utx | grep -i -A1 "Integrity check failed" | awk -F"$" '{print substr($2,5,21) " " substr($2, 27, 100) " " $3 " " substr($6,17,20)}'> /root/newerror.out
strings -e l /var/vmware/datarecovery/operations_log.utx | grep -i -B2 "Execution incomplete" | awk -F"$" '{print substr($2,5,21) " " substr($2, 27, 100) " " $3 " " substr($6,17,20)}' >> /root/newerror.out
strings -e l /var/vmware/datarecovery/operations_log.utx | grep -i -B2 "error" | awk -F"$" '{print substr($2,5,21) " " substr($2, 27, 100) " " $3 " " substr($6,17,20)}' >> /root/newerror.out
#
#successlist
strings -e l /var/vmware/datarecovery/operations_log.utx | grep -i -B1 "success" | awk -F"$" '{print substr($2,5,21) " " substr($2, 26, 100) " " substr($3,5,100)}' > /root/newsuccess.out
##
# Compare new list of all errors to old list of all errors
if ! diff /root/olderror.out /root/newerror.out
then
diff /root/olderror.out /root/newerror.out | grep ">" > /root/differr.out
#err=$(cat /root/differr.out | grep -c "error")
errori=$(cat /root/differr.out | grep -c "error")
incompleti=$(cat /root/differr.out | grep -c "Execution incomplete")
integrity_ko=$(cat /root/differr.out | grep -c "Integrity check failed")
err=$[$errori+$incompleti+$integrity_ko]
mv /root/newerror.out /root/olderror.out -f
fi
#
if ! diff /root/oldsuccess.out /root/newsuccess.out
then
diff /root/oldsuccess.out /root/newsuccess.out | grep ">" > /root/diffsuccess.out
succ=$(cat /root/diffsuccess.out | grep -c "success")
mv /root/newsuccess.out /root/oldsuccess.out -f
fi
# Send email with any errors found
(
sleep 1
echo "HELO $host.$domain"
sleep 1
echo "mail from: vdrreport@$host.$domain"
sleep 1
echo "rcpt to:$mailto1"
sleep 1
echo "rcpt to:$mailto2"
sleep 1
echo "rcpt to:$mailto3"
sleep 1
echo "data"
sleep 1
echo "subject: $host VDR-Report $(date +"%Y.%m.%d %H:%M") New jobs OK: $succ, New jobs in errore: $err"
sleep 1
echo "from: VMware backup $host "
sleep 1
echo "to:$mailto1"
sleep 1
echo "to:$mailto2"
sleep 1
echo "to:$mailto3"
sleep 1
echo ""
sleep 1
echo ""
sleep 1
echo "Aggiornamento dall'ultimo mail-report dello stato dei Backup Vmware su $host del $(date +"%Y.%m.%d %H:%M")"
sleep 1
echo "ULTIMI BACKUP OK: $succ, ULTIMI BACKUP IN ERRORE: $err"
sleep 1
echo ""
sleep 1
echo ""
sleep 1
echo "####################################################################"
sleep 1
echo "******************* Dettaglio Jobs Ok ($succ) **********************"
sleep 1
echo ""
sleep 1
if [ -f /root/diffsuccess.out ]
then
cat /root/diffsuccess.out
else
echo Attenzione: nessun nuovo processo è andato bene!!
fi
sleep 1
echo ""
sleep 1
echo ""
sleep 1
echo "####################################################################"
sleep 1
echo "********************* Jobs in errore totale: ($err) ************************"
sleep 1
echo " "
sleep 1
if [ -f /root/differr.out ]
then
echo Backup in errore: $errori - Backup incompleti: $incompleti - Integrity Chek KO: $integrity_ko
cat /root/differr.out
else
echo Tutto ok: nessun processo è andato male!!
fi
sleep 1
echo " "
sleep 1
echo "."
sleep 1
echo "QUIT"
) | telnet $smtphost 25

if [ -f /root/differr.out ]
then
rm -f /root/differr.out
fi

if [ -f /root/diffsuccess.out ]
then
rm -f /root/diffsuccess.out
fi

exit 0

Annunci