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

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

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

De tels fichiers sont connus sous le nom bûches et sont la clé pour examiner le fonctionnement du système (et comment il s'est comporté dans le passé). Bûches sont également la première source d'informations où les administrateurs et les ingénieurs recherchent tout en dépannage.

Si nous regardons le contenu de / var / log sur un Centos / Rhel / Fedora et Debian / Ubuntu (pour la variété) 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 exécutés sur votre système et le temps qu'ils ont exécuté.

Dans Rhel / Centos et Fedora

# ls / var / log 
Fichiers journaux et répertoires sous Centos 7

Dans Debian et Ubuntu

# ls / var / log 
Fichiers journaux et répertoires dans Debian 8

Dans les deux cas, nous pouvons observer que certains des noms de journal se terminent comme prévu dans "enregistrer", tandis que d'autres sont renommés à l'aide d'une date (par exemple, Maillog-20160822 sur Centos) ou compressé (considérer authentification.enregistrer.2.gz et mysql.enregistrer.1.gz sur Debian).

Ce n'est pas un comportement par défaut basé sur la distribution choisie mais peut être modifié à volonté en utilisant des 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'empêcher cela, l'administrateur système peut utiliser un bon utilitaire appelé logrotate Pour nettoyer les journaux sur une base périodique.

En quelques mots, logrotate renommera ou comprimera le journal principal lorsqu'une condition sera remplie (plus à ce sujet en une minute) afin que l'événement suivant soit enregistré sur un fichier vide.

De plus, il supprimera "vieux" les fichiers journaux et garderont les plus récents. Bien sûr, nous décidons de quoi "vieux" signifie et à quelle fréquence nous voulons que Logrotate nettoie les journaux pour nous.

Installation de Logrotate en Linux

À installer logrotate, Utilisez simplement votre gestionnaire de packages:

---------- Sur Debian et Ubuntu ---------- # mise à jour de l'aptitude && aptitude installer logrotate ---------- Sur Centos, Rhel et Fedora ---------- # yum Update && yum install logrotate 

Il vaut la peine et bien de noter que le fichier de configuration (/ etc / Logrotate.confli) peut indiquer que d'autres paramètres plus spécifiques peuvent être placés sur l'individu .confli fichiers à l'intérieur / etc / Logrotate.d.

Lire suggérée: Gérer les journaux système (configurer, tourner 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 resterons avec cette approche, car elle nous aidera à maintenir les choses en ordre, et à utiliser le DebiaN Box pour les exemples suivants.

Configurer le logrotate dans 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 arriver juste après.

Insérons le contenu suivant dans / etc / Logrotate.d / apache2.confli (Notez que vous devrez probablement créer ce fichier) et examiner chaque ligne pour indiquer son objectif:

apache2.confli
/ var / log / apache2 / * hebdomadaire Rotate 3 taille 10m compress deltCompress 

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

  • hebdomadaire signifie que l'outil tentera de faire pivoter les journaux sur une base hebdomadaire. D'autres valeurs possibles sont quotidiennes et mensuelles.
  • tourner 3 indique que seuls 3 journaux tournés doivent être conservés. Ainsi, le fichier le plus ancien sera supprimé lors de la quatrième exécution ultérieure.
  • taille = 10m Définit la taille minimale pour que la rotation ait lieu à 10m. En d'autres termes, chaque journal ne sera pas tourné jusqu'à ce qu'il atteigne 10 Mo.
  • compresse et DelayCompress sont utilisés pour dire que tous les journaux tournés, à l'exception du plus récent, doivent être compressés.

Exécutons une course à sec pour voir ce que ferait Logrotate s'il était réellement exécuté maintenant. Utilisez le -d Option suivie du fichier de configuration (vous pouvez réellement exécuter Logrotate en omettant cette option):

# Logrotate -d / etc / Logrotate.d / apache2.confli 

Les résultats sont montrés plus bas:

Tourner les journaux apaches avec un logrotate

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

Lire suggérée: Installer «au sommet» 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 notifier. De plus, disons à Logrotate d'envoyer le journal tourné à l'administrateur système ([Protégé par e-mail] Dans ce cas) pour sa référence (cela nécessitera une configuration d'un serveur de messagerie, qui est hors de portée de cet article).

Si vous souhaitez recevoir des e-mails sur Logrotate, vous pouvez configurer le serveur de messagerie postfix comme indiqué ici: Installez le serveur de messagerie postfix

Cette fois, nous utiliserons / etc / Logrotate.d / calmar.confli Pour ne faire tourner que / var / log / squid / accès.enregistrer:

calmar.confli
/ var / log / squid / accès.Log mensuel Créer 0644 Root Root Rotate 5 Size = 1M DateExt DateFormat -% D% M% Y Mail notifempty [Protégé par e-mail] 

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

Enfin, lorsque le nombre de journaux atteint enfin 6, Le journal le plus ancien sera envoyé par la poste [Protégé par e-mail].

Totate des journaux de calmar avec loggrotate

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 postprotate et Endscript.

Par exemple, supposons que nous voulons envoyer un e-mail à root lorsque l'un des journaux à l'intérieur / var / log / myService se fait tourner. Ajoutons les lignes en rouge à / etc / Logrotate.d / calmar.confli:

calmar.confli
/ var / log / myService / * mensuel Créer 0644 Root Root Rotate 5 Size = 1M Echo post-poche "Une rotation a eu lieu."| Mail Root Endscript  

Enfin et surtout, il est important de noter que les options présentent / etc / Logrotate.d/*.confli remplacer ceux dans le fichier de configuration principal en cas de conflits.

Logrotate et Cron

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

Lire suggérée: 11 exemples de tâches de planification CRON dans Linux

Sinon, l'exécution commencera autour 7h35. Pour vérifier, surveillez la ligne contenant cron.quotidien Dans les deux cas / etc / crontab ou / etc / anacrontab.

Résumé

Dans un système qui génère plusieurs journaux, l'administration de ces fichiers peut être considérablement simplifiée à l'aide de Logrotate. Comme nous l'avons expliqué dans cet article, il pivotera automatiquement, comprime, supprimera et courra les journaux périodiques ou lorsque le fichier atteindra une taille donnée.

Assurez-vous simplement qu'il est prêt à fonctionner comme un travail cron et que Logrotate vous facilitera les choses. Pour plus de détails, reportez-vous à la page de l'homme.

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