
Sauvegarder et restaurer Nagios, Centreon et Nagvis
L’installation du trio Nagios, Centreon et Nagvis est assez complexe c’est pour cela qu’une solution de sauvegarde et de restauration complète est nécessaire.
Le script en SHELL que j’ai développé (à l’aide de petits bouts trouvés sur le net) permet à lui seul de sauvegarder ou de restaurer les logiciels et leurs configurations dans leurs intégralité. Il sauvegarde donc :
- Les bases de données
- Les répertoire qui contiennent les fichiers
- Les fichiers de configuration de logiciels
- Les fichiers de configuration de Apache, Sendmail etc …
Je vous laisse le soin de modifier les chemins pour l’adapter à votre configuration.
Ce script lancé sans arguments va lister les sauvegardes présentes, vous demander si vous voulez sauvegarder ou restaurer et si vous choisissez de restaurer il va vous demander d’entrer la date.
En utilisant les arguments maintenant :
- Pour sauvegarder il faudra utiliser le script de cette manière : Save_Restore.sh S
- Pour restaurer et lister les sauvegarde présente pour faire un choix il faut utiliser : Save_Restore.sh R
- Pour restaurer à une date donnée il faut utiliser : Save_Restore.sh R AAAA-MM-JJ
Convertir un fichier texte au format Linux
Code source du script :
#!/bin/sh
#
#Script de sauvegarde et de restauration de Nagios-Centreon-Nagvis
#Version 1.0
#
#
#
#Par Tonyo
#############################################
echo "****** ******Solution de sauvegarde et de restauration du serveur de supervision******"
eval `date "+day=%d; month=%m; year=%Y"`
# Repertoire utilisés
rep=`pwd`
rac=/usr/local/save
dest_local=/usr/local/
dest_etc=/etc
temp=/usr/local/save/temp
mdp=VotreMDPdelaBDD
save=NULL
LOG_NAGIOS=/usr/local/save/nagios_log.txt
# Selection du fichier de sauvegarde
echo -e "****** Liste des fichiers de sauvegarde disponibles : ******"
ls -l $rac
if [ -z "$1" ]
then
read -p "Voulez vous sauvegarder ou restaurer le serveur ? S pour sauvegarder et R pour restaurer : " save
else
save=$1
fi
if [ $save = 'R' ]
then
if [ -z "$2" ]
then
read -p "Entrez la date (Annee-Mois-Jour) de la sauvegarde a importer -- exemple 2012-03-01 : " choix
else
choix=$2
fi
echo "Debut de la restauration du $choix" | tee -a $LOG_NAGIOS
# Création du dossier temporaire
if [ -d $temp ]
then
rm -R -f $temp | tee -a $LOG_NAGIOS
fi
mkdir $temp
cd $temp
mkdir files
mkdir conf
mkdir lib
# On se place dans le répertoire voulu
cd $rac/backup-$choix
# Arret des services de supervision
echo "****** Arret des services... ******"
/etc/init.d/centstorage stop
/etc/init.d/centcore stop
/etc/init.d/nagios stop
/etc/init.d/ndo2db stop
# Sauvegarde temporaire
echo "****** Sauvegarde temporaire ...... ******"
tar -cpzf $temp/files/centreon-backup.tar.gz /usr/local/centreon/
tar -cpzf $temp/files/nagvis-backup.tar.gz /usr/local/nagvis/
tar -cpzf $temp/files/nagios-backup.tar.gz /usr/local/nagios/
tar -cpzf $temp/conf/apache-backup.tar.gz /etc/httpd/conf.d/centreon.conf /etc/httpd/conf.d/nagios.conf /etc/httpd/conf.d/nagvis.conf
tar -cpzf $temp/conf/cron-backup.tar.gz /etc/cron.d/centreon /etc/cron.d/centstorage
tar -cpzf $temp/conf/init-backup.tar.gz /etc/init.d/nagios /etc/init.d/ndo2db /etc/init.d/centcore /etc/init.d/centstorage
tar -cpzf $temp/conf/snmp-backup.tar.gz /etc/snmp/*
tar -cpzf $temp/conf/mail-backup.tar.gz /etc/mail/*
tar -cpzf $temp/lib/vues_centreon-backup.tar.gz /var/lib/centreon/metrics /var/lib/centreon/status
# Decompression des fichier ZIP de sauvegarde
echo "****** Decompression des fichiers ...... ******"
tar xpzf files/centreon-backup.tar.gz -C /
tar xpzf files/nagvis-backup.tar.gz -C /
tar xpzf files/nagios-backup.tar.gz -C /
tar xpzf conf/apache-backup.tar.gz -C /
tar xpzf conf/cron-backup.tar.gz -C /
tar xpzf conf/init-backup.tar.gz -C /
tar xpzf conf/snmp-backup.tar.gz -C /
tar xpzf conf/mail-backup.tar.gz -C /
tar xpzf lib/vues_centreon-backup.tar.gz -C /
echo "Termine"
# Importation des bases de donnees
echo "****** Restauration de la base de donnee..... ******"
mysql -u root -p$mdp centreon < BdD_centreon.sql
mysql -u root -p$mdp centstorage < BdD_storage.sql
mysql -u root -p$mdp ndo < BdD_ndo.sql
echo "Termine"
# Redemarrage des services de supervision
echo "****** Redemarrage des services de supervision ******"
/etc/init.d/ndo2db start
/etc/init.d/centcore start
/etc/init.d/centstorage start
/etc/init.d/nagios start
# Suppression des fichiers temporaires
echo "****** Suppression des fichiers temporaires ******"
echo "Merci de verifier si la restauration s'est deroule correctement."
read -p "Voulez-vous supprimer les fichiers temporaire? : " repsup
if [ $repsup = 'oui' ]
then
rm -r $temp
else
echo "Un probleme est survenu pendant la restauration. Vous pouvez revenir manuellement a la version precedente en vous aidant du dossier $temp " | tee -a $LOG_NAGIOS
fi
echo "****** Restauration du $choix terminee ******" | tee -a $LOG_NAGIOS
fi
if [ $save = 'S' ]
then
# Creation du nom de fichier de sauvegarde
echo "Debut de la sauvegarde du "`date` | tee -a $LOG_NAGIOS
echo "****** Création du dossier de sauvegarde... ******"
mkdir /usr/local/save/backup-$year-$month-$day
cd /usr/local/save/backup-$year-$month-$day
mkdir files
mkdir conf
mkdir lib
# Arrêt des services
echo "****** Arret des services... ******"
/etc/init.d/centstorage stop
/etc/init.d/centcore stop
/etc/init.d/nagios stop
/etc/init.d/ndo2db stop
# Dump des bases MySQL
echo "****** Dump des bases MySQL... ******"
mysqldump -u root -p$mdp --all-databases --add-locks > All-BdD-mysql-`date +%Y%m%d`.sql
mysqldump -u root -p$mdp --opt centreon > BdD_centreon.sql
mysqldump -u root -p$mdp --opt centstorage > BdD_storage.sql
mysqldump -u root -p$mdp --opt ndo > BdD_ndo.sql
# Gzip du répertoire
echo "****** Gzip des repertoire... ******"
tar -cpzf files/centreon-backup.tar.gz $dest_local/centreon/
tar -cpzf files/nagvis-backup.tar.gz $dest_local/nagvis/
tar -cpzf files/nagios-backup.tar.gz $dest_local/nagios/
tar -cpzf conf/apache-backup.tar.gz $dest_etc/httpd/conf.d/centreon.conf /etc/httpd/conf.d/nagios.conf /etc/httpd/conf.d/nagvis.conf
tar -cpzf conf/cron-backup.tar.gz $dest_etc/cron.d/centreon /etc/cron.d/centstorage
tar -cpzf conf/init-backup.tar.gz $dest_etc/init.d/nagios /etc/init.d/ndo2db /etc/init.d/centcore /etc/init.d/centstorage
tar -cpzf conf/snmp-backup.tar.gz $dest_etc/snmp/*
tar -cpzf conf/mail-backup.tar.gz $dest_etc/mail/*
tar -cpzf lib/vues_centreon-backup.tar.gz /var/lib/centreon/metrics /var/lib/centreon/status
# Redémarrage des différents services
echo "****** Redemarrage des differents services... ******"
/etc/init.d/ndo2db start
/etc/init.d/centcore start
/etc/init.d/centstorage start
/etc/init.d/nagios start
echo "On supprime les sauvegardes datant de plus de deux semaines" | tee -a $LOG_NAGIOS
# On nettoie les anciens backups, ainsi que les logs de plus de 30 jours
find $dest_local/save/* -mtime +30 -exec rm -fr {} \; > /dev/null 2>&1
find $dest_local/save/* -mtime +30 -exec rm -fr {} \; > /dev/null 2>&1
echo "Fin de la sauvegarde du serveur "`date` | tee -a $LOG_NAGIOS
fi
if [ $save != 'S' ] && [ $save != 'R' ]
then
echo "La valeur entree est incorrect merci de relancer le script."
fi