Logrotate
Utilité
Logrotate sert à faire tourner les fichiers de logs sous Linux, en les compressant et / ou en les effaçant.
J'en parle déjà Ici
Créer un script de logrotate
https://www.thegeekstuff.com/2010/07/logrotate-examples/
D'abord, l'emplacement des différents élements:
* /usr/bin/logrotate: La commande en elle même * /etc/cron.daily/logrotate : Le script shell qui execute logrotate tous les jours * /etc/logrotate.conf : La configuration de rotation des logs est spécifiée ici * /etc/logrotate.d : Les paquets installés sur le systèmes lâchent leur configuration logrotate ici.
Lancer la commande logrotate à la main
logrotate -s /var/log/logstatus logrotate.conf # -s : on écrit le statut de la rotation dans logstatus
Exemples
/tmp/output.log { size 1k #On rotate au dela de 1ko monthly #On rotate tous les mois (marche avec weekly, daily...) create 700 justine admins #Nouveau fichier créé avec autorisation 700, user justine, groupe admins rotate 4 #Combien de fichiers ayant déjà tourné on garde copytruncate #Pas compris... Aide le programme à loguer au bon endroit compress #Compresser les archives dateext #Mettre la date dans le nom des archives postrotate #Faire des choses après la compression /home/justine/script.sh maxage 100 #Toutes les archives + de 100 jours sont supprimées missingok #Pas de message d'erreur si le fichier n'existe pas compresscmd /bin/bzip2 #On précise la commande de compression... compressext #...et l'extension }
Un exemple fonctionnel (les commentaires ne sont pas acceptés)
/var/log/blogpull.log { size 1k weekly create 644 root root rotate 10 copytruncate compress dateext maxage 100 missingok compresscmd /bin/bzip2 compressext .bz2 }
Tester mon fichier de conf
logrotate -f /mon/fichier/de/conf
Compression multithread avec pigz
Par défaut, logrotate utilise gzip pour la compression des logs. Cet utilitaire suffit la plupart du temps, mais il a le défaut d'être monothread. Il n'est pas très efficace dans le cas de fichiers volumineux.
On peut vouloir une alternative multi-thread si on de gros fichiers de logs, comme c'est mon cas par exemple avec mon serveur syslog. On peut alors utiliser pigz, qui est une variante multi-threadée de gzip.
Une version de logrotate supérieure ou égale à 3.8.1-5 est nécessaire pour gérer correctement les arguments dans compressoptions.
/data/syslog/*/*.log { # Fréquence de rotation par défaut : daily # Si l'un des journaux décrit est manquant, aucune erreur n'est remontée. missingok # Les logs sont compressés après rotation avec pigz sur 4 threads (-p4) : compress compresscmd /usr/bin/pigz compressoptions -p5 # Compression le jour suivant delaycompress # Insertion de la date dans l'archivage des journaux. dateext # Prise en compte de la date de la veille pour plus de cohérence dateyesterday # Conservation de l'extension .log après rotation "-YYYYMMDD.log.gz" extension .log # Une rotation par jour est effectuée rotate 366 # Si une archive est agée de plus de 366 jours, elle est détruite : maxage 366 # Lors d'une rotation, un fichier de remplacement est créé avec les droits 0640 appartenant à root et au groupe root. create 640 root root # Indique au service rsyslog qu'une rotation des logs a été faite postrotate invoke-rc.d rsyslog rotate > /dev/null endscript }