5
2009
Rotation des logs avec logrotate
Logrotate permet de faire la rotation des fichiers logs automatiquement. Celui contient de nombreuses options permettant choisir le fonctionement de la rotation. Logrotate est installé par défaut sur l’ensemble des distributions Linux (Enfin je pense).
Pour s’exécuter, il est lancer tous les jours par le cron. Nous allons à présent voir comment l’utiliser.
Configuration :
Le fichier de configuration par défaut est /etc/logrotate.conf
Nous retrouvons le script de lancement automatique dans : /etc/cron.daily/logrotate
Les fichiers particuliers se trouvent dans /etc/logrotate.d/
Voici le contenu de mon fichier de configuration /etc/logrotate.conf :
# see “man logrotate” for details
# rotate log files weekly
weekly# keep 4 weeks worth of backlogs
rotate 4# create new (empty) log files after rotating old ones
create# uncomment this if you want your log files compressed
#compress# RPM packages drop log rotation information into this directory
include /etc/logrotate.d# no packages own wtmp — we’ll rotate them here
/var/log/wtmp {
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
Ce qui va être important dans ce fichier est la ligne en rouge car c’est elle qui va dire à logrotate de regarder l’ensemble des fichiers conf dans /etc/logrotate.d.
Maintenant, nous allons voir comment paramétrer logrotate pour effectuer la rotation d’un fichier log en particulier.
Exemple :
Créer un fichier du nom de votre service (pour mémo) dans le répertoire /etc/logrotate.d. Nous allons prendre pour exemple le service postfix :
vi /etc/logrotate.d/postfix
Saisissez ces quelques lignes :
/var/log/maillog {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root
sharedscripts
postrotate
if [ -f /var/run/postfix.pid ]; then
/etc/init.d/postfix reload > /dev/null
fi
endscript
}
/var/log/maillog : Correspond au fichier log à utiliser
daily : La rotation s’effectuera tous les jours. Nous pouvons aussi mettre weekly pour toutes les semaines , monthly pour tous les mois.
missingok : signifie que l’absence du/des fichier(s) log(s) n’est pas anormale. Si cette option n’est pas active alors l’administrateur recevra un mail si le/les log(s) est/sont manquant(s).
rotate 52: Nous garderons 52 fichiers. Soit pour mon cas, 52 jours de logs
compress : Les fichiers logs secondaire c’est à dire tout ce qui n’est pas le fichier de log principal 😉 seront compréssés.
delaycompress : Reporte la compression du journal précédent au prochain cycle de permutation. Ceci n’a un effet qu’utilisé en combinaison avec l’option compress. Elle peut être utilisée quand il n’est pas possible de demander à un programme de fermer son journal et qu’il puisse par conséquent continuer à écrire pour un moment dans le journal précédent.
notifempty: permet de ne pas permuter le journal lorsqu’il est vide
create 640 root : Les fichiers secondaire créés auront pour créateur root et auront les droits 640
postrotate/endscript : Les lignes entre prerotate et endscript (chacun devant apparaître sur une ligne isolée) sont exécutées avant permutation du journal. Ces directives doivent apparaîtrent dans la définition d’un journal
sharedscripts : permet d’executer qu’ une fois le script postrotate par rotation
Vous pouvez voir le man en français à cette adresse : http://www.delafond.org/traducmanfr/man/man8/logrotate.8.html
Execution :
Une fois que vous avez fini de configurer votre logrotate, vous pouvez forcer sont éxecution de cette manière :
logrotate -f /etc/logrotate.conf
Pour débugger :
logrotate -d /etc/logrotate.conf
Publicité :)
Articles récents
- Memento VI – Boostez Votre Productivité avec Vi : Trucs et Astuces à Connaître
- Configuration de Nginx pour Obtenir l’IP Réelle des Visiteurs avec CloudFlare
- Récupérer les informations d’un Ordinateur Terra à partir du numéros de série avec Python
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc…
- Failed to Start File System Check – Vcenter 7
Mot-clefs
Commentaires récents
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc… dans
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc… dans
- Rotation des logs avec logrotate dans
- Hôte déconnecté sur le Vcenter. Impossible de se connecter à l’ESX. dans
- Pourquoi mon interface vlan ne veut pas devenir up ? dans
Merci beaucoup pour ces infos très utile !
Faut-il redémarrer Apache pour finir ?
Comme ceci :
postrotate
/etc/init.d/httpd stop
/etc/init.d/httpd start
endscript
Merci pour votre aide.
pour apache, tu peux recharger le service :
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
c’est ce qu’il y a par defaut.
Merci beaucoup la réponse 🙂
J’ai fait ceci :
# chemin du fichier
/usr/local/apache/logs/error_log {
# frequence de rotation par jour
daily
# no error si fichier manquant
missingok
# nous conservons 7 fichiers
rotate 7
# envoi le fichier par mail
mail monmail
# Les fichiers sont compresses
compress
# reporte au prochain cycle
delaycompress
# ne permute pas lorsque le journal est vide
notifempty
# cree un nouveau fichier
create 640 root
# execute une seule fois le script par rotation
sharedscripts
# execute apres la rotation
postrotate
# redemarrage de apache
/etc/init.d/httpd restart
# fin du script
endscript
}
Et ça marche super bien !
Merci.
Merci pour tes conseils
Souhaitant utiliser logrotate pour une application personnelle :
1) Est-il possible d’utiliser une variable d’environnement dans les fichiers de configuration
2) Quelle est la meilleure solution pour forcer logrotate sans etre root
Ah oui cela est nécessaire.