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
Prochaine révision
Révision précédente
sysadmin:linux:logs:rotation-des-logs-via-logrotate [2020/08/28 07:28] yoannsysadmin:linux:logs:rotation-des-logs-via-logrotate [2022/01/20 00:27] (Version actuelle) yoann
Ligne 4: Ligne 4:
 ====== logrotate: rotation des fichiers logs ====== ====== logrotate: rotation des fichiers logs ======
  
-Principal intérêt de logrotate: limiter l'accroissement à l'infini de la taille des fichiers logs.+Principal intérêt de logrotate: limiter l'accroissement à l'infini des fichiers logs.
  
 Pour chaque fichier journal logrotate agit en 2 étapes: Pour chaque fichier journal logrotate agit en 2 étapes:
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 107: Ligne 108:
 </file> </file>
  
-===== Dépannages =====+===== 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>
 +
 +===== Troubleshooting =====
 +
 +==== La rotation des logs ne se produit pas ====
 +
 +Lorsque logrotate est exécuté avec l'argument **-d** les messages ne retournent pas d'anomalies cependant la rotation des logs ne se fait pas.
 +
 +Ceci peut être du à:
 +  * Des problèmes de droits d'accès lorsque logrotate s’exécute sous un autre compte que root (directive su) 
 +  * Si des scripts prerotate existent une erreur d'exécution peut interrompre le processus.
 +
 +Invoquer la commande logrotate avec le fichier de configuration à tester et l'option -f pour forcer l’exécution d'une rotation et déclencher l'appel des scripts. Les erreurs retournées devront être corrigées.
 +
 + 
 ==== Apache n’écrit pas dans le nouveau fichier de log ==== ==== Apache n’écrit pas dans le nouveau fichier de log ====
  
Ligne 119: 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 127: Ligne 207:
   * https://www.croc-informatique.fr/2009/06/rotation-des-logs-avec-logrotate/   * https://www.croc-informatique.fr/2009/06/rotation-des-logs-avec-logrotate/
   * 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://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.1598599693.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)