Rotation des logs

Retour à la liste des tutoriels

La rotation des logs (journaux d'événements) permet de limiter la taille de ces fichiers et également de notifier le webmaster de certains événements.
Prérequis
  • FIXME Avoir installé nano.


Installation de logrotate

apt-get install logrotate

Configuration de logrotate

Je souhaite effectuer deux actions principales :

  • pour les journaux d'accès aux sites web : les conserver durant 1 année

Ceci répondant à une obligation légale européenne transcrite dans le droit français par le décret n° 2006-358 du 24 mars 2006 relatif à la conservation des données des communications électroniques

  • recevoir toutes les semaines par courriel les journaux d'erreur de mes sites web
Si la fréquence d'envoi de mails est trop élevée, le webmaster finit rapidement par ne plus lire ce genre de mails !

Edition de la configuration de logrotate

nano /etc/logrotate.d/apache2

Configuration par défaut

Décryptons le fichier originel :

/var/log/apache2/*.log {

Les fichiers de log qui doivent être traités.

weekly

La fréquence de traitement (daily, weekly, monthly, yearly).

missingok

Il se peut que le journal d'événement n'existe pas.

rotate 52

Le nombre de fichiers conservés (le nombre de rotations effectuées avant de supprimer un journal).

La durée de conservation d'un log est égale à la fréquence de traitement * le nombre d’occurrences conservées !
compress

Les anciens journaux seront conservés de manière compressée (gain d'espace disque !).

delaycompress

Les anciens journaux ne seront compressés qu'à la fin de la rotation des logs (évite des problèmes d'accès concurrents si un autre processus souhaite accéder au journal durant sa rotation).

notifempty

Aucune action n'est effectuée si le journal est vide.

create 640 root adm
sharedscripts

Ces options définissent les droits avec lesquels les journaux sont créés.

postrotate
	/etc/init.d/apache2 reload > /dev/null
endscript
}

L'action effectuée après la rotation des journaux d'événements. Dans notre cas : recharger le configuration d'Apache.

Journal d'accès

Voici la configuration que je choisis :

# Les journaux d'accès au site web
/var/log/apache2/*.log /var/www/anael.eu/logs/access.log {
	weekly
	missingok
	rotate 52
	compress
	delaycompress
	notifempty
	create 640 root adm
	sharedscripts
	postrotate
		/etc/init.d/apache2 reload > /dev/null
	endscript
}

Journal d'erreur

Je rajoute également dans le même fichier une seconde partie pour recevoir par courriel les journaux d'erreur des sites web !

Je vais utiliser les instructions :

mail webm*ster@anael.eu

Définit l'adresse mail destinatrice.

mailfirst

Envoi le premier journal existant (le journal actuel).

Voici la seconde partie du fichier de configuration :

/var/www/anael.eu/logs/error.log {
	weekly
	missingok
	rotate 52
	compress
	delaycompress
	mail webm*ster@anael.eu
	mailfirst
	postrotate
		/etc/init.d/apache2 reload > /dev/null
	endscript
}

Ajouter d'autres sites web

Si vous souhaitez effectuer la rotation des journaux d'événements pour plusieurs domaines séparés, il vous suffit d'ajouter le chemin vers le fichier de log sur la première ligne de chaque bloc d'instruction (séparée par un espace)!

Planification

Le processus de rotation des logs sera effectué de manière automatique.

Toutefois, si vous souhaitez exécuter manuellement la rotation des logs :

logrotate /etc/logrotate.d/apache2 -v
La première exécution de logrotate peut solliciter fortement votre serveur, en fonction de la quantité de données à traiter initialement !


Liens