Mise en place de logrotate sur Centos 7
Hier, j’ai rencontré un problème de partition /var/log/ de faible capacité. Certains journaux étaient trop gros et logrotate est l’outil parfait pour gérer ce problème. C’est un logiciel conçu pour réduire la quantité d’espace pour chaque fichier journal que nous avons. Et il peut être fait avec quelques façons.
Logrotate Description : logrotate est conçu pour faciliter l’administration des systèmes qui génèrent un grand nombre de fichiers journaux. Il permet la rotation, la compression, la suppression et l’envoi automatique des fichiers journaux. Chaque fichier journal peut être traité quotidiennement, hebdomadairement, mensuellement, ou lorsqu’il devient trop volumineux.
Normalement, logrotate est exécuté comme une tâche cron quotidienne. Il ne modifiera pas un journal plusieurs fois dans une journée Donc, en quelques mots, logrotate réduit l’utilisation de l’espace sur le disque par les fichiers journaux.
Configuration de logrotate
La configuration de logrotate se fait dans un fichier principal : /etc/logrotate.conf et d’autres fichiers de configuration spécifiques au service qui sont stockés dans /etc/logrotate.d/
Donc l’exemple principal de configuration est:
# see "man logrotate" for details# rotate log files weekly specified in /etc/logrotate.d/weekly# keep 4 weeks of all log filesrotate 4# create new (empty) log files after rotating old onescreate# use date as a suffix of the rotated filedateext# uncomment this if you want your log files compressed by gzipcompress# RPM packages drop log rotation information into this directory#there are all other configurations of services and their logs to rotateinclude /etc/logrotate.d
Certains exemples et configurations réelles de fichiers journaux
Donc, nous pouvons ajouter un nouveau fichier journaux dans /var/log/ de cette façon :
echo "this is a sample log file" > /var/log/vasil.log#this create a log file vasil1.log of size 5MBdd if=/dev/zero of=/var/log/vasil1.log bs=1M count=5
Puis, nous créons un nouveau fichiers de configuration qui sont stockés dans la destination expliquée ci-dessus:
vim /etc/logrotate.d/vasil###/var/log/vasil.log { missingok notifempty compress minsize 1M daily create 0600 root root}
vim /etc/logrotate.d/vasil1###/var/log/vasil1.log { missingok notifempty compress minsize 1M daily create 0600 root root}
Et som explication des variables :
- missingok – ne pas sortir d’erreur si le fichier de log est manquant
- notifempty – ne pas faire tourner le fichier de log s’il est vide
- comprimer – Les anciennes versions des fichiers de log sont compressées avec gzip par défaut
- minsize – Le fichier de log est tourné seulement s’il est de taille égale ou supérieure à celle du fichier de log. file is rotated only if it is bigger than 1M
- daily – assure une rotation quotidienne
- create – crée un nouveau fichier journal avec des permissions 600 où le propriétaire et le groupe sont l’utilisateur root
Si vous voulez plus d’options et leur explication, consultez le manuel :
man logrotare
Regardez la liste de /var/log pour nos fichiers journaux. Nous pouvons voir, que nous avons un log vasil.log avec une taille de 26b et vasil1.log avec une taille de 5MB.
ls -lah /var/log/va*-rw-r--r--. 1 root root 5.0M Mar 3 13:21 /var/log/vasil1.log-rw-r--r--. 1 root root 26 Mar 3 13:21 /var/log/vasil.log
Maintenant, nous pouvons déboguer notre configuration via cette commande:
logrotate -d /etc/logrotate.d/vasil1orlogrotate -d /etc/logrotate.d/vasil
Si nous voulons exécuter logrotate manuellement et voir, ce qui se passe, exécutez la commande suivante. Mais attention car elle fait tourner tous vos logs, définis dans /etc/logrotate.d/
logrotate -f /etc/logrotate.conf
Et nous pouvons voir les deux fichiers journaux compressés et deux nouveaux fichiers journaux vides créés :
ls -lah /var/log/va*-rw-------. 1 root root 0 Mar 3 13:23 /var/log/vasil1.log-rw-r--r--. 1 root root 5.0K Mar 3 13:21 /var/log/vasil1.log-20170303.gz-rw-------. 1 root root 0 Mar 3 13:23 /var/log/vasil.log-rw-r--r--. 1 root root 44 Mar 3 13:21 /var/log/vasil.log-20170303.gz
Nous pouvons consulter notre fichier journal compressé par cette commande :
zcat /var/log/vasil.log-20170303.gzthis is a sample log file
Ou nous pouvons utiliser gunzip pour les décompresser par la commande gzip.
Lorsque nous utilisons logrotate, nous devons parfois redémarrer une application ou un service. Logrotate peut le faire par un script appelé « postrotate ». Ce script peut être utilisé dans le fichier de configuration comme httpd. Lorsque les journaux sont tournés, le script recharge le service pour utiliser le nouveau fichier journal vide.
cat /etc/logrotate.d/httpd/var/log/httpd/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript}
J’espère donc, que ce how to aide quelqu’un 🙂 Amusez-vous bien.