Outils pour utilisateurs

Outils du site


sysadmin:linux:logs:rotation-des-logs-via-logrotate

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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.1sysadmin:linux:logs:rotation-des-logs-via-logrotate [2022/01/20 00:27] (Version actuelle) yoann
Ligne 23: Ligne 23:
 ^ 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. |
Ligne 29: Ligne 29:
 ^ 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 =====
Ligne 73: Ligne 74:
  
 <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>
  
Ligne 105: Ligne 106:
 } }
  
 +</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>
  
Ligne 130: Ligne 146:
 /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>
  
Ligne 139: Ligne 208:
   * 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
sysadmin/linux/logs/rotation-des-logs-via-logrotate.1612216289.txt.gz · Dernière modification : 2021/02/01 21:51 de 127.0.0.1