
Nagios n’inclus pas de modules par défaut permettant d’exporter des rapports journalier.
Ce tutorial va nous permettre d’exporter des rapports journalier au format pdf, puis de nous les envoyer automatiquement par mail grâce à un script shell ainsi qu’un Cron Job.
Avant de passer à la partie scripting, nous allons installer wkhtmltopdf, outils qui va nous permettre de convertir une page HTML au format PDF, tout en gardant le CSS ainsi que les images.
# cd /root
# wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2
# tar -jxvf wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2
Nous allons également installer sharutils, requis pour envoyer des pièces jointes par mail (avec la commande uuencode)
# yum install sharutils
Passons maintenant au scripting,
Le but premier est d’exporter notre page reporting nagios au format html (avec le css ainsi que les images):
# wget -p -r –user nagiosadmin –password ‘nagiosadmin’ –convert-links “http://127.0.0.1/nagios/cgi-bin/avail.cgi?show_log_entries=&host=Host1&service=all&timeperiod=yesterday&timeperiod=24×7”
Cette commande va exporter notre page tout en gardant l’arborescence, nous allons ensuite modifier le nom de notre page (qui se nomme : avail.cgi?show_log_entries=&host=Host1&service=all&timeperiod=yesterday&timeperiod=24×7) :
# cd 127.0.0.1/nagios/cgi-bin/
# mv “avail.cgi?show_log_entries=&host=Host1&service=all&timeperiod=yesterday&timeperiod=24×7” report.html
Puis, nous allons convertir cette page au format PDF :
# /root/wkhtmltopdf-amd64 /root/127.0.0.1/nagios/cgi-bin/report.html report-`date +%Y%m%d`.pdf
# mv /root/127.0.0.1/nagios/cgi-bin/report-`date +%Y%m%d`.pdf /root/report-`date +%Y%m%d`.pdf
Puis supprimer notre HTML ainsi que son arborescence :
# rm -rf 127.0.0.1/
Nous allons maintenant envoyer notre rapport par mail :
# echo “Daily report Attached” > body.txt
# cat body.txt | uuencode report-`date +%Y%m%d`.pdf | mail -s “Daily Report” alexandre.nogard@live.cn
Voici le script complet (script *.sh):
# /bin/sh
cd /root
wget -p -r –user nagiosadmin –password ‘nagiosadmin’ –convert-links “http://127.0.0.1/nagios/cgi-bin/avail.cgi?show_log_entries=&host=Host1&service=all&timeperiod=yesterday&timeperiod=24×7”
cd /root/127.0.0.1/nagios/cgi-bin/
mv “avail.cgi?show_log_entries=&host=Host1&service=all&timeperiod=yesterday&timeperiod=24×7” report.html
/root/wkhtmltopdf-amd64 /root/127.0.0.1/nagios/cgi-bin/report.html report-`date +%Y%m%d`.pdf
mv /root/127.0.0.1/nagios/cgi-bin/report-`date +%Y%m%d`.pdf /root/report-`date +%Y%m%d`.pdf
cd /root
rm -rf 127.0.0.1/
cat body.txt | uuencode report-`date +%Y%m%d`.pdf | mail -s “Daily Report” votre_adresse@mail.com
Puis nous créons un cron job, pour que tout soit fait de manière automatique :
# crontab -e
> 15 00 * * * /home/user/scrip.sh
Vous allez donc pouvoir recevoir des rapports journalier de ce style :
Merci pour cet article,
Je cherchais justement une solution pour créer des rapports journalier ! ça tombe bien, vraiment génial !
Merci beaucoup, je vais immédiatement tester ce script.
J’ai testé le script sur ma distribution Fedora17 et rencontré quelques erreurs. Je me suis permis de faire quelques légères modifications, notamment pour l’utilisation de mail pour joindre les fichiers, évitant d’utiliser uuencode qui ne semblait pas fonctionner sur ma machine.
Pour ceux que ça pourrait intéresser voici le script que j’utilise :
# /bin/sh
cd /root
wget “http://192.168.1.251/nagios/cgi-bin/avail.cgi?show_log_entries=&host=Host1&service=all&timeperiod=yesterday&timeperiod=24×7” –http-user=nagiosadmin –http-password=nagiosweb -p -r -k
cd /root/192.168.1.251/nagios/cgi-bin/
mv “avail.cgi?show_log_entries=&host=Host1&service=all&timeperiod=yesterday&timeperiod=24×7” report.html
/root/wkhtmltopdf-i386 /root/192.168.1.251/nagios/cgi-bin//report.html report-`date +%d%m%Y`.pdf
mv /root/192.168.1.251/nagios/cgi-bin/report-`date +%d%m%Y`.pdf /root/report-`date +%d%m%Y`.pdf
cd /root
rm -rf 192.168.1.251/
echo “Rapport quotidien de disponibilites des hotes et services Nagios du `date -d yesterday +%d-%m-%Y`” | mail -a report-`date +%d%m%Y`.pdf -s “Rapport quotidien : `date -d yesterday +%d-%m-%Y`” xxxx.xxxx@xxxx.com
Bonjour Mercii pour le tutoriel ca serait interessant de me dire comment je fasse la meme chose pour le duo Centreon/nagios //localhost/centreon afin de generer des beaux rapport
Comme Mounir j’essaye d’appliquer ton tutoriel à l’interface Centreon.
Globalement ça marche pas mal (j’envoie le PDF en pièce jointe avec “mutt”), mais je n’arrive pas à m’identifier. La page HTML que je télécharge est donc toujours celle d’identification.
Voici mon script : http://www.hostingpics.net/viewer.php?id=780298ReportSender.png