Dans le cas ci-dessous il est déjà en place :
Si vous tapez 'logrotate', vous devriez voir ce type d'écran :
logrotate
Lien vers le fichier : cliquez ici
Le fichier de config de 'base' est /etc/logrotate.conf
Par défaut sous mon Ubuntu V14 la config donne ceci :
# see "man logrotate" for details
# rotate log files weekly
weekly
# use the syslog group by default, since this is the owning group
# of /var/log/syslog.
su root syslog
# 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
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here
Lien vers le fichier : cliquez ici
/var/log/wtmp correspond à l'archivage du fichier wtmp qui enregistre toutes les connexions et déconnexions.
/var/log/btmp est semblable à wtmp. Il affiche les connexions/déconnexions au système.
Il y a surtout la prise en compte de tous les fichiers de configuration situés dans /etc/logrotate.d
avec la ligne include /etc/logrotate.d
On y trouve un fichier de configuration par service
Exemple avec rsyslog. rsyslog prend en charge la rotation de plusieurs logs, dont
/var/log/syslog et /var/log/messages
Donc, si vous voulez modifier la rotation du fichier /var/log/messages
Il ne faut pas modifier la configuration de /etc/logrotate.conf
mais celle de /etc/logrotate.d/rsyslog
Imaginons que vous voulez mettre en place une rotation pour le fichier /var/log/iptables.log
alors une solution propre est de créer un fichier /etc/logrotate.d/iptables
Voici un exemple de contenu
/var/log/iptables.log
{
rotate 7
daily
compress
delaycompress
missingok
notifempty
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
Lien vers le fichier : cliquez ici
Autre exemple pour Tomcat
/var/log/tomcat/catalina.out {
daily
rotate 7
size=1M
notifempty
missingok
copytruncate
compress
}
/opt/tomcat/logs/*.log {
daily
missingok
copytruncate
rotate 7
missingok
compress
}
Lien vers le fichier : cliquez ici
Vous pouvez faire une config pour plusieurs fichiers. Exemple sur un AlmaLinux dans un fichier /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
Lien vers le fichier : cliquez ici
A ce niveau sous Almalinux dans la balise postrotate on aurait aussi pu trouver
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
Lien vers le fichier : cliquez ici
Le contrôle de l'heure de la dernière rotation d'un fichier se fait avec la commande
cat /var/lib/logrotate/status
Lien vers le fichier : cliquez ici
Explications des paramètres
On trouve le détail de différents paramètres sur des sites comme https://linux.die.net/man/8/logrotate
Au sujet du ou des scripts joués dans une balise type postrotate :
invoke-rc.d est une ancienne commande sous Debian/Ubuntu pour exécuter des actions de scripts d'initialisation pour Système V, cependant Système V a été remplacé par systemd.
aussi la commande invoke-rc.d rsyslog rotate > /dev/null
force rsyslog à réouvrir les fichiers qu'il utilise pour écrire les logs.
Avec systemctl (et c'est ma solution préférée) on pourrait faire une commande du type
/usr/bin/systemctl reload rsyslog.service > /dev/null
Après on tombe sur d'autres choses. Sous une distribution type redhat, la documentation indique
/usr/bin/killall -HUP syslogd
killall -HUP
demande à syslogd de recharger sa configuration (vu sur ce forum). HUP (Hang Up) est un type de signal souvent utilisé pour demander à un processus de recharger sa configuration.
Vous pouvez aussi voir cette commande plus complexe qui mène globalement au même résultat :
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
Prise en compte des modifications
Logrotate n'est pas un service. Il utilise crontab.
Aussi il n'y a rien à faire pour prendre en compte des modifications.
Par défaut un schedule journalié doit exister sous /etc/cron.daily
On peut le voir avec
cat /etc/cron.daily/logrotate
Lien vers le fichier : cliquez ici
Son contenu est
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
Lien vers le fichier : cliquez ici
Si vous voulez des déclenchements particuliers, il faut les programmer. Exemple pour un déclenchement tous les jours à 14H :
0 2 * * * root /usr/sbin/logrotate /etc/custom-logrotate.conf
Lien vers le fichier : cliquez ici
On peut voir quand a eu lieu le dernier déclenchement avec
cat /var/lib/logrotate/logrotate.status
Lien vers le fichier : cliquez ici
On peut forcer une exécution de logrotate et de sa conf avec
sudo logrotate /etc/logrotate.conf --verbose --force
Lien vers le fichier : cliquez ici
Vouz pouvez forcer la programmation de l'exécution de logrotate avec crontab
crontab -e
Lien vers le fichier : cliquez ici
Pour l'exécuter tous les jours à 00:05 par exemple, ajoutez
5 0 * * * /usr/sbin/logrotate /etc/logrotate.conf
Lien vers le fichier : cliquez ici
Notez que si vous voulez juste supprimer les fichiers de plus de x jours, ce n'est pas logrotate qu'il faut utiliser mais find. Exemple pour supprimer les fichiers de plus de 1 an dans /opt/kafka/log sans aller au delà des sous répertoires
find /opt/kafka/logs/ -maxdepth 1 -mtime +360 -delete
Lien vers le fichier : cliquez ici
Pages Web
Site Web | Description |
---|---|
Doc.ubuntu-fr.org | Fiche de Logrotate sur doc.ubuntu-fr.org |
Article(s) précédent(s)