Logrotate
Logrotate est un outil permettant la rotation de journaux d'évènements. Il a pour objectif de limiter la place occupée par ceux-ci en les compressant, puis supprimant périodiquement selon des paramètres définis par l'administrateur. Couplés, à un Rsyslog distant, c'est une bonne solution de gestion de journaux système.
Installation
Ce programme est bien souvent installé par défaut dans les distributions Linux. Sous Debian, il est disponible dans les dépôts.
apt install logrotate
Configuration
Structure des fichiers
Logrotate se base sur des fichiers de configuration présents dans /etc/logrotate.d/
qu'ils parcourras lors d'un rechargement via un systemctl restart logrotate.service
. Chaque fichier représente un service et non un journal. Ainsi, une configuration peut contenir plusieurs fichiers de journaux à faire tourner et des paramètres différents pour chacun d'eux (on est pas obliger de faire un fichier de configuration par fichier de journal).
Un fichier de configuration se compose de deux parties:
- les fichiers à faire tourner
- les paramètres de rotation
On aura donc une structure comme ceci:
/toto/titi/tutu.log
/toto/tata/toto.log
/titi/toto/tata.log
{
paramètre1
paramètre2
paramètre3
}
Ces sections peuvent êtres présentes plusieurs fois dans un même fichier de configuration afin d'appliquer des paramètres différents à des ensembles de fichiers différents. Par exemple, la configuration du service Rsyslog située dans /etc/logrotate.d/rsyslog
se compose de deux ensembles de paramètres distincts:
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
Il existe un grand nombre d'options et les retracer ici serai bien trop volumineux. Je vous renvois à la page de manuel dédiée afin de sélectionner les paramètres qui peuvent répondre à vos besoins. En l'absence d'exigence particulière, vous pouvez toujours copier et adapter les fichiers déjà présents avec le paquet comme par exemple celui de DPKG (/etc/logrotate.d/dpkg
). Celui-ci à l'avantage d'être simple à appréhender et conviendra à une configuration basique d'un service comme Traefik:
/var/log/dpkg.log {
monthly
rotate 12
compress
delaycompress
missingok
notifempty
create 644 root root
}
Caractéristiques de rotation
Le résultat du travail de Logrotate est visualisable dans le même répertoire que le journal à faire tourner et se présente sous forme d'un ensemble de fichiers compressés ou non (en fonction de vos règles) par rotation et par journal. Pour reprendre l'exemple de DPKG, nous aurons pour le mois en cours, le journal standard du système sans aucune action de rotation: /var/log/dpkg.log
. Le mois suivant, ce journal se retrouve déplacé sous le nom de (/var/log/dpkg.log.1
) et le prochain évennement recréra le /var/log/dpkg.log
(ce qui permet d'avoir un noueau fichier pour le nouveau mois en cours). Le mois d'après, le fichier /var/log/dpkg.log.1
sera compressé en /var/log/dpkg.log.2.gz
, /var/log/dpkg.log
deviendra /var/log/dpkg.log.1
et un nouveau /var/log/dpkg.log
sera créé au prochain évennement. Tout ceci sera reproduit jusqu'à la limite fixée par le paramètre rotate
qui supprimera alors les fichiers trop anciens à chaque rotation. Un ls -t /var/log/dpkg.log*
nous denera donc:
/var/log/dpkg.log
/var/log/dpkg.log.1
/var/log/dpkg.log.2.gz
/var/log/dpkg.log.3.gz
/var/log/dpkg.log.4.gz
/var/log/dpkg.log.5.gz
/var/log/dpkg.log.6.gz
/var/log/dpkg.log.7.gz
/var/log/dpkg.log.8.gz
/var/log/dpkg.log.9.gz
/var/log/dpkg.log.10.gz
/var/log/dpkg.log.11.gz
/var/log/dpkg.log.12.gz