GNU/Linux >> Tutoriels Linux >  >> Linux

HowTo:Le didacticiel de commande ultime Logrotate avec 10 exemples

La gestion efficace des fichiers journaux est une tâche essentielle pour l'administrateur système Linux.

Dans cet article, expliquons comment effectuer les opérations suivantes sur les fichiers journaux à l'aide de UNIX logrotate utilitaire.

  • Faites pivoter le fichier journal lorsque la taille du fichier atteint une taille spécifique
  • Continuez à écrire les informations du journal dans le fichier nouvellement créé après la rotation de l'ancien fichier journal
  • Compresser les fichiers journaux pivotés
  • Spécifiez l'option de compression pour les fichiers journaux pivotés
  • Faites pivoter les anciens fichiers journaux avec la date dans le nom de fichier
  • Exécuter des scripts shell personnalisés immédiatement après la rotation des journaux
  • Supprimer les anciens fichiers journaux ayant fait l'objet d'une rotation

1. Logrotate Fichiers de configuration

Voici les fichiers clés que vous devez connaître pour que logrotate fonctionne correctement.

/usr/sbin/logrotate – La commande logrotate elle-même.

/etc/cron.daily/logrotat e - Ce script shell exécute la commande logrotate tous les jours.

$ cat /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

/etc/logrotate.conf – La configuration de la rotation des journaux pour tous les fichiers journaux est spécifiée dans ce fichier.

$ cat /etc/logrotate.conf
weekly
rotate 4
create
include /etc/logrotate.d
/var/log/wtmp {
    monthly
    minsize 1M
    create 0664 root utmp
    rotate 1
}

/etc/logrotate.d – Lorsque des packages individuels sont installés sur le système, ils déposent les informations de configuration de la rotation des journaux dans ce répertoire. Par exemple, les informations de configuration yum log rotate sont présentées ci-dessous.

$ cat /etc/logrotate.d/yum
/var/log/yum.log {
    missingok
    notifempty
    size 30k
    yearly
    create 0600 root root
}

2. Option Logrotate size :faire pivoter le fichier journal lorsque la taille du fichier atteint une limite spécifique

Si vous souhaitez faire pivoter un fichier journal (par exemple, /tmp/output.log) pour chaque 1 Ko, créez le logrotate.conf comme indiqué ci-dessous.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        create 700 bala bala
        rotate 4
}

Cette configuration de logrotate a les trois options suivantes :

  • taille 1k - logrotate ne s'exécute que si la taille du fichier est égale (ou supérieure) à cette taille.
  • créer - faire pivoter le fichier d'origine et créer le nouveau fichier avec l'autorisation, l'utilisateur et le groupe spécifiés.
  • rotate – limite le nombre de rotations des fichiers journaux. Ainsi, cela ne conserverait que les 4 derniers fichiers journaux ayant fait l'objet d'une rotation.

Avant la rotation du journal, voici la taille de output.log :

$ ls -l /tmp/output.log
-rw-r--r-- 1 bala bala 25868 2010-06-09 21:19 /tmp/output.log

Maintenant, exécutez la commande logrotate comme indiqué ci-dessous. L'option -s spécifie le nom de fichier pour écrire le statut de logrotate.

$ logrotate -s /var/log/logstatus logrotate.conf

Remarque :chaque fois que vous avez besoin d'une rotation des journaux pour certains fichiers, préparez la configuration de logrotate et exécutez la commande logroate manuellement.
Après la rotation des journaux, voici la taille du fichier output.log :

$ ls -l /tmp/output*
-rw-r--r--  1 bala bala 25868 2010-06-09 21:20 output.log.1
-rwx------ 1 bala bala        0 2010-06-09 21:20 output.log

Finalement, cela continuera à suivre la configuration des fichiers journaux en rotation.

  • sortie.log.4.
  • sortie.log.3
  • sortie.log.2
  • sortie.log.1
  • sortie.log

N'oubliez pas qu'après la rotation du journal, le fichier journal correspondant au service pointe toujours vers le fichier pivoté (output.log.1) et continue d'y écrire. Vous pouvez utiliser la méthode ci-dessus, si vous voulez faire pivoter l'apache access_log ou error_log tous les 5 Mo.

Idéalement, vous devriez modifier /etc/logrotate.conf pour spécifier les informations de rotation de log pour un fichier journal spécifique.

De plus, si vous avez d'énormes fichiers journaux, vous pouvez utiliser :10 exemples impressionnants pour afficher d'énormes fichiers journaux sous Unix

3. Option Logrotate copytruncate :continuez à écrire les informations du journal dans le fichier nouvellement créé après la rotation de l'ancien fichier journal.

$ cat logrotate.conf
/tmp/output.log {
         size 1k
         copytruncate
         rotate 4
}

copytruncate instruit logrotate pour créer la copie du fichier d'origine (c'est-à-dire faire pivoter le fichier journal d'origine) et tronque le fichier d'origine à une taille de zéro octet. Cela aide le service respectif qui appartient à ce fichier journal à écrire dans le fichier approprié.

Lors de la manipulation des fichiers journaux, vous trouverez peut-être utile le substitut sed, sed delete tips.

4. Option de compression de logrotate :compressez les fichiers journaux pivotés

Si vous utilisez l'option de compression comme indiqué ci-dessous, les fichiers pivotés seront compressés avec l'utilitaire gzip.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        create 700 bala bala
        rotate 4
        compress
}

Sortie du fichier journal compressé :

$ ls /tmp/output*
output.log.1.gz output.log

5. Option Logrotate dateext :faire pivoter l'ancien fichier journal avec la date dans le nom du fichier journal

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        create 700 bala bala
        dateext
        rotate 4
        compress
}

Après la configuration ci-dessus, vous remarquerez la date dans le fichier journal pivoté, comme indiqué ci-dessous.

$ ls -lrt /tmp/output*
-rw-r--r--  1 bala bala 8980 2010-06-09 22:10 output.log-20100609.gz
-rwxrwxrwx 1 bala bala     0 2010-06-09 22:11 output.log

Cela ne fonctionnerait qu'une fois par jour. Parce que lorsqu'il essaiera de faire pivoter la prochaine fois le même jour, le fichier pivoté plus tôt aura le même nom de fichier. Ainsi, le logrotate ne réussira pas après la première exécution le même jour.

En règle générale, vous pouvez utiliser tail -f pour afficher la sortie du fichier journal en temps réel. Vous pouvez même combiner plusieurs sorties tail -f et les afficher sur un seul terminal.

6. Option Logrotate mensuel, quotidien, hebdomadaire :Rotation du fichier journal hebdomadaire/quotidien/mensuel

Pour faire la rotation mensuelle une fois,

$ cat logrotate.conf
/tmp/output.log {
        monthly
        copytruncate
        rotate 4
        compress
}

Ajoutez le mot-clé hebdomadaire comme indiqué ci-dessous pour la rotation hebdomadaire des journaux.

$ cat logrotate.conf
/tmp/output.log {
        weekly
        copytruncate
        rotate 4
        compress
}

Ajoutez le mot-clé quotidien comme indiqué ci-dessous pour la rotation quotidienne des journaux. Vous pouvez également faire pivoter les journaux toutes les heures.

$ cat logrotate.conf
/tmp/output.log {
        daily
        copytruncate
        rotate 4
        compress
}

7. Option Logrotate postrotate endscript :exécute des scripts shell personnalisés immédiatement après la rotation des journaux

Logrotate vous permet d'exécuter vos propres scripts shell personnalisés après avoir terminé la rotation du fichier journal. La configuration suivante indique qu'il exécutera myscript.sh après la logrotation.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        rotate 4
        compress
        postrotate
               /home/bala/myscript.sh
        endscript
}

8. Option logrotate maxage :supprimer les anciens fichiers journaux ayant subi une rotation

Logrotate supprime automatiquement les fichiers pivotés après un certain nombre de jours. L'exemple suivant indique que les fichiers journaux ayant fait l'objet d'une rotation seront supprimés au bout de 100 jours.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        rotate 4
        compress
        maxage 100
}

9. Option Logrotate missingok :ne renvoie pas d'erreur si le fichier journal est manquant

Vous pouvez ignorer le message d'erreur lorsque le fichier réel n'est pas disponible en utilisant cette option comme indiqué ci-dessous.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        rotate 4
        compress
        missingok
}

10. Option Logrotate compresscmd et compressext :Sspécifiez la commande de compression pour la rotation du fichier journal

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        create
        compress
        compresscmd /bin/bzip2
        compressext .bz2
        rotate 4
}

Les options de compression suivantes sont spécifiées ci-dessus :

  • compresser :indique que la compression doit être effectuée.
  • compresscmd – Spécifiez le type de commande de compression à utiliser. Par exemple :/bin/bzip2
  • compressext - Spécifiez l'extension sur le fichier journal pivoté. Sans cette option, le fichier pivoté aurait l'extension par défaut .gz. Donc, si vous utilisez bzip2 compressioncmd, spécifiez l'extension .bz2 comme indiqué dans l'exemple ci-dessus.

Linux
  1. Faire pivoter et archiver les journaux avec la commande Linux logrotate

  2. Commande de tri sous Linux avec des exemples

  3. Le didacticiel de commande Numfmt avec des exemples pour les débutants

  4. Le didacticiel de commande de type avec des exemples pour les débutants

  5. Le didacticiel de commande Shuf avec des exemples pour les débutants

Le didacticiel Top Command avec des exemples pour les débutants

Le didacticiel de la commande mktemp avec des exemples pour les débutants

Le didacticiel de la commande Grep avec des exemples pour les débutants

Le didacticiel Uniq Command avec des exemples pour les débutants

Le didacticiel de commande fc avec des exemples pour les débutants

Le didacticiel Ultimate Tar Command avec 10 exemples pratiques