Une instance Compute Engine 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 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.
Pour afficher la sortie du port série d'une instance de calcul en cours d'exécution, utilisez la console Google Cloud , la gcloud CLI ou REST. Ces méthodes ne fournissent que le Mo de données en sortie le plus récent pour chaque port. Pour afficher les données en sortie dépassant 1 Mo par port ou celles des instances arrêtées, utilisez Cloud Logging.
Avant de commencer
- Si vous souhaitez journaliser la sortie du port série sur Cloud Logging, familiarisez-vous avec Cloud Logging.
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification permet de valider votre identité pour accéder aux services et aux API Google Cloud . Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes :
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :
Console
Lorsque vous utilisez la console Google Cloud pour accéder aux services Google Cloud et aux API, vous n'avez pas besoin de configurer l'authentification.
gcloud
-
Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :
gcloud initSi vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
- Définissez une région et une zone par défaut.
REST
Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.
Installez la Google Cloud CLI.
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .
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.
Par défaut, la journalisation des données de sortie du port série sur Cloud Logging est désactivée. Si vous activez la journalisation des données en sortie du port série, Cloud Logging fournit sans frais les 50 premiers gibioctets (Gio) mensuels de journalisation et conserve les journaux pendant 30 jours.
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 calcul 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 calcul 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 instance de calcul, quelle que soit la configuration du projet.
Vous pouvez définir une entrée de métadonnées à l'aide de la console Google Cloud , de la gcloud CLI 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 la CLI 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=trueVous pouvez également exécuter la commande suivante de la CLI 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=truePour 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=falseFiltres 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 l'explorateur 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 calcul 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 des ressources Google Cloud . Plus précisément, définissez la contrainte booléenne suivante : constraints/compute.disableSerialPortLogging. Pour en savoir plus, consultez 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 calcul 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éinitialisez 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 la sortie du port série
Utilisez la console Google Cloud , la gcloud CLI ou REST pour afficher le dernier Mo de résultat par port série des instances en cours d'exécution. Pour afficher les données en sortie dépassant 1 Mo par port ou celles des instances arrêtées, utilisez Cloud Logging.
Console
Dans la console Google Cloud , accédez à la page Instances de VM.
Sélectionnez l'instance de calcul dont vous souhaitez afficher les données en sortie du port série.
Sous Journaux, cliquez sur Port série 1 (console), Port série 2 (console), Port série 3 ou Port série 4.
Les entités de niveau système utilisent généralement le port série 1, également appelé console série.
gcloud
Pour afficher les données en sortie du port série d'une instance de calcul en cours d'exécution, utilisez 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 les éléments suivants :
INSTANCE_NAME: nom de l'instance.PORT: numéro du port (1,2,3ou4) 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.
REST
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
Avant de pouvoir afficher ces journaux, vous devez envoyer les données en sortie du port série à Cloud Logging.
- Dans la console Google Cloud , accédez à la page Explorateur de journaux.
Dans le volet Requête, saisissez la requête suivante, puis cliquez sur Exécuter la requête :
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/serialconsole.googleapis.com%2Fserial_port_1_output" resource.labels.instance_id="INSTANCE_ID"
Remplacez les éléments suivants :
PROJECT_ID: ID du projet contenant l'instance.INSTANCE_ID: ID de l'instance de calcul.
Pour en savoir plus sur le filtrage dans l'explorateur de journaux, consultez Afficher les journaux à l'aide de l'explorateur de 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.