Rotation des logs apache
Par Guillaume RUAS, 06/12/2005 à 20:49 :: Apache :: #28 :: rss
Cet article décrit comment faire une rotation des logs de apache avec le progamme "logrotate"
Comme nous le savons tous, les fichiers de logs peuvent rapidement prendre de la place sur nos serveurs notament les journaux d'Apache qui selon la consultation des sites peuvent atteindre plusieurs gigaoctets. Il est donc très utile de pouvoir faire tourner les logs et les compesser.
Le programme "logrotate" est un outil qui permet de faire une rotation des logs pour tout les programme.
Dans cet article, je vais expliquer comment mettre en place cette rotation de logs sur apache.
Situation :
Tout d'abord je vais décrire l'architecture des comptes apache et la configuration du seveur.
Chaque compte web possède un répertoire dans /var/www qui contient lui-même un répertoire "logs". C'est dans ce répertoire que nous trouvons les fichier access.log et error.log.
|_Var
|_www
|_logs
| |_access.log
| |_error.log
|_www
|_cgi-bin
Donc chaque compte d'hébergement possède ses fichiers de logs dans /var/www/xxx/logs.
Fonctionnement de logrotate
Logrotate est appelé par une tache cron à intervalle défini. Cette application lit le fichier de configuration /etc/logrotate.conf ou les fichiers situés dans /etc/logrotate.d.
Pour ma part j'ai choisi de créer un fichier de configuration définissant ma rotation de logs dans /etc/logrotate.d/apache.
Pour commencer il est nécessaire de définir le fichier de log concerné :
/var/www/*/logs/access.log { }
Le caractère * est un joker et dans le cas présent il permet de spécifier que tous les répertoires se trouvant dans /var/www/ seront concernés. La ligne /var/www/*/logs/access.log indique que la configuration s'applique aux fichiers access.log qui se trouve dans /logs/ de tous les répertoires de /var/www/.
Voyons ensuite quelques options interressantes :
missingok : indique de passer au fichier suivant sans générer d'erreur si le fichier n'existe pas..
ifempty : permet de spécifier qu'on effectue la rotation même si le fichier est vide.
create : permet de recréer le fichier de log juste après la rotation. Il est possible d'indiquer les permissions à donner au fichier, son propriétaire et son groupe.
compress : Demande de compresser le fichier après la rotation. gzip est utilisé par défaut. La commande compresscmd permet de définir le programme à utiliser pour la compression et compressoptions permet de passer des paramètres au programme de compression.
delaycompress : reporte la compression au cycle suivant.
nocompress : empêche la compression du fichier.
daily : permet de spécifier qu'on désire archiver le fichier de logs tous les jours. On peut aussi spécifier weekly (par semaine) et monthly (par mois).
rotate n : n définit le nombre de jours au bout duquel on effectuera une rotation.
prerotate / endscript : permet d'éxécuter un script shell avant la rotation.
postrotate / endscript : permet d'éxécuter un script shell après la rotation.
sharedscripts : permet de définir que les scripts ne seront exécutés qu'une seule fois pour tous les fichiers de logs analysés.
Vous trouverez d'autres options interressantes dans le man de logrotate.
Exemple de configuration pour la rotation de logs pour apache :
Le code suivant est celui que j'utilise pour effectuer ma rotation de logs des mes comptes apache.
#Apache /var/www/*/logs/access.log { missingok ifempty create 755 propriétaire groupe compress daily rotate 365 sharedscripts prerotate #Mise à jour des stats de awstats. /usr/local/awstats/tools/awstats_updateall.pl -awstatsprog="/usr/local/awstats/wwwroot/cgi-bin/awstats.pl" -confdir="/etc/awstats" now endscript postrotate #On renomme les fichiers générés avec la date du jour et on efface celui d'il y a un an. date=`date "+%d-%m-%Y"` date2=`date --date '1 year ago' "+%d-%m-%Y"` for rep in `ls /var/www`; do if [ -d /var/www/$rep/logs ]; then mv /var/www/$rep/logs/access.log.1.gz /var/www/$rep/logs/access.log-$date.gz rm -f /var/www/$rep/logs/access.log-$date2.gz fi done endscript }

Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.