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