« Logrotate » : différence entre les versions

De Justine's wiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 58 : Ligne 58 :
== Tester mon fichier de conf ==
== Tester mon fichier de conf ==
  logrotate -f /mon/fichier/de/conf
  logrotate -f /mon/fichier/de/conf
= Compression multithread avec pigz =
* [https://www.makethenmakeinstall.com/2015/04/logrotate-with-alternate-compression-tool-such-as-pigz/ Source]
* [https://manpages.debian.org/bookworm/pigz/pigz.1.en.html Manuel]
Par défaut, logrotate utilise gzip pour la compression des logs. Cet utilitaire suffit la plupart du temps, mais il a le défaut d'être monothread. Il n'est pas très efficace dans le cas de fichiers volumineux.
On peut vouloir une alternative multi-thread si on de gros fichiers de logs, comme c'est mon cas par exemple avec mon serveur syslog. On peut alors utiliser pigz, qui est une variante multi-threadée de gzip.
Une version de logrotate supérieure ou égale à 3.8.1-5 est nécessaire pour gérer correctement les arguments dans compressoptions.
<nowiki>
/data/syslog/*/*.log {
# Fréquence de rotation par défaut :
    daily
# Si l'un des journaux décrit est manquant, aucune erreur n'est remontée.
    missingok
# Les logs sont compressés après rotation avec pigz sur 4 threads (-p4) :
    compress
    compresscmd /usr/bin/pigz
    compressoptions -p5
# Compression le jour suivant
    delaycompress
# Insertion de la date dans l'archivage des journaux.
    dateext
# Prise en compte de la date de la veille pour plus de cohérence
    dateyesterday
# Conservation de l'extension .log après rotation "-YYYYMMDD.log.gz"
    extension .log
# Une rotation par jour est effectuée
    rotate 366
# Si une archive est agée de plus de 366 jours, elle est détruite :
    maxage 366
# Lors d'une rotation, un fichier de remplacement est créé avec les droits 0640 appartenant à root et au groupe root.
    create 640 root root
# Indique au service rsyslog qu'une rotation des logs a été faite
    postrotate
          invoke-rc.d rsyslog rotate > /dev/null
    endscript
}
</nowiki>

Version du 23 juillet 2024 à 09:27

Utilité

Logrotate sert à faire tourner les fichiers de logs sous Linux, en les compressant et / ou en les effaçant.

J'en parle déjà Ici

Créer un script de logrotate

https://www.thegeekstuff.com/2010/07/logrotate-examples/

D'abord, l'emplacement des différents élements:

* /usr/bin/logrotate: La commande en elle même
* /etc/cron.daily/logrotate : Le script shell qui execute logrotate tous les jours
* /etc/logrotate.conf : La configuration de rotation des logs est spécifiée ici
* /etc/logrotate.d : Les paquets installés sur le systèmes lâchent leur configuration logrotate ici.

Lancer la commande logrotate à la main

logrotate -s /var/log/logstatus logrotate.conf
# -s : on écrit le statut de la rotation dans logstatus

Exemples

<source lang="bash"> /tmp/output.log {

       size 1k #On rotate au dela de 1ko
       monthly  #On rotate tous les mois (marche avec weekly, daily...)
       create 700 justine admins #Nouveau fichier créé avec autorisation 700, user justine, groupe admins
       rotate 4 #Combien de fichiers ayant déjà tourné on garde
       copytruncate #Pas compris... Aide le programme à loguer au bon endroit
       compress #Compresser les archives
       dateext #Mettre la date dans le nom des archives
       postrotate #Faire des choses après la compression
            /home/justine/script.sh
       maxage 100 #Toutes les archives + de 100 jours sont supprimées
       missingok #Pas de message d'erreur si le fichier n'existe pas
       compresscmd /bin/bzip2 #On précise la commande de compression...
       compressext #...et l'extension

} </source>

Un exemple fonctionnel (les commentaires ne sont pas acceptés) <source> /var/log/blogpull.log {

       size 1k 
       weekly 
       create 644 root root
       rotate 10
       copytruncate 
       compress
       dateext
       maxage 100
       missingok
       compresscmd /bin/bzip2
       compressext .bz2

} </source>

Tester mon fichier de conf

logrotate -f /mon/fichier/de/conf

Compression multithread avec pigz

Par défaut, logrotate utilise gzip pour la compression des logs. Cet utilitaire suffit la plupart du temps, mais il a le défaut d'être monothread. Il n'est pas très efficace dans le cas de fichiers volumineux.

On peut vouloir une alternative multi-thread si on de gros fichiers de logs, comme c'est mon cas par exemple avec mon serveur syslog. On peut alors utiliser pigz, qui est une variante multi-threadée de gzip.

Une version de logrotate supérieure ou égale à 3.8.1-5 est nécessaire pour gérer correctement les arguments dans compressoptions.

/data/syslog/*/*.log {

# Fréquence de rotation par défaut :
    daily

# Si l'un des journaux décrit est manquant, aucune erreur n'est remontée.
    missingok

# Les logs sont compressés après rotation avec pigz sur 4 threads (-p4) :
    compress
    compresscmd /usr/bin/pigz
    compressoptions -p5

# Compression le jour suivant
    delaycompress

# Insertion de la date dans l'archivage des journaux.
    dateext

# Prise en compte de la date de la veille pour plus de cohérence
    dateyesterday

# Conservation de l'extension .log après rotation "-YYYYMMDD.log.gz"
    extension .log

# Une rotation par jour est effectuée
    rotate 366

# Si une archive est agée de plus de 366 jours, elle est détruite :
    maxage 366

# Lors d'une rotation, un fichier de remplacement est créé avec les droits 0640 appartenant à root et au groupe root.
    create 640 root root

# Indique au service rsyslog qu'une rotation des logs a été faite
    postrotate
          invoke-rc.d rsyslog rotate > /dev/null
    endscript
}