Migrer de l'ancien agent Logging vers Fluentd en amont

Si vous utilisez l'ancien agent Logging et que votre configuration est très personnalisée, nous vous recommandons de migrer vers Fluentd, qui est open source. Vous pouvez configurer Fluentd pour préserver le comportement de votre environnement d'agent Logging sans perturber la collecte de vos journaux par Cloud Logging. Ce document décrit le processus de migration.

Comparatif des fonctionnalités

Le tableau suivant compare les principales fonctionnalités de l'ancien agent Logging et de Fluentd en amont.

Fonctionnalités Ancien agent Logging Fluentd en amont
Ingestion de journaux dans Cloud Logging Oui Oui
Journaux système standards (syslog) Oui Oui
Entrée d'application tierce préconfigurée Oui Oui †
Gestion des journaux structurés (JSON) et non structurés (texte) Oui Oui
Fusion des exceptions multilignes Oui Oui
Enrichissement des métadonnéesGoogle Cloud Oui Oui
Enrichissement des métadonnées Kubernetes Oui Oui
ID d'entrée de journal uniques Oui Oui
Transformation des champs de journaux Oui Oui
Mappage de la gravité Oui Oui
Authentification (ADC et clés de compte de service) Oui Oui
Protocoles de transport REST et gRPC Oui Oui
Intégration de la surveillance Oui Oui

†  Bien que le package google-fluentd-catch-all- config ne soit pas inclus dans l'installation standard de Fluentd et des plug-ins en amont, vous pouvez conserver la fonctionnalité d'entrée préconfigurée en suivant les étapes de migration décrites dans ce guide.

Avant de commencer

Avant de commencer la migration, assurez-vous de disposer des éléments suivants :

  • Une instance de VM compatible dans un projetGoogle Cloud .
  • Les identifiants d'instance de VM qui autorisent la communication avec Cloud Logging. Les instances de VM Compute Engine possèdent généralement par défaut les identifiants valides. Pour vérifier si vous disposez des identifiants corrects, exécutez les procédures décrites à la section Autoriser l'agent Logging.

Migrer vers Fluentd

Cette section décrit les étapes à suivre pour migrer vers la version Fluentd en amont, tout en conservant les fonctionnalités clés fournies par l'ancien agent Logging.

Pour migrer votre configuration, procédez comme suit :

  1. Arrêter l'ancien agent Logging
  2. Installer une version stable de fluentd-package
  3. Installer des plug-ins de plate-forme Google Cloud
  4. Migrer vos fichiers de configuration de plug-ins d'entrée
  5. Mettre à jour la configuration syslog
  6. Mettre à jour votre fichier de configuration Fluentd
  7. Vérifier que l'agent Fluentd s'exécute correctement
  8. Désinstaller l'ancien agent Logging

Éteindre l'ancien agent Logging

Avant d'installer l'agent Fluentd en amont, vous devez arrêter l'ancien agent Logging pour éviter les conflits. Pour éviter de perdre des journaux en attente lors de la migration, assurez-vous de vider tous les journaux mis en mémoire tampon à l'arrêt.

Pour arrêter l'ancien agent Logging de manière progressive :

  1. Ouvrez une connexion de terminal à votre instance de VM à l'aide de SSH ou d'un outil similaire, et assurez-vous de disposer d'un accès sudo.
  2. Pour vider les journaux mis en mémoire tampon avant d'arrêter l'ancien agent Logging, activez l'option flush_at_shutdown :

    1. Mettez à jour le fichier /etc/google-fluentd/google-fluentd.conf pour définir le flag flush_at_shutdown sur true :

      # Configure the agent to flush all buffer chunks on shutdown
      <match **>
        @type google_cloud
        flush_at_shutdown true
      </match>
      
    2. Redémarrez l'agent pour appliquer les modifications de la configuration :

      sudo service google-fluentd restart
      
  3. Arrêtez l'ancien agent Logging :

    sudo service google-fluentd stop
    

Installer une version stable de fluentd-package

Installez une distribution stable de Fluentd (fluentd-package) dans vos instances de VM. Pour obtenir des instructions, consultez la documentation Fluentd Install fluent-package.

Installer les plug-ins de la plate-forme Google Cloud

Pour permettre à Fluentd d'interagir avec Cloud Logging et de gérer des formats de journaux spécifiques, installez les plug-ins suivants :

  1. Si ce n'est pas déjà fait, installez les outils de compilation pour la compilation des extensions :

    Debian ou Ubuntu

    Exécutez la commande suivante sur Debian ou Ubuntu :

    sudo apt-get update
    sudo apt-get install -y build-essential
    

    CentOS ou RHEL

    Exécutez la commande suivante sur CentOS ou RHEL :

    sudo yum update
    sudo yum groupinstall -y "Development Tools"
    
  2. Installez le plug-in fluent-plugin-google-cloud :

    sudo fluent-gem install fluent-plugin-google-cloud
    
  3. Installez le plug-in fluent-plugin-detect-exceptions :

    sudo fluent-gem install fluent-plugin-detect-exceptions
    
  4. Facultatif : Si votre déploiement de l'ancien agent Logging collecte des journaux à partir d'applications s'exécutant dans un cluster Kubernetes, installez le plug-in fluent-plugin-kubernetes_metadata_filter :

    sudo fluent-gem install fluent-plugin-kubernetes_metadata_filter
    
  5. Facultatif : Si votre ancien agent Logging collecte et expose des métriques au format Prometheus, installez les gems suivants :

    sudo fluent-gem install prometheus-client -v 0.9.0
    sudo fluent-gem install fluent-plugin-prometheus -v 1.4.0
    

Migrer vos fichiers de configuration de plug-in d'entrée

Pour migrer vos fichiers de configuration et de position existants pour votre installation Fluentd, procédez comme suit :

  1. Créez des répertoires pour les fichiers de configuration et de position Fluentd :

    # Create the destination directory for Fluentd configuration files
    sudo mkdir -p /etc/fluent/config.d
    
    # Create the destination directory for position files
    sudo mkdir -p /var/lib/fluent/pos
    
  2. Copiez vos fichiers de configuration google-fluentd dans le répertoire de configuration de Fluentd :

    sudo cp /etc/google-fluentd/config.d/* /etc/fluent/config.d/
    
  3. Copiez tous les fichiers de position (.pos) utilisés par google-fluentd dans le répertoire de fichiers de position pour Fluentd :

    sudo cp /var/lib/google-fluentd/pos/*.pos /var/lib/fluent/pos/
    

    Les fichiers de position sont utilisés pour suivre les positions de lecture dans les fichiers journaux. La migration permet à Fluentd de démarrer au même point que google-fluentd.

  4. Mettez à jour le chemin pos_file dans vos nouveaux fichiers de configuration Fluentd pour qu'il pointe vers le nouveau répertoire de fichiers de position :

    sudo sed -i 's#/var/lib/google-fluentd#/var/lib/fluent#g' /etc/fluent/config.d/*.conf
    
  5. Accordez à l'utilisateur du service Fluentd ,_fluentd, un accès en lecture et en écriture au répertoire /var/lib/fluent/ :

    sudo chown -R _fluentd:_fluentd /var/lib/fluent/
    
  6. Accordez à l'utilisateur _fluentd un accès en lecture aux fichiers syslog :

    sudo usermod -a -G adm _fluentd
    

Mettre à jour la configuration Syslog

Fluentd en amont s'exécute en tant qu'utilisateur non privilégié, qui ne peut pas se lier aux ports privilégiés dont le numéro est inférieur à 1024. Si votre ancienne configuration de l'agent Logging inclut la collecte syslog basée sur le réseau à l'aide de @type syslog sur port 514, vous devez ajuster la configuration.

Pour mettre à jour la configuration du port :

  1. Remplacez l'intégralité du contenu du fichier /etc/fluent/config.d/syslog_endpoint.conf par la configuration suivante :

    sudo tee /etc/fluent/config.d/syslog_endpoint.conf > /dev/null <<EOF
    <source>
      @type syslog
      port 5140
      <transport tcp>
      </transport>
      bind 127.0.0.1
      tag syslog
    </source>
    EOF
    
  2. Créez ou modifiez le fichier /etc/rsyslog.d/40-fluentd-forward.conf pour transférer les messages syslog vers le nouveau port Fluentd :

    sudo tee /etc/rsyslog.d/40-fluentd-forward.conf > /dev/null <<EOF
    # Forward all syslog messages to Fluentd on localhost:5140 via TCP
    *.* @@127.0.0.1:5140
    EOF
    
  3. Redémarrez le service rsyslog pour appliquer les modifications :

    sudo systemctl restart rsyslog.service
    

Mettre à jour le fichier de configuration Fluentd principal

Configurez l'agent Fluentd en amont en répliquant vos paramètres du fichier de configuration de l'agent, google-fluentd.conf, dans le fichier de configuration Fluentd principal, situé à l'adresse /etc/fluent/fluentd.conf.

Pour configurer l'agent Fluentd en amont, procédez comme suit :

  1. Copiez l'intégralité du contenu du fichier google-fluentd.conf pour remplacer le fichier de configuration Fluentd en amont par défaut :

    sudo cp /etc/google-fluentd/google-fluentd.conf /etc/fluent/fluentd.conf
    
  2. Mettez à jour le buffer_path dans vos fichiers de configuration Fluentd pour qu'il pointe vers le nouveau répertoire Fluentd :

    sudo sed -i 's#/var/log/google-fluentd#/var/log/fluent#g' /etc/fluent/fluentd.conf
    
  3. Inspectez le fichier fluentd.conf pour vérifier que la configuration inclut les éléments suivants :

    • @include config.d/*.conf est présent pour importer toute la configuration de votre plug-in d'entrée.
    • Le bloc <match **> @type google_cloud est configuré pour diffuser des journaux vers Cloud Logging.
    • Le buffer_path du plug-in de sortie pointe désormais vers /var/lib/fluent/.
    • Toute directive pos_file dans les plug-ins d'entrée pointe vers /var/lib/fluent/.
  4. Exécutez un dry run pour vérifier votre configuration Fluentd :

    sudo fluentd -c /etc/fluent/fluentd.conf --dry-run
    

    Vérifiez si des alertes error ou warn s'affichent dans le résultat. Vous devez résoudre les problèmes identifiés avant de continuer. Pour en savoir plus sur les modifications de syntaxe, consultez Compatibilité de la configuration pour Fluentd en amont.

  5. Redémarrez l'agent Fluentd :

    sudo service fluentd restart
    

Valider le bon fonctionnement de l'agent Fluentd

Après avoir démarré Fluentd, vérifiez que les journaux sont bien envoyés à Cloud Logging :

  1. Vérifiez que Fluentd s'exécute sans erreur :

    $ sudo service fluentd status
    

    L'état du service doit être actif (en cours d'exécution).

  2. Vérifiez les journaux Fluentd et assurez-vous qu'il n'y a pas d'erreurs ni d'avertissements :

    sudo tail -n 100 /var/log/fluent/fluentd.log | grep -iE "error|warn|failed|exception" || true
    

    Aucune erreur ni aucun avertissement ne doivent être listés.

  3. Consultez Cloud Logging pour vérifier que les journaux sont reçus de votre instance de VM. Pour en savoir plus sur l'affichage de vos journaux, consultez Utiliser l'explorateur de journaux.

Désinstaller l'ancien agent Logging

Une fois que vous avez vérifié que le nouveau Fluentd envoie bien les journaux à Cloud Logging, supprimez l'ancien agent Logging et ses fichiers de configuration :

Debian ou Ubuntu

  sudo apt-get remove --purge google-fluentd

CentOS ou RHEL

  sudo yum remove google-fluentd