GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer et gérer la rotation des journaux à l'aide de Logrotate sous Linux

L'un des répertoires les plus intéressants (et peut-être aussi l'un des plus importants) d'un système Linux est /var/log . Selon le Filesystem Hierarchy Standard, l'activité de la plupart des services exécutés dans le système est écrite dans un fichier à l'intérieur de ce répertoire ou de l'un de ses sous-répertoires.

Ces fichiers sont appelés journaux et sont la clé pour examiner comment le système fonctionne (et comment il s'est comporté dans le passé). Journaux sont également la première source d'informations que consultent les administrateurs et les ingénieurs lors du dépannage.

Si nous regardons le contenu de /var/log sur un CentOS/RHEL/Fedora et Debian/Ubuntu (pour varier), nous verrons les fichiers journaux et sous-répertoires suivants.

Veuillez noter que le résultat peut être quelque peu différent dans votre cas en fonction des services en cours d'exécution sur votre ou vos systèmes et de la durée de leur exécution.

Dans RHEL/CentOS et Fedora

# ls /var/log

Sous Debian et Ubuntu

# ls /var/log

Dans les deux cas, nous pouvons observer que certains noms de journaux se terminent comme prévu par "log" , tandis que d'autres sont renommés à l'aide d'une date (par exemple, maillog-20160822 sur CentOS ) ou compressé (considérez auth.log.2.gz et mysql.log.1.gz sur Debian ).

Ce n'est pas un comportement par défaut basé sur la distribution choisie mais peut être modifié à volonté à l'aide de directives dans les fichiers de configuration, comme nous le verrons dans cet article.

Si les journaux étaient conservés pour toujours, ils finiraient par remplir le système de fichiers où /var/log réside. Afin d'éviter cela, l'administrateur système peut utiliser un utilitaire sympa appelé logrotate pour nettoyer les journaux de manière périodique.

En quelques mots, logrotate renommera ou compressera le journal principal lorsqu'une condition est remplie (plus à ce sujet dans une minute) afin que le prochain événement soit enregistré sur un fichier vide.

De plus, cela supprimera "l'ancien" fichiers journaux et conservera les plus récents. Bien sûr, c'est à nous de décider quel "ancien" signifie et à quelle fréquence nous voulons que logrotate nettoie les journaux pour nous.

Installer Logrotate sous Linux

Pour installer logrotate , utilisez simplement votre gestionnaire de paquets :

---------- Sur Debian et Ubuntu ---------- # aptitude update &&aptitude install logrotate ---------- Sur CentOS, RHEL et Fedora ---------- # yum update &&yum install logrotate

Il est bon de noter que le fichier de configuration (/etc/logrotate.conf ) peut indiquer que d'autres paramètres plus spécifiques peuvent être placés sur des .conf individuels fichiers dans /etc/logrotate.d .

Lecture suggérée :Gérer les journaux système (configurer, faire pivoter et importer dans la base de données) à l'aide de Logrotate

Ce sera le cas si et seulement si la ligne suivante existe et n'est pas commentée :

inclure /etc/logrotate.d

Nous nous en tiendrons à cette approche, car elle nous aidera à garder les choses en ordre et à utiliser Debia n case pour les exemples suivants.

Configurer Logrotate sous Linux

Étant un outil très polyvalent, logrotate fournit de nombreuses directives pour nous aider à configurer quand et comment les journaux seront tournés, et ce qui devrait se passer juste après.

Insérons le contenu suivant dans /etc/logrotate.d/apache2.conf (notez que vous devrez probablement créer ce fichier) et examinez chaque ligne pour indiquer son objectif :

apache2.conf
/var/log/apache2/* { rotation hebdomadaire 3 taille 10M compress delaycompress}

La première ligne indique que les directives à l'intérieur du bloc s'appliquent à tous les journaux à l'intérieur de /var/log/apache2 :

  • hebdomadaire signifie que l'outil tentera de faire pivoter les journaux sur une base hebdomadaire. Les autres valeurs possibles sont quotidiennes et mensuelles.
  • faire pivoter de 3 indique que seuls 3 journaux en rotation doivent être conservés. Ainsi, le fichier le plus ancien sera supprimé lors de la quatrième exécution suivante.
  • taille=10M définit la taille minimale pour que la rotation ait lieu à 10M. En d'autres termes, chaque journal ne sera pas pivoté tant qu'il n'aura pas atteint 10 Mo.
  • compresser et delaycompress sont utilisés pour indiquer que tous les journaux ayant fait l'objet d'une rotation, à l'exception du plus récent, doivent être compressés.

Exécutons un essai pour voir ce que logrotate ferait s'il était réellement exécuté maintenant. Utilisez le -d option suivie du fichier de configuration (vous pouvez en fait exécuter logrotate en omettant cette option) :

# logrotate -d /etc/logrotate.d/apache2.conf

Les résultats sont affichés ci-dessous :

Au lieu de compresser les journaux, nous pourrions les renommer après la date quand ils ont été tournés. Pour ce faire, nous utiliserons le dateext directif. Si notre format de date est autre que le format par défaut aaaammjj , nous pouvons le spécifier en utilisant dateformat .

Lecture suggérée :Installez 'atop' pour surveiller l'activité de journalisation des processus système Linux

Notez que nous pouvons même empêcher la rotation de se produire si le journal est vide avec notifempty . De plus, disons à logrotate d'envoyer le journal pivoté à l'administrateur système ([email protected] dans ce cas) pour sa référence (cela nécessitera la mise en place d'un serveur de messagerie, ce qui sort du cadre de cet article).

Si vous souhaitez recevoir des e-mails à propos de logrotate, vous pouvez configurer le serveur de messagerie Postfix comme indiqué ici :Installer le serveur de messagerie Postfix

Cette fois, nous utiliserons /etc/logrotate.d/squid.conf pour ne faire pivoter que /var/log/squid/access.log :

squid.conf
/var/log/squid/access.log { création mensuelle 0644 root root rotate 5 size=1M dateext format de date -%d%m%Y notifempty mail [email protected]}

Comme nous pouvons le voir dans l'image ci-dessous, ce journal n'a pas eu besoin d'être tourné. Cependant, lorsque la condition de taille est remplie (size=1M ), le journal pivoté sera renommé access.log-25082020 (si le journal a fait l'objet d'une rotation le 25 août 2020 ) et le journal principal (access.log ) sera recréé avec les autorisations d'accès définies sur 0644 et avec racine en tant que propriétaire et propriétaire du groupe.

Enfin, lorsque le nombre de journaux atteint enfin 6 , le journal le plus ancien sera envoyé à [email protected] .

Supposons maintenant que vous souhaitiez exécuter une commande personnalisée lorsque la rotation a lieu. Pour ce faire, placez la ligne avec une telle commande entre les directives postrotate et endscript.

Par exemple, supposons que nous voulions envoyer un e-mail à root lorsque l'un des journaux dans /var/log/myservice se tourne. Ajoutons les lignes en rouge à /etc/logrotate.d/squid.conf :

squid.conf
/var/log/myservice/* { month create 0644 root root rotate 5 size=1M postrotate echo "Une rotation vient d'avoir lieu." | mail root endscript } 

Enfin, il est important de noter que les options présentes dans /etc/logrotate.d/*.conf remplacer ceux du fichier de configuration principal en cas de conflits.

Logrotate et Cron

Par défaut, l'installation de logrotate crée un fichier crontab dans /etc/cron.daily nommé logrotate . Comme c'est le cas avec les autres fichiers crontab de ce répertoire, il sera exécuté quotidiennement à partir de 6h25 si anacron n'est pas installé.

Lecture suggérée :11 exemples de tâches de planification Cron sous Linux

Sinon, l'exécution commencera vers 7h35 . Pour vérifier, surveillez la ligne contenant cron.daily soit dans /etc/crontab ou /etc/anacrontab .

Résumé

Dans un système qui génère plusieurs logs, l'administration de tels fichiers peut être grandement simplifiée grâce à logrotate. Comme nous l'avons expliqué dans cet article, il effectuera automatiquement la rotation, la compression, la suppression et la messagerie des journaux de manière périodique ou lorsque le fichier atteint une taille donnée.

Assurez-vous simplement qu'il est configuré pour s'exécuter en tant que tâche cron et logrotate vous facilitera grandement la tâche. Pour plus de détails, reportez-vous à la page de manuel.

Avez-vous des questions ou des suggestions concernant cet article ? N'hésitez pas à nous le faire savoir en utilisant le formulaire de commentaire ci-dessous.


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

  2. Comment gérer et répertorier les services sous Linux

  3. Comment installer et utiliser logrotate pour gérer les fichiers journaux dans Ubuntu 18.04 LTS

  4. Comment gérer les fichiers journaux à l'aide de Logrotate sous Linux

  5. Comment créer une rotation de fichier journal personnalisée par logrotate sous Linux

Comment configurer le serveur de sauvegarde à l'aide de Rsnapshot sous Linux

Comment afficher les fichiers journaux standard sur les serveurs Ubuntu Linux

Comment installer s3cmd sous Linux et gérer les compartiments Amazon s3

Comment créer et gérer des partitions Linux à l'aide de Parted

Comment masquer des dossiers et des fichiers sous Linux à l'aide d'un fichier texte

Comment configurer le serveur et le client VPN Linux à l'aide d'OpenVPN