IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Fichiers de log ne se versionnent pas avec logrotate


Sujet :

Administration système

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Par défaut Fichiers de log ne se versionnent pas avec logrotate
    Bonjour

    Je souhaite réaliser la gestion des logs de divers applicatifs en utilisant logrotate.

    Je travaille sur VM CentOS 7.9 (environnement de dev et de recherche avant mise en production sur serveurs physiques CentOS 7.9).

    Le fichier logrotate.conf est celui d'install sans modifications particulières:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    # see "man logrotate" for details
    # rotate log files weekly
    weekly
     
    # keep 4 weeks worth of backlogs
    rotate 4
     
    # create new (empty) log files after rotating old ones
    create
     
    # use date as a suffix of the rotated file
    dateext
     
    # uncomment this if you want your log files compressed
    #compress
     
    # RPM packages drop log rotation information into this directory
    include /etc/logrotate.d
     
    # no packages own wtmp and btmp -- we'll rotate them here
    /var/log/wtmp {
        monthly
        create 0664 root utmp
            minsize 1M
        rotate 1
    }
     
    /var/log/btmp {
        missingok
        monthly
        create 0600 root utmp
        rotate 1
    }
     
    # system-specific logs may be also be configured here.
    Voici le fichier de gestion des logs dans /etc/logrotate.d:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     
    /REP_DEV/log-tmp/fifo_transcript.log
    /REP_DEV/log-tmp/fifo_media.log
    /REP_DEV/log-tmp/ingest_VIS.log
    {
        su toto toto 
        create 0644 toto toto 
        daily
        copytruncate
        rotate 30
        missingok
        notifempty
        dateext
        extension .log
    }
     
    /REP_DEV/log-tmp/vvf-listes.log
    {
        su toto toto
        create 0644 toto toto
        daily
        copytruncate
        rotate 15
        missingok
        notifempty
        dateext
        extension .log
    }
    Le propriétaire et le groupe pour les fichiers de log et le chemin vers log-tmp sont toto:toto

    Ma problématique est la suivante:

    - lorsque j'exécute la commande logrotate en mode debug avec le fichier de gestion des logs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    logrotate -d /etc/logrotate.d/fifo_transcript_log
    , je n'ai pas d'erreurs particulières qui ressortent.

    - lorsque j'exécute la même commande logrotate en mode forcé+verbose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    logrotate -fv /etc/logrotate.d/fifo_transcript_log
    , les fichiers de logs sont traités (rotation des logs) et je vois apparaître les fichiers archive datés.

    - lorsque l'exécution est déclenché via cron.daily, le fichier /var/lib/logrotate/logrotate.status existe et indique le traitement des fichiers log avec la bonne date, le log de cron indique que logrotate s'est exécuté sans remonter d'erreur ou sortie anormale. Mais le traitement des fichiers ne se fait pas (pas d'apparition de log archive avec la date).

    J'ai vérifié les noms des fichiers log sur le disque pour qu'il soient cohérents avec les noms mentionnés dans le script.
    J'ai cherché si les logs étaient créés ailleurs, sans résultats.
    En cherchant sur le net, cela m'a permis d'ajouter la commande
    create 0644 toto toto
    pour m'assurer des droits sur les fichiers. Mais cela n'a rien donné.
    Je n'ai pas trouvé de cas similaire à celui sur lequel je me casse les dents.

    Dernière chose, j'ai des scripts logrotate sensiblement identiques et avec les mêmes config sur des serveurs physiques CentOS 7.9, pour lesquels je n'ai pas de problème.

    Auriez-vous une piste que je pourrais creuser pour débloquer la situation ? Je pense que c'est une histoire de droits, mais je suis sec niveau idées.
    Merci d'avance de votre aide.

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 906
    Par défaut
    Hello,

    Voici une proposition,

    Pour le fichier /etc/logrotate.conf, avec le propriétaire root:root, les droits 0644
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    # Paramètres par défaut
    weekly
    rotate 4
    create
    dateext
    include /etc/logrotate.d
     
    # Logs système spécifiques
    /var/log/wtmp {
        monthly
        create 0664 root utmp
        minsize 1M
        rotate 1
    }
     
    /var/log/btmp {
        missingok
        monthly
        create 0600 root utmp
        rotate 1
    }
    Ce fichier définit les règles par défaut. Vous n'avez normalement pas besoin d'y toucher, car il "inclut" vos fichiers personnalisés.

    Pour le fichier /etc/logrotate.d/fifo_logs, avec le propriétaire root:root, les droits 0644
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    # Bloc pour les logs principaux (30 jours)
    /REP_DEV/log-tmp/fifo_transcript.log
    /REP_DEV/log-tmp/fifo_media.log
    /REP_DEV/log-tmp/ingest_VIS.log {
        su toto toto
        daily
        rotate 30
        copytruncate
        missingok
        notifempty
        dateext
        create 0644 toto toto
    }
     
    # Bloc pour vvf-listes (15 jours)
    /REP_DEV/log-tmp/vvf-listes.log {
        su toto toto
        daily
        rotate 15
        copytruncate
        missingok
        notifempty
        dateext
        create 0644 toto toto
    }
    C'est ici que nous adaptons la configuration pour vos fichiers de développement.

    Pour que logrotate accepte de travailler, la hiérarchie des droits doit être la suivante :

    Nom : Copie d'écran_20260122_153612.png
Affichages : 240
Taille : 42,7 Ko

    Faîtes ensuite vos tests...

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Par défaut Fichiers de log ne se versionnent pas avec logrotate - Examen des droits.
    Citation Envoyé par fred1599 Voir le message
    Hello,

    Voici une proposition,

    Pour le fichier /etc/logrotate.conf, avec le propriétaire root:root, les droits 0644
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    # Paramètres par défaut
    weekly
    rotate 4
    create
    dateext
    include /etc/logrotate.d
     
    # Logs système spécifiques
    /var/log/wtmp {
        monthly
        create 0664 root utmp
        minsize 1M
        rotate 1
    }
     
    /var/log/btmp {
        missingok
        monthly
        create 0600 root utmp
        rotate 1
    }
    Ce fichier définit les règles par défaut. Vous n'avez normalement pas besoin d'y toucher, car il "inclut" vos fichiers personnalisés.

    Pour le fichier /etc/logrotate.d/fifo_logs, avec le propriétaire root:root, les droits 0644
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    # Bloc pour les logs principaux (30 jours)
    /REP_DEV/log-tmp/fifo_transcript.log
    /REP_DEV/log-tmp/fifo_media.log
    /REP_DEV/log-tmp/ingest_VIS.log {
        su toto toto
        daily
        rotate 30
        copytruncate
        missingok
        notifempty
        dateext
        create 0644 toto toto
    }
     
    # Bloc pour vvf-listes (15 jours)
    /REP_DEV/log-tmp/vvf-listes.log {
        su toto toto
        daily
        rotate 15
        copytruncate
        missingok
        notifempty
        dateext
        create 0644 toto toto
    }
    C'est ici que nous adaptons la configuration pour vos fichiers de développement.

    Pour que logrotate accepte de travailler, la hiérarchie des droits doit être la suivante :

    Nom : Copie d'écran_20260122_153612.png
Affichages : 240
Taille : 42,7 Ko

    Faîtes ensuite vos tests...
    Bonjour.
    L'examen des droits sur les dossiers de log, les fichiers de log et les fichiers de configuration de logrotate montre que ceux-ci sont conformes à ce que vous indiquez dans votre message. En gros, cela devrait fonctionner...
    Ce matin, le contenu du fichier /var/lib/logrotate/logrotate.status indique que la date de traitement est aujourd'hui, à 3h49. Logrotate a donc agi, mais sans produire de fichiers.
    Ce qui m'intrigue, c'est que j'ai d'autres serveurs avec la même configuration logrotate (au nom de fichier log près, ce ne sont pas les même applications), et que cela fonctionne. La seule différence notable, c'est que les serveurs sur lesquels j'ai des problèmes sont des machines virtuelles. Là où cela fonctionne, ce sont des serveurs physiques.
    Je vais continuer à creuser.
    Quoiqu'il en soit, merci pour votre aide

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 906
    Par défaut
    Il est fréquent que lors de la première exécution après l'ajout d'une nouvelle configuration, logrotate se contente d'enregistrer la date et l'heure dans /var/lib/logrotate/logrotate.status sans déclencher de rotation immédiate. Pour une directive daily, l'utilitaire attendra que 24 heures se soient écoulées depuis la date inscrite dans ce fichier avant d'agir.

    Sur les VM, les politiques de sécurité (SELinux ou AppArmor) sont souvent plus restrictives ou basées sur des modèles (templates) par défaut. Comme vos logs sont situés dans un répertoire non standard (/REP_DEV/log-tmp/), SELinux peut bloquer l'accès à logrotate, même si les droits Unix (utilisateur toto) sont corrects.

    Examinez les logs d'audit du système avec la commande : ausearch -m avc -ts today ou journalctl -t setroubleshoot.

    https://access.redhat.com/solutions/39006

    Les serveurs virtuels utilisent souvent des volumes montés ou des disques virtualisés. Si /REP_DEV/ est un point de montage (ex: NFS, VirtFS) :
    • logrotate peut échouer s'il ne peut pas modifier les attributs des fichiers (ownership/permissions) après la rotation.
    • Certaines options comme copytruncate sont préférables dans ces environnements car elles ne nécessitent pas la suppression/création de fichiers, ce qui évite certains conflits de descripteurs de fichiers sur les FS réseau.


    Sur les distributions récentes (souvent privilégiées pour les nouvelles VM), la rotation est de plus en plus gérée par un Timer Systemd (logrotate.timer) plutôt que par une tâche Cron classique. Une double exécution ou un partage conflictuel du fichier de statut peut induire des comportements erratiques.

    À vérifier : systemctl list-timers | grep logrotate.

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Par défaut SELinux était le responsable
    Citation Envoyé par fred1599 Voir le message
    Il est fréquent que lors de la première exécution après l'ajout d'une nouvelle configuration, logrotate se contente d'enregistrer la date et l'heure dans /var/lib/logrotate/logrotate.status sans déclencher de rotation immédiate. Pour une directive daily, l'utilitaire attendra que 24 heures se soient écoulées depuis la date inscrite dans ce fichier avant d'agir.

    Sur les VM, les politiques de sécurité (SELinux ou AppArmor) sont souvent plus restrictives ou basées sur des modèles (templates) par défaut. Comme vos logs sont situés dans un répertoire non standard (/REP_DEV/log-tmp/), SELinux peut bloquer l'accès à logrotate, même si les droits Unix (utilisateur toto) sont corrects.

    Examinez les logs d'audit du système avec la commande : ausearch -m avc -ts today ou journalctl -t setroubleshoot.

    https://access.redhat.com/solutions/39006

    Les serveurs virtuels utilisent souvent des volumes montés ou des disques virtualisés. Si /REP_DEV/ est un point de montage (ex: NFS, VirtFS) :
    • logrotate peut échouer s'il ne peut pas modifier les attributs des fichiers (ownership/permissions) après la rotation.
    • Certaines options comme copytruncate sont préférables dans ces environnements car elles ne nécessitent pas la suppression/création de fichiers, ce qui évite certains conflits de descripteurs de fichiers sur les FS réseau.


    Sur les distributions récentes (souvent privilégiées pour les nouvelles VM), la rotation est de plus en plus gérée par un Timer Systemd (logrotate.timer) plutôt que par une tâche Cron classique. Une double exécution ou un partage conflictuel du fichier de statut peut induire des comportements erratiques.

    À vérifier : systemctl list-timers | grep logrotate.

    Bonjour.

    SELinux était effectivement la cause des soucis rencontrés.
    L'examen du fichier /var/log/audit/audit.log indiquait un problème d'écriture pour les log archivés.
    J'ai configuré SELinux en Permissive, et cela fonctionne désormais correctement.
    J'ai également ajouté à ma TODO List de revenir sur la configuration SELinux des fichiers de log pour les mettre en conformité.
    Vos exemples de commandes vont m'aider.

    Merci pour votre analyse, et merci à tous pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2016] Fichier de log qui ne veut pas se réduire
    Par Antoun dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/10/2020, 09h18
  2. Réponses: 7
    Dernier message: 17/03/2017, 14h59
  3. [Free Pascal] Fichier en écriture ne s'ouvre pas avec ParamCount
    Par JoseF dans le forum Free Pascal
    Réponses: 11
    Dernier message: 09/05/2007, 10h28
  4. Premier pas avec net : gestion des fichiers ini
    Par fredppp dans le forum VC++ .NET
    Réponses: 6
    Dernier message: 30/03/2007, 11h24
  5. Réponses: 13
    Dernier message: 09/01/2007, 13h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo