Utiliser la rotation des journaux pour les journaux automatiques de l'agent Ops

L'agent Ops écrit dans un fichier journal nommé logging-module.log. Lorsque l'agent s'exécute sans surveillance pendant de longues périodes ou lorsqu'un problème survient, ce fichier "journal automatique" peut consommer tout l'espace disque disponible. Ce document explique comment utiliser la rotation des journaux pour éviter ce problème.

La version 2.31.0 de l'agent Ops introduit une fonctionnalité de rotation des journaux configurable intégrée à l'agent. Si vous exécutez la version 2.31.0 ou ultérieure de l'agent Ops, vous pouvez utiliser la fonctionnalité de rotation des journaux intégrée. Consultez la section Configurer la rotation des journaux dans l'agent Ops.

Vous pouvez également gérer la rotation des journaux manuellement. Vous aurez peut-être besoin d'effectuer un processus manuel si vous utilisez une version de l'agent Ops sans rotation de journaux intégrée ou si vous préférez effectuer la rotation de vos journaux manuellement. Pour découvrir une approche possible, consultez la section Configurer la rotation des fichiers journaux automatiques sur les VM Linux.

Configurer la rotation des journaux dans l'agent Ops

Cette section explique comment modifier la configuration par défaut de rotation des journaux utilisée par l'agent Ops pour effectuer la rotation de ses journaux automatiquement. L'utilisation de cette fonctionnalité nécessite la version 2.31.0 ou une version ultérieure de l'agent Ops.

Configuration par défaut

L'agent Ops utilise l'entrée default_self_log_file_rotation pour configurer la rotation des journaux. Cette entrée de configuration utilise trois options. L'extrait de code suivant montre les options et leurs valeurs par défaut :

  default_self_log_file_rotation:
    enabled: true
    max_file_size_megabytes: 400
    backup_count: 1

La configuration default_self_log_file_rotation accepte trois options :

  • enabled : indique si la rotation des journaux est activée. La valeur par défaut est true.
  • max_file_size_megabytes : taille maximale que le fichier journal peut atteindre avant sa sauvegarde par la rotation des journaux. Elle est mesurée en mégaoctets (1 0242 octets). La valeur par défaut est de 400, et la valeur minimale valide est de 1.
  • backup_count : nombre d'anciens fichiers journaux à conserver. La valeur par défaut est de 1, et la valeur minimale valide est de 1.

Configuration utilisateur de la rotation des journaux

Pour modifier la configuration de rotation des journaux par défaut, vous devez remplacer celle-ci en redéfinissant la configuration dans le fichier de configuration utilisateur de l'agent Ops :

  • Sous Linux : /etc/google-cloud-ops-agent/config.yaml
  • Sur Windows : C:\Program Files\Google\Cloud Operations\Ops Agent\config\config.yaml

Pour configurer la rotation des journaux dans l'agent Ops, ajoutez une section global au fichier de configuration utilisateur et incluez l'élément de configuration default_self_log_file_rotation dans la section global. Vous disposez peut-être déjà de pipelines de journalisation ou de métriques dans ce fichier de configuration. Ajoutez la section global après vos pipelines. Le résultat, spécifiant toutes les options et valeurs par défaut, se présente comme suit :

logging:  ...
metrics:  ...
global:
  default_self_log_file_rotation:
    enabled: true
    max_file_size_megabytes: 400
    backup_count: 1

Exemples de configurations

Pour désactiver la rotation des journaux par l'agent Ops, spécifiez l'option enabled avec la valeur false :

logging:  ...
metrics:  ...
global:
  default_self_log_file_rotation:
    enabled: false

Pour effectuer la rotation du journal lorsque le fichier de journal atteint 20 Mo et conserver cinq sauvegardes (six fichiers au total), procédez comme suit :

logging:  ...
metrics:  ...
global:
  default_self_log_file_rotation:
    max_file_size_megabytes: 20
    backup_count: 5

Pour effectuer la rotation du journal lorsque le fichier journal atteint 2 000 Mo (2 Go) et conserver une sauvegarde (deux fichiers au total), procédez comme suit :

logging:  ...
metrics:  ...
global:
  default_self_log_file_rotation:
    max_file_size_megabytes: 2000

Pour effectuer la rotation du journal lorsque le fichier journal atteint 400 Mo et conserver deux sauvegardes (trois fichiers au total), procédez comme suit :

logging:  ...
metrics:  ...
global:
  default_self_log_file_rotation:
    backup_count: 2

Si vous effectuez des modifications fréquentes lorsque vous affinez la configuration de la rotation des journaux, pensez à redémarrer l'agent pour appliquer vos modifications.

Configurer la rotation des fichiers journaux automatiques sur les VM Linux

Pour limiter la taille du journal de sous-agent de journalisation dans /var/log/google-cloud-ops-agent/subagents/logging-module.log, installez et configurez l'utilitaire logrotate.

  1. Installez l'utilitaire logrotate en exécutant la commande suivante :

    Sur Debian et Ubuntu

    sudo apt install logrotate
    

    Sur CentOS, RHEL et Fedora

    sudo yum install logrotate
    
  2. Créez un fichier de configuration logrotate dans /etc/logrotate.d/google-cloud-ops-agent.conf.

    sudo tee /etc/logrotate.d/google-cloud-ops-agent.conf > /dev/null << EOF
    # logrotate config to rotate Google Cloud Ops Agent self log file.
    # See https://manpages.debian.org/jessie/logrotate/logrotate.8.en.html for
    # the full options.
    /var/log/google-cloud-ops-agent/subagents/logging-module.log
    {
        # Log files are rotated every day.
        daily
        # Log files are rotated this many times before being removed. This
        # effectively limits the disk space used by the Ops Agent self log files.
        rotate 30
        # Log files are rotated when they grow bigger than maxsize even before the
        # additionally specified time interval
        maxsize 256M
        # Skip rotation if the log file is missing.
        missingok
        # Do not rotate the log if it is empty.
        notifempty
        # Old versions of log files are compressed with gzip by default.
        compress
        # Postpone compression of the previous log file to the next rotation
        # cycle.
        delaycompress
    }
    EOF
    
  3. Configurez crontab ou systemd timer pour déclencher l'utilitaire logrotate périodiquement.

Une fois que la rotation des journaux est prise en compte, les fichiers alternés s'affichent dans le répertoire /var/log/google-cloud-ops-agent/subagents/. Les résultats ressemblent à ce qui suit :

/var/log/google-cloud-ops-agent/subagents$ ls -lh
total 24K
-rw-r--r-- 1 root root  717 Sep  3 19:54 logging-module.log
-rw-r--r-- 1 root root 6.8K Sep  3 19:51 logging-module.log.1
-rw-r--r-- 1 root root  874 Sep  3 19:50 logging-module.log.2.gz
-rw-r--r-- 1 root root  873 Sep  3 19:50 logging-module.log.3.gz
-rw-r--r-- 1 root root 3.2K Sep  3 19:34 logging-module.log.4.gz

Pour tester la rotation des journaux, procédez comme suit :

  1. Réduisez temporairement la taille de fichier à laquelle la rotation est déclenchée en définissant la valeur maxsize sur 1k dans le fichier /etc/logrotate.d/google-cloud-ops-agent.conf.

  2. Déclenchez le fichier journal automatique de l'agent pour qu'il dépasse les 1 Ko en redémarrant plusieurs fois l'agent :

    sudo service google-cloud-ops-agent restart
    
  3. Attendez que crontab ou systemd timer prennent effet pour déclencher l'utilitaire logrotate, ou déclenchez l'utilitaire logrotate manuellement en exécutant la commande suivante :

    sudo logrotate /etc/logrotate.d/google-cloud-ops-agent.conf
    
  4. Vérifiez que les fichiers journaux alternés s'affichent bien dans le répertoire /var/log/google-cloud-ops-agent/subagents/.

  5. Réinitialisez la configuration de la rotation des journaux en restaurant la valeur maxsize d'origine.