Utiliser Cloud Logging avec Container-Optimized OS

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

Toutes les versions des images Container-Optimized OS basées sur Arm incluent 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 définit des rôles IAM que vous pouvez utiliser pour accorder un accès approprié. Pour afficher vos 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 de journalisation 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 image-name \
    --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.
  • image-name: nom de l'image Container-Optimized OS de l'instance. Exemple :--image=cos-113-18244-85-29
  • 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 de journalisation

Les images Container-Optimized OS 105 et 109 basées sur x86 incluent deux implémentations de l'agent de journalisation: 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 de journalisation fluentd sur Container-Optimized OS 109, définissez la valeur google-logging-use-fluentbit sur false.

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

À partir de la étape 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 de journalisation est configuré par défaut pour envoyer des journaux à partir de certains services critiques du système et de certains conteneurs d'applications utilisateur vers le backend de Cloud Logging. Par exemple, les journaux des conteneurs Docker, les services systemd sélectionnés, les journaux d'audit, les erreurs de journal, etc. Consultez la source de configuration spécifique à Container-Optimized OS (images x86 et images Arm) pour obtenir une configuration de journalisation par défaut complète.

Pour les images x86 de Container-Optimized OS 105 et versions antérieures, l'agent de journalisation est l'ancien agent de journalisation conteneurisé de Google Cloud Observability. La commande Docker qui démarre l'agent de journalisation est définie dans la source de Container-Optimized OS pour le service systemd stackdriver-logging. 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 de journalisation 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 de journalisation est un conteneur basé sur fluentd sur les images Container-Optimized OS basées sur x86 et un binaire fluent-bit sur les images Container-Optimized OS basées sur Arm. Les configurations des deux agents ne sont pas compatibles. Ce n'est pas un problème si vous ne vous appuyez que 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 erreurs lors de la migration de 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 de journalisation conteneurisé inclus avec Container-Optimized OS est un sous-ensemble de l'ancien agent de journalisation. Cette documentation peut donc fournir un contexte sur l'agent de manière plus générale, en dehors du champ d'application de Container-Optimized OS.
  • Documentation sur Google Cloud Observability Page d'accueil de la documentation Google Cloud Observability. Peut être utile pour le contexte.