Configurer la rotation des logs nohup.out avec logrotate

Dans les architectures de microservices, les fichiers nohup.out accumulent souvent des erreurs critiques non captées par les mécanismes de journalisation internes. Sans rtoation, ces fichiers deviennent ingérables. L'outil logrotate offre une solution robuste pour automatiser ce processus.

Implémentation avec logrotate

Créons un fichier de configuration dédié dans /etc/logrotate.d/mes_services :

/opt/depots/serveur-web/logs/nohup.out
/opt/depots/api-backend/logs/nohup.out
/opt/depots/worker-async/logs/nohup.out
{
  create 0640
  daily
  dateext
  rotate 5
  missingok
  notifempty
  copytruncate
  compress
  delaycompress
  su root syslog
}

Analyse des paramètres :

  • create 0640 : Initialise un nouveau fichier avec les permissions lecture/écriture pour le propriétaire et lecture pour le groupe.
  • daily : Déclenche la rotation chaque jour. Variantes : weekly, month.
  • dateext : Utilise le format YYYYMMDD comme suffixe pour les archives.
  • rotate 5 : Conserve cinq rotations historiques avant suppression des plus anciennes.
  • missingok : Poursuit l'exécution si un fichier cible est absent.
  • notifempty : Ignore les fichiers de taille nulle.
  • copytruncate : Duplique le contenu avant de vider le fichier source. Risque minime de perte d'événements durant l'intervalle de copie.
  • compress : Applique gzip aux archives immédiatement.
  • delaycompress : Retarde la compression d'une rotation pour les logs actifs.
  • su root syslog : Exécute les opérations sous l'identité root avec le groupe syslog.

Validation et exécution

Testons d'abord en mode simulation :

logrotate --debug --force /etc/logrotate.d/mes_services

L'absence d'erreurs confirme la validité. Exécutons une rotation manuelle :

logrotate --force /etc/logrotate.d/mes_services

Vérification des résultats :

tree -L 2 /opt/depots/
# Résultat attendu :
# ├── serveur-web/logs
# │   ├── nohup.out
# │   └── nohup.out-20231015.gz
# ├── api-backend/logs
# │   ├── nohup.out
# │   └── nohup.out-20231015.gz

Automatisation via le planificateur de tâches

La rotation automatique quotidienne est assurée par le script /etc/cron.daily/logrotate :

#!/bin/bash
/usr/sbin/logrotate /etc/logrotate.conf
statut=$?
if [ $statut -ne 0 ]; then
    logger -t logrotate "Échec avec code $statut"
fi

Ce mécanisme garantit une exécution régulière tant que le service cron est opérationnel, élmiinant ainsi toute intervention manuelle.

Étiquettes: logrotate nohup cron Linux rotation des logs

Publié le 11 juin à 17h56