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

Une instance de machine virtuelle 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, ils s'avèrent souvent 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 les données en sortie du port série, y compris comment utiliser Stackdriver Logging pour conserver les données en 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.

Les données en sortie du port série ne sont accessibles via la console GCP, l'outil gcloud et l'API que quand l'instance de VM est en cours d'exécution, et les journaux contiennent le 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 sur Stackdriver, les journaux sont conservés pendant 30 jours, et les 50 premiers Go par mois de journalisation sont offerts. Pour en savoir plus, consultez les tarifs de Stackdriver.

Avant de commencer

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

Vous pouvez déterminer si vos instances envoient des données en sortie du port série sur Stackdriver 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 Stackdriver 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 la métadonnée serial-port-logging-enable sur true ou false.

Au niveau du projet, si serial-port-logging-enable est défini sur true, toutes les instances de VM du projet héritent de ce paramètre de manière implicite. Si ce paramètre est défini sur true au niveau de l'instance de la VM, il est activé pour cette VM uniquement, quel que soit le paramètre du projet.

Inversement, pour désactiver la journalisation des données en sortie du port série pour les projets ou les instances, définissez la valeur de métadonnée serial-port-logging-enable sur false. Lorsque cette métadonnée est définie sur false au niveau du projet, la journalisation des données en sortie du port série sur Stackdriver est désactivée pour toutes les instances du projet. Lorsqu'elle est définie sur false au niveau de l'instance, la journalisation du port série est désactivée pour cette VM uniquement, quel que soit le paramètre du projet.

Vous pouvez définir des métadonnées via la console Google Cloud Platform, l'outil gcloud ou l'API. Pour en savoir plus, consultez la section Définir des métadonnées personnalisées.

Par exemple, vous pouvez utiliser la commande gcloud suivante pour activer la journalisation des données en sortie du port série sur Stackdriver pour une instance existante. La commande échoue si une règle d'administration empêche cette configuration.

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 Stackdriver, définissez serial-port-logging-enable sur false.

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

Filtres d'exclusion

Dans Stackdriver, vous pouvez créer un filtre d'exclusion pour supprimer des entrées spécifiques concernant le port série de la visionneuse de journaux. Par exemple, avec serial-port-logging-enable=true au niveau du projet, vous pouvez désactiver la journalisation des données en sortie du port série pour des instances de VM spécifiques avec un filtre avancé ressemblant à celui-ci :

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 Stackdriver pour l'ensemble de votre organisation en définissant une règle d'administration qui restreint certaines configurations des ressources GCP. Plus précisément, définissez la contrainte booléenne suivante : constraints/compute.disableSerialPortLogging. Pour en savoir plus, consultez la section intitulée Créer et gérer des règles d'administration.

Désactiver la journalisation du port série en définissant constraints/compute.disableSerialPortLogging sur true n'est pas rétroactif. Les instances de VM existantes disposant de métadonnées permettant la journalisation du port série sur Stackdriver continueront de se connecter à Stackdriver, à moins que vous ne 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 des métadonnées d'instance ou de projet pour activer la journalisation des données en sortie du port série sur Stackdriver pour les instances au sein de l'organisation.

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

Console

  1. 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 instances get-serial-port-output.

gcloud compute instances get-serial-port-output instance-name \
  --port port \
  --start start \
  --zone zone

où :

  • instance-name est le nom de l'instance.
  • port est le numéro du port (1, 2, 3 ou 4) dont vous souhaitez voir 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 spécifie la 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.

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

Stackdriver

  1. Activez la journalisation du port série sur Stackdriver.
  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 Journaux, cliquez sur Stackdriver Logging pour afficher les journaux Stackdriver.

  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 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.

  7. Consultez la documentation de Stackdriver sur la page Afficher les journaux pour en savoir plus, y compris au sujet du filtrage de base et du filtrage avancé.

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 émises vers le port série.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine