[pve-devel] Nagios Check for vzdump Backups
Eneko Lacunza
elacunza at binovo.es
Mon Nov 9 14:03:29 CET 2015
Hi,
Check this one, no warranty whatsoever :)
El 09/11/15 a las 13:36, Mario Loderer escribió:
> Hello,
>
> we have the problem that we have really a lot of servers and clusters
> at customer. So we get some backup mails every day/week/some day's,
> :) depending on backupmodel. So it is very confused to check the
> backups. Sending only on error is not really an solution.
>
> The idea is to have an nice nagioscheck for this service. I'm not a
> programmer therefore, I can not even write himself. So do you think it
> is possible to write an nagios plugin to check the Backupstatus? With
> the API or something else?
>
> Thanks and best Regards
> Mario
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
--
Zuzendari Teknikoa / Director Técnico
Binovo IT Human Project, S.L.
Telf. 943575997
943493611
Astigarraga bidea 2, planta 6 dcha., ofi. 3-2; 20180 Oiartzun (Gipuzkoa)
www.binovo.es
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.proxmox.com/pipermail/pve-devel/attachments/20151109/6b5646b6/attachment.htm>
-------------- next part --------------
#!/bin/sh
# (C) Copyright 2013 Binovo IT Human Project SL
# License: 3-clause BSD license http://directory.fsf.org/wiki/License:BSD_3Clause
# Authors:
# - 2013 Xabier Acosta, original script
# - 2013/12 Eneko Lacunza, add second argument for backup oldness
# - 2014/09/29 Eneko Lacunza, fix VM name extraction for snapshot support
if [ -f /etc/default/locale ]
then
. /etc/default/locale
export LANG
fi
#Directorio de log vzdump
LOG=/var/log/vzdump
#directorio .conf de las Maquinas virtuales
VM_CFG=/etc/pve/qemu-server
OLDNESS=0
USAGE="Usage: `basename $0` [-h] [-n ] [-o <oldness>] \n
-h [Muestra esta ayuda.]\n
-n [Nombre de la máquina precedido por vzdump_. Ej: vzdump_maquina]\n
-o [Oldness. Indica la antigüedad aceptable del backup, en segundos. Por defecto 0, debe ser del mismo día]\n"
while getopts o:n:h OPT;
do
case "$OPT" in
h)
echo $USAGE
exit 1
;;
n)
PARAM_NOMBRE_MAQUINA=$OPTARG
;;
o)
OLDNESS=$OPTARG
;;
\?)
echo $USAGE >&2
exit 1
;;
esac
done
for CFG_FILE in $VM_CFG/[0-9]*.conf
do
if [ -f $CFG_FILE ] && [ -f $LOG/qemu-$(basename $CFG_FILE | cut -d'.' -f 1).log ]
then
ID_MAQUINA=$(basename $CFG_FILE | cut -d'.' -f 1)
NOMBRE_MAQUINA=$(cat $CFG_FILE | grep "name:" | awk '{ print $2 }' | head -n 1)
if [ vzdump_$NOMBRE_MAQUINA = $PARAM_NOMBRE_MAQUINA ]
then
#Finished
#1 Si ha terminado correctamente
#0 Si error/No ha terminado
#2 o más: Unknown
if [ $OLDNESS -eq 0 ]
then
FINISHED=$(cat $LOG/qemu-$ID_MAQUINA.log | grep "$(date +%b) $(date +%d)" | grep "INFO: Finished" | wc -l)
FINISHED_DATE=$(cat $LOG/qemu-$ID_MAQUINA.log | grep "INFO: Finished" | cut -c 1-6)
else
FINISHED_DATE=$(cat $LOG/qemu-$ID_MAQUINA.log | grep "INFO: Finished" | cut -c 1-6 | sed s/ene/jan/ | sed s/abr/apr/ | sed s/ago/aug/ | sed s/dic/dec/)
FINISHED_TS=$(date --date="$FINISHED_DATE" +%s)
NOW=$(date +%s)
FINISHED_OLDNESS=$(expr $NOW - $FINISHED_TS)
if [ $FINISHED_OLDNESS -le $OLDNESS ]
then
FINISHED=$(cat $LOG/qemu-$ID_MAQUINA.log | grep "INFO: Finished" | wc -l)
else
FINISHED=0
fi
fi
#Error
#1 Si hay error
#0 Si no hay error/No ha terminado)
#2 o más: Unknown
ERROR=$(cat $LOG/qemu-$ID_MAQUINA.log | grep "$(date +%b) $(date +%d)" | grep "ERROR: Backup of VM $ID_MAQUINA failed" | wc -l)
if [ $FINISHED -eq 1 ] && [ $ERROR -eq 0 ]
then
STATUS=0
SIZE=$(cat $LOG/qemu-$ID_MAQUINA.log | grep "archive file size" | awk '{ print $8 }')
TOTAL_TIME=$(cat $LOG/qemu-$ID_MAQUINA.log | grep "INFO: Finished" | awk '{ print $10 }')
MESSAGE="OK: $TOTAL_TIME Size: $SIZE Date: $FINISHED_DATE"
elif [ $FINISHED -eq 0 ] && [ $ERROR -eq 1 ]
then
STATUS=2
MESSAGE="CRITICAL: Backup failed"
else
STATUS=1
FINISHED=$(cat $LOG/qemu-$ID_MAQUINA.log | grep "INFO: Finished")
ERROR=$(cat $LOG/qemu-$ID_MAQUINA.log | grep "ERROR: Backup of VM $ID_MAQUINA failed")
MESSAGE="WARNING: Last log: $FINISHED $ERROR"
fi
if [ $HOST ]
then
echo $MESSAGE
exit $STATUS
else
echo $MESSAGE
exit $STATUS
fi
else
continue
fi
fi
done
echo "WARNING: Backup status unknown. No log/machine found."
exit 1
More information about the pve-devel
mailing list