Afficher les données en sortie du port série

Une instance de machine virtuelle (VM) possède quatre ports série virtuels. Le système d'exploitation de l'instance, le BIOS, et d'autres entités de niveau système génèrent souvent des données en sortie sur les ports série. De ce fait, ces données s'avèrent utiles pour la résolution des plantages, des échecs de démarrage, des problèmes de démarrage ou des problèmes d'arrêt.

Cette page décrit les méthodes permettant d 'afficher la sortie du port série, y compris l'utilisation de Cloud Logging pour conserver la sortie du port série même après l'arrêt ou la suppression d'une instance. Si vous devez envoyer des commandes vers un port série pendant qu'une instance est en cours d'exécution, consultez la page Interagir avec la console série.

La sortie du port série est accessible via Cloud Console, l'outil gcloud et l'API Compute Engine, mais uniquement lorsque l'instance de VM est en cours d'exécution. Les journaux sont limités au Mo de données en sortie le plus récent pour chaque port.

Si vous activez la journalisation des données en sortie du port série, Cloud Logging fournit gratuitement les 50 premiers gibioctets (Gio) mensuels de journalisation et conserve les journaux pendant 30 jours.

Avant de commencer

Activer et désactiver la journalisation des données en sortie du port série

Vous pouvez contrôler si vos instances envoient une sortie de port série à Cloud Logging en définissant des métadonnées au niveau du projet ou de l'instance. Vous pouvez également désactiver la fonctionnalité pour tous les utilisateurs de votre organisation en définissant une règle d'administration.

Définir les métadonnées de projet et d'instance

Si la journalisation des données en sortie du port série sur Cloud Logging n'est pas limitée pour votre organisation, vous pouvez l'activer ou la désactiver pour des projets et des instances de VM individuelles, en définissant l'entrée de métadonnées serial-port-logging-enable sur true ou false.

Si vous définissez une entrée de métadonnées à l'échelle du projet, toutes les instances de VM du projet héritent de ce paramètre de manière implicite. Si vous définissez une entrée de métadonnées d'instance, celle-ci est activée seulement pour cette VM, quelle que soit la configuration du projet.

Vous pouvez définir une entrée de métadonnées à l'aide de Google Cloud Console, de l'outil gcloud ou de l'API Compute Engine. Pour en savoir plus, consultez la section Définir des métadonnées personnalisées.

Par exemple, la commande suivante de l'outil gcloud active la journalisation des données en sortie du port série sur Cloud Logging pour votre projet :

gcloud compute project-info add-metadata \
    --metadata serial-port-logging-enable=true

Vous pouvez également exécuter la commande suivante de l'outil gcloud pour activer la journalisation des données en sortie du port série sur Cloud Logging pour une instance spécifique :

gcloud compute instances add-metadata INSTANCE_NAME \
    --metadata serial-port-logging-enable=true

Pour désactiver la journalisation des données en sortie du port série sur Cloud Logging, définissez serial-port-logging-enable sur false.

gcloud compute instances add-metadata INSTANCE_NAME \
    --metadata serial-port-logging-enable=false

Filtres d'exclusion

À partir de Cloud Logging, vous pouvez créer un filtre d'exclusion pour supprimer des entrées de port série spécifiques de la visionneuse de journaux. Par exemple, avec une entrée de métadonnées à l'échelle du projet définie sur serial-port-logging-enable=true, vous pouvez désactiver la journalisation des données en sortie du port série pour des instances de VM spécifiques à l'aide d'un filtre avancé :

logName = "projects/PROJECT_ID/logs/serialconsole.googleapis.com%2Fserial_port_1_output"
resource.type = "gce_instance"
resource.labels.instance_id != "INSTANCE_1_ID"
resource.labels.instance_id != "INSTANCE_2_ID"

Définir une règle d'administration

Vous pouvez désactiver la journalisation des données en sortie du port série sur Cloud Logging pour l'ensemble de votre organisation en définissant une règle d'administration, qui limite certaines configurations de ressources Google Cloud. Plus précisément, définissez la contrainte booléenne suivante : constraints/compute.disableSerialPortLogging. Pour en savoir plus, consultez la page Créer et gérer des règles d'administration.

La désactivation de la journalisation du port série en définissant constraints/compute.disableSerialPortLogging sur true n'est pas rétroactive. Les instances de VM existantes ayant une entrée de métadonnées permettant d'activer la journalisation du port série sur Cloud Logging continuent à se connecter à Cloud Logging, sauf si vous réinitialisiez les métadonnées de ces instances.

Après avoir défini cette contrainte d'organisation sur true, vous ne pouvez pas définir de métadonnées d'instance ou de projet pour activer la journalisation des données en sortie du port série sur Cloud Logging pour les instances de l'organisation.

Afficher les données en sortie du port série

Console

  1. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Sélectionnez l'instance de VM dont vous souhaitez afficher les données en sortie du port série.

  3. Sous Journaux, cliquez sur Port série 1, 2, 3 ou 4. Les entités de niveau système utilisent généralement le premier port série (port 1), également appelé console série.

gcloud

Exécutez la commande gcloud compute instances get-serial-port-output.

gcloud compute instances get-serial-port-output INSTANCE_NAME \
  --port PORT \
  --start START \
  --zone ZONE

Remplacez l'élément suivant :

  • INSTANCE_NAME : nom de l'instance.
  • PORT : numéro du port (1, 2, 3 ou 4) dont vous souhaitez afficher les données en sortie. Les entités de niveau système utilisent généralement le premier port série (port 1), également appelé console série. Par défaut, les données en sortie du premier port série sont renvoyées.
  • START : valeur indexée (sur base zéro) du premier octet à renvoyer. Utilisez cette option si vous souhaitez continuer à obtenir les données d'une requête précédente qui n'a pas pu être renvoyée en une seule tentative en raison de sa longueur excessive.
  • ZONE : zone de l'instance.

API

Dans l'API, envoyez une requête get à la méthode instances.getSerialPortOutput.

GET https://compute.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/serialPort

Cloud Logging

  1. Activez la journalisation du port série sur Cloud Logging.
  2. Accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  3. Sélectionnez l'instance de VM pour laquelle vous souhaitez afficher les journaux de l'agent de démarrage.

  4. Sous Logs (Journaux), cliquez sur Cloud Logging pour afficher les journaux Cloud Logging.

    Cliquez sur Cloud Logging pour afficher les journaux Cloud Logging.

  5. Développez le menu déroulant Tous les journaux et sélectionnez les données en sortie de port série à afficher. Les entités de niveau système utilisent généralement le premier port série (port 1), également appelé console série. Si un port n'apparaît pas dans le menu déroulant, aucune donnée n'est disponible.

  6. Si vous le souhaitez, développez le menu déroulant Tous les niveaux de journalisation pour ignorer les journaux dont le niveau de gravité est inférieur à celui de votre choix. Par exemple, si vous sélectionnez le niveau de journalisation "Info", les entrées de journal de "débogage" seront ignorées. Les entrées du journal de "débogage" sont généralement utilisées uniquement par le BIOS au démarrage.

Pour en savoir plus, y compris sur le filtrage de base et le filtrage avancé, consultez la page Afficher les journaux.

Gérer les caractères non UTF8

Les données en sortie du port série sont échappées à l'aide de la méthode CHexEscape() de la bibliothèque C++ Open Source Abseil, de sorte que les caractères non UTF8 sont encodés sous forme de chaîne hexadécimale. Vous pouvez utiliser la méthode CUnescape() correspondante pour obtenir les données de sortie exactes envoyées au port série.