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 les plantages, les échecs de démarrage, les problèmes de démarrage ou les 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 plus de détails, 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 contrôler 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. Consultez Définir des métadonnées personnalisées pour plus de détails.

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 relatives au 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/google.com:serial-output-logging-demo/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 plus d'informations, consultez la documentation 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 des 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

Utilisez 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 cet indicateur 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://www.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 des 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 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 plus de détails, 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înes hexadécimales. 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