GNU/Linux >> Tutoriels Linux >  >> Linux

Exemple de configuration et de dépannage de logrotate

Appliquer les connaissances

Un article précédent Comprendre l'utilitaire logrotate décrit ce que fait logrotate et comment vous pouvez le configurer. Cet article applique ces connaissances à la création d'une solution de rotation des journaux pour un ou plusieurs hôtes virtuels personnalisés. Il identifie également certaines options pour tester et dépanner la rotation des journaux.

Lier le tout :journaux de l'hôte virtuel

Pour montrer comment vous pouvez utiliser logrotate pour vos applications, voici un exemple qui sera utile à de nombreuses personnes :la rotation des journaux pour vos hôtes virtuels personnalisés. L'exemple utilise Apache ®, mais vous pouvez le modifier pour d'autres serveurs Web comme nNinx® ou Lighttpd® , généralement en modifiant simplement le script de post-rotation.

Tout d'abord, créez un fichier pour contenir la configuration qui indique à logrotate quoi faire avec les fichiers journaux de l'hôte virtuel. Ne modifiez pas le fichier mainconfig ou le fichier de configuration du serveur Web, car une future mise à niveau du package pourrait vouloir écraser la configuration. Créez plutôt votre propre fichier avec la commande suivante :

/etc/logrotate.d/virtualhosts

Cet exemple regroupe tous les hôtes virtuels dans un seul fichier, mais si vous avez un hôte plus occupé que les autres, vous souhaiterez peut-être créer des fichiers de configuration distincts pour gérer les besoins de vos différents domaines. L'exemple spécifie plusieurs éléments qui sont probablement déjà définis dans votre configuration principale, juste pour couvrir toutes les bases.

Les fichiers

Supposons que vous ayez deux domaines virtuels, domain1.com et domaine2.com , et que les fichiers journaux de chacun se trouvent dans /home/demo/public_html/(domain name)/log .Votre fichier de configuration doit indiquer à logrotate où trouver les fichiers journaux, puis démarrer le bloc de configuration pour eux :

/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {

Si vous avez d'autres répertoires ou fichiers de journaux à ajouter, insérez-les dans cette liste.

Rotation

Ensuite, assurez-vous que logrotate ne conserve que le nombre d'anciens journaux que vous souhaitez :

rotate 14

L'exemple utilise 14 fichiers pour conserver deux semaines de journaux, mais vous pouvez ajuster ce nombre en fonction de vos besoins.

Intervalle

Maintenant, dites au serveur Web de faire pivoter ces journaux quotidiennement (encore une fois, changez-le si vous préférez un intervalle plus long) :

daily

Taille (facultatif)

Le paramètre de taille spécifie une taille maximale pour vos journaux. Lorsque le journal atteint cette taille, une rotation du journal est déclenchée.

size 50M

Le paramètre de taille est facultatif ici car il remplace toutes les conditions de rotation basées sur le temps. Vous pouvez spécifier à la fois un intervalle de temps et une taille maximale, mais si vous le faites, logrotate ignore le paramètre d'intervalle de temps.

Compression

Indiquez si vous souhaitez compresser ces journaux lorsqu'ils sont réarchivés. Cet exemple utilise le delaycompress pour tenir compte du redémarrage normal d'Apache, ce qui signifie que vous devez également activer la compression :

compress
delaycompress

Scripts partagés

Vous pouvez avoir plusieurs hôtes virtuels, ce qui impliquerait la rotation de plusieurs journaux. Pour vous assurer que le serveur Web ne redémarre qu'une fois toutes les rotations effectuées, ajoutez la ligne suivante :

sharedscripts

Postrotation

Spécifiez un script de post-rotation pour redémarrer le serveur Web :

postrotate
        /usr/sbin/apachectl graceful > /dev/null
endscript

Et enfin, fermez le bloc de configuration avec une accolade :

}

L'ensemble du fichier

Voici le fichier de configuration complet :

/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {
        rotate 14
        daily
        compress
        delaycompress
        sharedscripts
        postrotate
                /usr/sbin/apachectl graceful > /dev/null
        endscript
}

Testez le script soit en surveillant les choses lorsque les tâches cron nocturnes s'exécutent, soit en exécutant logrotate manuellement avec la commande suivante :

/usr/sbin/logrotate /etc/logrotate.conf

Si vous ne recevez aucune erreur, tout devrait bien se passer. Mais si vous voulez être certain, vous pouvez effectuer certains des tests suivants.

Tester la rotation de log

Si vous soupçonnez que logrotate rencontre des problèmes, ou si vous voulez simplement vous assurer que la nouvelle configuration que vous avez mise en place fonctionne, vous pouvez passer quelques indicateurs utiles à logrotate lorsque vous l'exécutez depuis la ligne de commande :

Verbeux

Le drapeau verbeux, -v , indique à logrotate de dire chaque opération qu'il exécute. Cela aide lorsque vous voulez savoir pourquoi logrotate ne fait pas pivoter un journal comme prévu.

Débogage

L'indicateur de débogage, -d , indique à logrotate de parcourir les mouvements de rotation des journaux, mais pas réellement les faire pivoter. Cela peut être pratique si vous travaillez sur un serveur de production et que vous souhaitez tester un nouveau fichier de configuration, mais que vous ne souhaitez pas qu'une rotation réelle des journaux soit exécutée lorsque vous exécutez le test.

Le débogage vérifie également que le fichier de configuration est correctement formaté et que logrotate peut trouver les fichiers journaux qu'il ferait pivoter. Cependant, comme il n'exécute pas les rotations, il ne teste pas certaines parties du processus comme les scripts de post-rotation.

Forcer

Le drapeau de force, -f , force logrotate à faire pivoter tous les journaux lorsqu'il s'exécute, qu'ils aient normalement besoin ou non d'être pivotés à ce moment-là. Si vous voulez tester en profondeur les configurations de logrotate, c'est le drapeau à utiliser. N'oubliez pas que logrotate fait pivoter les journaux et supprime les anciens en fonction de la configuration, donc ne faites pas accidentellement tourner un journal récent que vous devez conserver.

Cela peut également être utile si vous pensez que logrotate devrait faire tourner un journal, mais ce n'est pas le cas. Forcer le problème vous aide à identifier :

  • Si le problème est que logrotate pense que le journal n'a pas besoin de rotation (si vous exécutez l'indicateur de force et que le journal est pivoté)
  • Si le problème est que logrotate n'est pas en mesure d'affecter le fichier journal (si vous l'exécutez et que rien ne se passe dans le journal).

Remarque : Si vous avez configuré logrotate pour ajouter une date au nom d'un journal archivé, même en utilisant l'indicateur de force, logrotate crée une nouvelle archive le même jour. Étant donné que le nom qu'il doit utiliser pour une deuxième archive est déjà pris dans ce cas, vous devrez peut-être renommer l'archive la plus récente avant de pouvoir forcer une rotation des journaux.

Combiner des drapeaux

Vous pouvez utiliser les indicateurs de test ensemble assez efficacement. Pour que logrotate vous dise ce qu'il ferait si vous faisiez tout tourner, mais pas réellement faites pivoter n'importe quoi, vous pouvez combiner les trois :

/usr/sbin/logrotate -vdf /etc/logrotate.conf

Cette commande fournit une longue liste de choses que logrotate ferait, y compris les fichiers journaux qu'il ferait tourner et ce qu'il ferait pendant ce processus.

Si vous souhaitez ensuite tester toutes les configurations de rotation dans leur intégralité, y compris les scripts exécutés après les rotations, vous pouvez exécuter logrotate sans l'indicateur de débogage :

/usr/sbin/logrotate -vf /etc/logrotate.conf

Logrotate fait tourner tous les journaux. L'écrémage de la sortie devrait vous aider à détecter tout problème évident. Vous devez également vous assurer que tous vos services fonctionnent toujours correctement, qu'il n'y a rien de mal avec les scripts de postrotation et que tous les journaux ont été tournés.

Comment logrotate se souvient

Si vous constatez qu'un journal ne tourne pas même s'il est suffisamment ancien pour qu'il le soit, exécutez manuellement logrotate avec le -f drapeau. Mais si vous voulez savoir pourquoi quelque chose ne va pas, il y a un autre fichier que vous pouvez vérifier avant de forcer une rotation :

/var/lib/logrotate.status

Logrotate stocke des informations sur la dernière rotation de chaque fichier journal dans le fichier d'état. Si vous regardez à l'intérieur, vous voyez quelque chose comme :

logrotate state -- version 2
"/var/log/acpid.log" 2010-6-18
"/var/log/iptables.log" 2010-6-18
"/var/log/uucp.log" 2010-6-29
...

C'est un format simple, l'emplacement du fichier journal est à gauche et la date de la dernière rotation est à droite. Parfois, les dates sur votre serveur deviennent confuses (si vous étiez en train de bricoler un service NTP ou similaire), et la date à laquelle un journal a été tourné pour la dernière fois devient une date future. Si cela s'est produit, vous le voyez dans ce fichier d'état.

Si vous voulez vérifier logrotate avec un fichier journal particulier mais que vous ne voulez pas tout forcer à tourner, vous pouvez supprimer l'entrée du journal du fichier logrotatestatus. Ensuite, lorsque vous exécutez logrotate normalement, il doit créer une nouvelle entrée pour le journal avec la date d'aujourd'hui (même s'il ne peut pas réellement faire pivoter le journal - il utilise cette première exécution comme référence si elle est uniquement basée sur des intervalles).

Résumé

Pour quelque chose qui s'exécute silencieusement en arrière-plan et n'exécute vraiment qu'un seul type de tâche, logrotate en fait un peu. Vous devriez pouvoir configurer de nouveaux fichiers de configuration logrotate à vos propres fins, soit en les créant à partir de zéro, soit en copiant les configurations existantes et en les modifiant de manière appropriée. Et surtout, vous pouvez éviter que vos journaux ne deviennent incontrôlables.


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

  2. Dépannage et débogage du réseau Linux ?

  3. Procédure :Réplication et configuration DRBD

  4. Emplacements des fichiers journaux communs et des fichiers de configuration pour les services cPanel

  5. Désactivation des avertissements et avis de dépréciation de PHP

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

Meilleure configuration PHP-FPM - Calcul facile et simple

Configuration et guide du chargeur de démarrage LILO Linux

Chargeur de démarrage Linux Ubuntu GRUB et configuration

Gestion des journaux avec Logrotate sur Ubuntu

Journalctl :comment lire et modifier les journaux Systemd