(ceci concerne un serveur dédié sous Linux)
J’avoue être un gros paresseux et je regarde rarement les logs Apache stockés sur le serveur web. L’idéal serait de s’envoyer ses logs Apache directement par mail le matin au réveil. Pour cela j’utilise un script maison qui s’exécute tous les jours à 1 heure du matin (merci Crontab).
Pour envoyer les pièces jointes, on doit recourir à Mutt ou un utilitaire plus léger et dédié à l’envoi de fichiers en pièce jointe par mail : Biabam (site officiel).
Installation de BiaBam
Biabam figure dans les dépots des distributions Linux les plus utilisées. Personnellement j’utilise Debian, on va donc l’installer en utilisant l’utilitaire apt-get :
apt-get install biabam
Syntaxe de Biabam
La syntaxe de biabam est la suivante :
echo "contenu du mail" | biabam nomdufichier -s "objet du mail" "destinataire1, destinataire2, destinataire.."
Pour obtenir la date d’hier j’utilise une bidouille :
datehier="$(date +%Y_%m_%d --date '1 day ago')"
Mes logs Apache sont bien sous cette forme :
nomdudomaine.tld_sousdomaine-access_%Y_%m_%d.log
Mon script
Voici mon script (à améliorer) qui me permet de gérer le processus d’envoi par mail :
#!/bin/bash # # Script qui permet d'envoyer par mail les logs Apache de la veille # ./bk_logsapache_hier # # (c) Bruno Caruso - brunocaruso [AT] gmail.com # dossierlog="/var/log/apache2" dossierbk="/home/dev/BK/Apache/Logs" maildestinataire="brunocaruso[AT]gmail.com" datehier="$(date +%Y_%m_%d --date '1 day ago')" cp $dossierlog/*$datehier* $dossierbk cd $dossierbk tar -vczf "$datehier"_Apache_Logs.tar.gz *.log echo "Les logs du $datehier" | biabam "$datehier"_Apache_Logs.tar.gz -s "Logs Apache du $datehier" $maildestinataire rm $dossierbk/*
Je rajoute l’exécution de ce script dans Crontab (crontab -e). Ce script s’exécute tous les jours à 1h du mat :
0 1 * * * /home/dev/scripts/bk_logsapache_hier.sh
L’envoi du mail comportant les logs (compressés dans une archive) a bien lieu tous les matins. Ici une capture de mon logiciel de courrier The Bat :
