Utiliser Cloud Logging avec Container-Optimized OS

Container-Optimized OS inclut un agent Logging qui exporte certains journaux de système et de conteneurs vers Cloud Logging. Jusqu'à la version 101 de Container-Optimized OS, les images Container-Optimized OS basées sur x86 utilisaient un agent de journalisation conteneurisé basé sur fluentd. Container-Optimized OS 105 a commencé à diffuser une autre implémentation d'agent de journalisation, fluent-bit. Depuis la version 109 de Container-Optimized OS, l'agent de journalisation fluent-bit est utilisé par défaut. L'ancien agent Logging, fluentd, sera supprimé dans Container-Optimized OS 113.

Toutes les versions d'images Container-Optimized OS basées sur Arm fournissent l'agent de journalisation fluent-bit.

Activer l'agent Logging

L'agent Logging est désactivé par défaut. Vous pouvez activer cette fonctionnalité lors de la création d'une instance ou en mettant à jour une instance existante.

Conditions d'accès

Cloud Logging fournit des rôles IAM que vous pouvez utiliser pour accorder l'accès approprié. Pour afficher les journaux dans un projet, vous devez disposer du rôle roles/logging.viewer et les applications doivent être autorisées à écrire des journaux. Vous pouvez accorder cette autorisation en attribuant le rôle IAM roles/logging.logWriter au compte de service d'une application.

Pour en savoir plus sur les autorisations et les rôles, consultez la section Rôles prédéfinis.

Créer une instance avec un agent Logging activé

Console

Pour exécuter une instance Compute Engine sur Container-Optimized OS avec l'agent de journalisation fluent-bit activé, procédez comme suit:

  1. Ouvrez la page de création d'instance Compute Engine dans la console Google Cloud.

    Créer une instance Compute Engine

  2. Indiquez un Nom pour votre instance.

  3. Dans la section Disque de démarrage, sélectionnez une image Container-Optimized OS.

  4. Cliquez sur Gestion, sécurité, disques, mise en réseau et location unique pour développer les options supplémentaires.

  5. Dans l'onglet Gestion, faites défiler la page jusqu'à la section Métadonnées. Ajoutez une nouvelle entrée de métadonnées, avec Key défini sur google-logging-enabled et Value défini sur true.

  6. Vous pouvez éventuellement spécifier d'autres options pour votre cas d'utilisation. Pour en savoir plus, consultez la page Créer et configurer des instances.

  7. Cliquez sur Créer pour créer et démarrer l'instance.

gcloud

Pour exécuter une instance Compute Engine sur Container-Optimized OS avec l'agent Logging activé, utilisez la commande gcloud compute instances create et incluez google-logging-enabled=true dans les métadonnées. Exemple :

gcloud compute instances create instance-name \
    --image-family cos-stable \
    --image-project cos-cloud \
    --zone compute-zone \
    --metadata google-logging-enabled=true

Remplacez les éléments suivants :

  • instance-name : nom de votre instance de VM.
  • compute-zone : zone de calcul de votre instance.

Pour plus d'informations sur la commande gcloud, consultez la documentation de référence sur gcloud compute instances create. Pour en savoir plus sur la création d'instances Container-Optimized OS, consultez la page Créer et configurer des instances.

Sélectionner l'agent Logging

Les images 105 et 109 de Container-Optimized OS basées sur x86 fournissent deux implémentations de l'agent Logging: fluentd (ancien) et fluent-bit. Container-Optimized OS 105 utilise fluentd par défaut et Container-Optimized OS 109 utilise fluent-bit par défaut. Vous pouvez utiliser l'entrée de métadonnées google-logging-use-fluentbit pour modifier le comportement par défaut.

Pour utiliser l'agent de journalisation fluent-bit sur Container-Optimized OS 105, définissez la valeur google-logging-use-fluentbit sur true.

Pour utiliser l'agent Logging fluentd sur Container-Optimized OS 109, définissez la valeur google-logging-use-fluentbit sur false.

Activer l'agent Logging dans les métadonnées du projet

À partir du jalon 97, la journalisation peut être activée dans les métadonnées du projet:

  gcloud compute project-info add-metadata \
    --metadata google-logging-enabled=true

Journaux d'accès

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Cliquez sur le nom de l'instance Container-Optimized OS à partir de laquelle vous souhaitez accéder aux journaux.

  3. Dans la section Journaux, cliquez sur Cloud Logging.

  4. L'explorateur de journaux s'ouvre pour l'instance donnée. Pour en savoir plus, consultez la page Utiliser l'explorateur de journaux.

gcloud

Pour accéder aux journaux, utilisez la commande gcloud logging read. Exemple :

gcloud logging read \
"resource.type=gce_instance AND resource.labels.instance_id=instance-id" \
    --limit 10 \
    --format json \
    --freshness 30d

Remplacez les éléments suivants :

  • instance-id : identifiant de votre instance de VM.

Cette commande tente de lire les journaux de l'instance de VM avec instance-id, en limitant à 10 journaux, au format JSON, des 30 derniers jours.

Pour plus d'informations sur la commande gcloud, consultez la documentation de référence sur gcloud logging read.

Fonctionnement

L'agent Logging est configuré par défaut pour envoyer les journaux de certains services critiques du système et conteneurs d'applications utilisateur au backend Cloud Logging. Par exemple, les journaux des conteneurs Docker, les services systemd sélectionnés, les journaux d'audit, les erreurs de journaux de journal, etc. Consultez la section Source de configuration spécifique à Container-Optimized OS (images x86 et images Arm) pour obtenir une configuration complète de la journalisation par défaut.

Pour les images x86 de Container-Optimized OS 105 et versions antérieures, l'agent Logging est l'ancien agent Logging conteneurisé de Google Cloud Observability. La commande Docker qui démarre l'agent Logging est définie dans la source du service stackdriver-logging systemd de Container-Optimized OS. La version de l'agent conteneurisé en cours d'exécution est définie dans le répertoire source app-admin/stackdriver de Container-Optimized OS.

Pour les images Arm de toutes les versions et les images x86 pour Container-Optimized OS 109 et versions ultérieures, l'agent Logging est un package d'OS intégré appelé fluent-bit. L'agent est intégré à l'OS et mis à jour avec les images de l'OS.

Limitations connues

Compatibilité avec le pilote gcplogs

À partir du jalon 89, si l'agent de journalisation inclus dans Container-Optimized OS est activé et que le pilote de journalisation Docker gcplogs est activé pour un ou plusieurs conteneurs, les journaux d'avertissement peuvent être générés par l'agent Logging inclus. Cela peut générer du bruit dans les journaux et/ou augmenter les frais liés à Cloud Logging.

Une solution de contournement consiste à ne pas utiliser gcplogs comme pilote de journalisation Docker et d'utiliser à la place le pilote par défaut configuré par Container-Optimized OS. Notez que l'agent Logging inclus dans Container-Optimized OS exporte les journaux de conteneur vers Cloud Logging. Il n'est donc pas nécessaire d'utiliser les deux solutions simultanément.

Compatibilité de la configuration de l'agent Logging

L'agent Logging est un conteneur basé sur fluentd sur des images Container-Optimized OS basées sur x86 et un binaire fluent-bit sur des images Container-Optimized OS basées sur Arm. Les configurations des deux agents ne sont pas compatibles. Cela ne pose pas de problème si vous vous appuyez uniquement sur la configuration de journalisation par défaut intégrée aux images de l'OS. Toutefois, si vous disposez d'une configuration de journalisation personnalisée, vous risquez de rencontrer des problèmes lors de la migration des charges de travail vers des images basées sur une architecture différente ou vers une version plus récente de Container-Optimized OS.

Références

  • Documentation de l'ancien agent Logging de Google Cloud Observability. L'agent Logging conteneurisé inclus dans Container-Optimized OS est un sous-ensemble de l'ancien agent Logging. Cette documentation peut donc fournir du contexte sur l'agent de manière plus générale, en dehors du champ d'application de Container-Optimized OS.
  • Documentation Google Cloud sur l'observabilité. Page d'accueil de la documentation sur l'observabilité Google Cloud (peut être utile pour le contexte).