Agence web » Actualités du digital » Comment configurer Logrotate sur Linux (pour empêcher votre serveur de manquer d’espace) –

Comment configurer Logrotate sur Linux (pour empêcher votre serveur de manquer d’espace) –

La plupart des services sous Linux génèrent des fichiers journaux, généralement stockés dans /var/log/. Ce ne sont que de simples fichiers texte, mais ils peuvent devenir vraiment, vraiment volumineux, au point que vous pourriez faire fonctionner votre serveur à court d’espace.

Que fait Logrotate ?

Logrotate aide à gérer les fichiers journaux et les empêche de s’accumuler. Il archivera automatiquement le fichier journal actuel, en créera un nouveau vide et supprimera les archives vraiment anciennes après avoir effectué plusieurs rotations. L’heure par défaut peut être définie très haut (nginx par défaut à un an de journaux), vous pouvez donc rencontrer des problèmes si vous ne modifiez pas vos fichiers de configuration.

La taille de vos fichiers variera selon le service, et vous devrez configurer logrotate en conséquence. Si vous souhaitez connaître l’espace occupé par chaque service avec les journaux, vous pouvez utiliser le du commander:

du -h /var/log/ | sort -hr

Presque tous les fichiers journaux seront dans /var/log/, donc du totalisera tous les fichiers journaux et les affichera dans une belle liste (avec l’aimable autorisation de sort -hr pour ‘lisible par l’homme’):

Cela n’affiche que les répertoires, vous devrez donc utiliser ls -sh pour trouver la taille des fichiers individuels.

Habituellement, des éléments comme les serveurs Web (apache2, nginx, etc.) et d’autres applications qui reçoivent beaucoup d’interactions génèrent de nombreux fichiers journaux, la taille exacte dépendra de la quantité de données qu’ils enregistrent réellement sur le disque.

Installation de Logrotate (si vous ne l’avez pas déjà)

Par défaut, vous n’aurez probablement rien à faire pour configurer logrotate, car il est installé par défaut sur de nombreuses distributions, et les services qui génèrent beaucoup de fichiers journaux (nginx, apache, etc.) auront généralement une configuration logrotate préconfigurée.

Vous pouvez vérifier si logrotate est installé avec :

which logrotate

Ou installez-le à partir du gestionnaire de packages de votre distribution si ce n’est pas le cas. Pour les systèmes basés sur Debian comme Ubuntu, ce serait :

sudo apt-get install logrotate

Logrotate installera automatiquement sa configuration globale par défaut, mais si vous l’avez installé après l’installation de votre serveur Web, vous devrez peut-être réinstaller votre serveur Web si la configuration par défaut pour ce service n’est pas générée.

Comment fonctionne Logrotate

Alors que logrotate sera préconfiguré pour les services populaires tels que nginx et apache2, vous souhaiterez peut-être configurer la configuration manuellement ou modifier la configuration par défaut.

La configuration globale de logrotate est stockée dans /etc/logrotate.conf, mais vous en remplacerez une grande partie par des fichiers de configuration par application, stockés dans le /etc/logrotate.d/ annuaire. Jetons un coup d’œil à la configuration par défaut de nginx dans /etc/logrotate.d/nginx, que vous pouvez utiliser comme modèle pour ajouter de nouvelles applications à logrotate :

/var/log/nginx/*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then 
                        run-parts /etc/logrotate.d/httpd-prerotate; 
                fi 
        endscript
        postrotate
                invoke-rc.d nginx rotate >/dev/null 2>&1
        endscript
}

La première ligne démarre le bloc et indique à logrotate quels fichiers rechercher. Le joker *.log correspondra à tous les fichiers se terminant par le .log extension dans le dossier du journal nginx. Vous pouvez également spécifier plusieurs répertoires ici pour les inclure avec la même configuration.

hebdomadaire effectuera une rotation des journaux une fois par semaine. Si vous souhaitez les faire pivoter en fonction de la taille, vous pouvez utiliser à la place size 25M pour les faire pivoter une fois qu’ils atteignent une certaine limite, 25 mégaoctets dans cet exemple.

manque d’accord empêchera logrotate de générer des erreurs si un fichier journal est supprimé par autre chose que logrotate.

tourner 52 conservera 52 fichiers journaux différents. Dans ce cas, puisqu’il effectuera une rotation une fois par semaine, logrotate conservera des années entières de fichiers journaux avant de supprimer les anciens. Vous pouvez changer cela en rotate 4 pour ne conserver qu’un mois de fichiers journaux.

compresse compressera les anciens fichiers journaux pour économiser de l’espace. Cela provoque des problèmes avec certaines applications qui continuent à écrire dans le fichier journal pendant que logrotate fait toujours son travail, vous pouvez donc ajouter le retarder la compression flag pour laisser une mémoire tampon d’un ancien fichier journal avant la compression.

notifier est un autre indicateur de contrôle pour s’assurer que logrotate ne s’exécute que si de nouveaux fichiers journaux sont en cours d’écriture. le créer flag crée ces nouveaux fichiers journaux, avec des autorisations spécifiques. La syntaxe est create [mode] [owner] [group].

Vous voudrez vous assurer qu’ils correspondent à tous vos fichiers journaux actuels, ce que vous pouvez faire avec ls -la:

Notez que vous devrez convertir le mode en octal, donc -rw-r----- devient 0640. Le propriétaire de nginx ici est www-data, et le groupe est adm.

scripts partagés précise que le prérotation et postrotation les hooks ne seront exécutés qu’une fois par rotation, et non une fois pour chaque fichier journal pivoté. Ces hooks sont des scripts que vous pouvez appeler avant et après la rotation. Par défaut, ceux-ci exécuteront quelques scripts pour configurer nginx afin de basculer les fichiers journaux. Si le service que vous configurez ne peut pas télécharger à chaud de nouveaux fichiers journaux, vous devrez l’arrêter et le redémarrer dans ces hooks. Cependant, le crochet n’a pas besoin d’interagir avec le service ; par exemple, vous pouvez utiliser le hook de prérotation pour sauvegarder vos fichiers journaux sur AWS S3 avec s3cmd avant qu’ils ne soient supprimés.

Logrotate gérera l’exécution de lui-même, vous n’aurez donc pas à vous soucier de démarrer le service au démarrage ou de configurer un cron travail. Placez simplement les fichiers de configuration pour chaque application dans /etc/logrotate.d/, et ne vous souciez plus jamais des journaux.

★★★★★