Les deux révisions précédentesRévision précédente | |
sysadmin:linux:logs:rotation-des-logs-via-logrotate [2021/02/01 21:51] – modification externe 127.0.0.1 | sysadmin:linux:logs:rotation-des-logs-via-logrotate [2022/01/20 00:27] (Version actuelle) – yoann |
---|
^ compress, nocompress | L' archive du log sera compressée ou pas. | | ^ compress, nocompress | L' archive du log sera compressée ou pas. | |
^ delaycompress | Si la compression est active, elle a lieu lors de la prochaine rotation. | | ^ delaycompress | Si la compression est active, elle a lieu lors de la prochaine rotation. | |
^ missingok | N’arrête pas le processus et poursuit avec le fichier de log suivant. | | ^ missingok | Ne pgénère pas d'erreur si le ficheir de log est manquant. N’arrête pas le processus et poursuit avec le fichier de log suivant. | |
^ notifempty | Pas de rotation si le fichier de log est vide. | | ^ notifempty | Pas de rotation si le fichier de log est vide. | |
^ size | Définir une taille limite déclenchant la rotation. Cette directive est prioritaire sur la périodicité de rotation. | | ^ size | Définir une taille limite déclenchant la rotation. Cette directive est prioritaire sur la périodicité de rotation. | |
^ postrotate/endscript | Actions/commandes a exécuter après rotation. | | ^ postrotate/endscript | Actions/commandes a exécuter après rotation. | |
^ sharedscripts | Les scripts pre/postrotate sont exécutés une seule fois pour le fichier log considéré et non pas à chaque rotation. | | ^ sharedscripts | Les scripts pre/postrotate sont exécutés une seule fois pour le fichier log considéré et non pas à chaque rotation. | |
^ su user group | Change l'utilisateur/groupe d’exécution de logrotate | ^ su user group | Change l'utilisateur/groupe d’exécution de logrotate pour la création du fichier archive | |
| ^ dateext | Ajouter une date en suffixe au nom du fichier archive. | |
| |
===== Syntaxe ===== | ===== Syntaxe ===== |
| |
<note> | <note> |
Avec l'option **-d**, les notifications sont affichées mais aucune modification n'est apportée au système de fichier (exécution dry run). | Avec l'option **-d**, les notifications sont affichées mais aucune modification n'est apportée au système de fichier (exécution dry-run). |
</note> | </note> |
| |
} | } |
| |
| </file> |
| |
| ===== Exécution par l'utilisateur ===== |
| |
| **logrotate** peut être lancé périodiquement par un tout utilisateur non privilégié du système. Pour cela l'utilisateur crée son fichier de configuration et utilise cron pour appeler logrotate avec la périodicité qu'il souhaite: |
| |
| <code bash> |
| crontab -e |
| </code> |
| |
| La commande présente dans le fichier cron sera de la forme: |
| |
| <file> |
| # Exemple de contenu du crontab de l'utilisateur |
| 15 * * * * /usr/sbin/logrotate /home/username/logrotate.conf --state /home/username/logrotate-state |
</file> | </file> |
| |
/usr/sbin/apache2ctl -k graceful | /usr/sbin/apache2ctl -k graceful |
endscript | endscript |
| </file> |
| |
| <note> |
| L'option **copytruncate** tronque le fichier log courant en place après avoir créer une copie plutôt que de renommer le fichier et de créer un nouveau fichier vide. Elle est nécessaire pour les services pour lesquels on ne peut pas demander la fermeture de leur fichiers de logs. |
| </note> |
| |
| ==== UFW : le fichier ufw.log reste vide après rotation ==== |
| |
| Après rotation, le nouveau fichier ufw.log reste vide. Les événements continuent à être écris dans le fichier archive ufw.x.log |
| |
| C'est le daemon rsyslogd qui se charge d'écrire les messages dans le fichier /var/log/ufw.log. Dans le fichier de configuration /etc/logrorate.d/ufw, on peut voir que la commande proposée par défaut retourne une erreur quand elle est exécutée manuellement. |
| |
| <code bash> |
| invoke-rc.d rsyslog rotate |
| * Closing open files rsyslogd [fail] |
| </code> |
| |
| Cela peut être du au fait que rsyslog géré comme unité par **systemd**. Les commandes suivantes ont le même effet et ne retourne pas d'erreur: |
| <code bash> |
| # cette commande est aussi utilisée par d'autres fichiers de configuration |
| /usr/lib/rsyslog/rsyslog-rotate |
| |
| # equivalent |
| systemctl kill -s HUP rsyslog.service |
| </code> |
| |
| Ci-dessous un exemple de fichier **''/etc/logrotate.d/ufw''** modifié: |
| |
| <file conf ufw> |
| /var/log/ufw.log |
| { |
| su root syslog |
| |
| # Rotation quotidienne |
| daily |
| |
| # Conserve 30 fichiers (un mois) |
| rotate 30 |
| |
| # Les fichiers archives ne sont pas compressés |
| nocompress |
| |
| # Ne génère pas de message d'erreur si le fichier est manquant |
| missingok |
| |
| # droit d'acces et propriétaire du fichier apres rotation |
| create 0644 syslog adm |
| |
| sharedscripts |
| postrotate |
| /usr/lib/rsyslog/rsyslog-rotate |
| endscript |
| } |
</file> | </file> |
| |
* https://chasemp.github.io/2013/07/24/su-directive-logrotate/ | * https://chasemp.github.io/2013/07/24/su-directive-logrotate/ |
* https://www.techrepublic.com/article/manage-linux-log-files-with-logrotate/ | * https://www.techrepublic.com/article/manage-linux-log-files-with-logrotate/ |
| * https://linoxide.com/setup-log-rotation-logrotate-ubuntu/ |
| * https://www.digitalocean.com/community/tutorials/how-to-manage-logfiles-with-logrotate-on-ubuntu-20-04 |