Eine Compute Engine-Instanz hat vier virtuelle serielle Ports. Das Betriebssystem, das BIOS und andere Entitäten auf Systemebene der Instanz senden Ausgaben häufig an die seriellen Ports. Deshalb kann man die Ausgabe serieller Ports gut zur Fehlerbehebung bei Abstürzen, fehlgeschlagenen Bootvorgängen, Startproblemen oder Problemen beim Herunterfahren nutzen.
Auf dieser Seite werden Methoden zum Anzeigen der Ausgabe des seriellen Ports beschrieben, einschließlich der Verwendung von Cloud Logging, um die Ausgabe des seriellen Ports auch nach dem Beenden einer Instanz beizubehalten. Wie Sie Befehle an einen seriellen Port senden, während eine Instanz ausgeführt wird, erfahren Sie unter Mit der seriellen Konsole interagieren.
Verwenden Sie die Google Cloud Console, die gcloud CLI oder REST, um die Ausgabe des seriellen Ports für eine ausgeführte Compute-Instanz aufzurufen. Diese Methoden liefern nur die letzten 1 MB der Ausgabe pro Port. Wenn Sie Ausgaben von mehr als 1 MB pro Port oder Ausgaben von beendeten Instanzen ansehen möchten, verwenden Sie Cloud Logging.
Hinweis
- Wenn Sie Cloud Logging zum Logging der Ausgabe des seriellen Ports verwenden möchten, machen Sie sich mit Cloud Logging vertraut.
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren:
Wählen Sie den Tab für die gewünschte Verwendung der Beispiele auf dieser Seite aus:
Console
Wenn Sie über die Google Cloud Console auf Google Cloud -Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.
gcloud
-
Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:
gcloud initWenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
- Legen Sie eine Standardregion und -zone fest.
REST
Wenn Sie die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, verwenden Sie die Anmeldedaten, die Sie der gcloud CLI bereitstellen.
Installieren Sie die Google Cloud CLI.
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Für die Verwendung von REST authentifizieren.
Netzwerkanforderungen und ‑einschränkungen
Wenn Sie die Ausgabe des seriellen Ports über die Google Cloud Console aufrufen oder mit der Konsole interagieren möchten, müssen Ihr clientseitiges Netzwerk und Ihre Umgebung die folgenden Anforderungen erfüllen:
- TCP-Port 9600: Wenn Sie in derGoogle Cloud -Konsole den Link Serieller Port 1 (Konsole) verwenden, muss Ihr Netzwerk ausgehenden Traffic über den TCP-Port 9600 zulassen, damit eine Verbindung zum Gateway der seriellen Konsole hergestellt werden kann.
- VPC Service Controls: Die interaktive serielle Konsole wird in VPC Service Controls-Perimetern nicht unterstützt.
- Privater Google-Zugriff: VIPs für den privaten Google-Zugriff (
private.googleapis.comoderrestricted.googleapis.com) unterstützen nicht den für die serielle Konsole erforderlichen SSH-Traffic. Diese VIPs unterstützen nur HTTP-basierte Protokolle.
Wenn in Ihrem Netzwerk diese Ports oder Protokolle eingeschränkt sind, verwenden Sie stattdessen Cloud Logging, um die Logs des seriellen Ports aufzurufen, da hier standardmäßiges HTTPS (Port 443) verwendet wird.
Fehlerbehebung bei SSH-Fehlern
Wenn Sie sich die Logs des seriellen Ports ansehen, weil Sie keine SSH-Verbindung zu Ihrer VM herstellen können, finden Sie im Leitfaden zur Fehlerbehebung bei SSH eine Liste häufiger Fehler und Schritte zur Fehlerbehebung.
Logging der Ausgabe des seriellen Ports aktivieren und deaktivieren
Sie können steuern, ob Ihre Instanzen die Ausgabe des seriellen Ports an Cloud Logging senden. Legen Sie dazu auf Projekt- oder Instanzebene Metadaten fest. Sie können das Feature auch für alle Nutzer in Ihrer Organisation durch Festlegen einer Organisationsrichtlinie deaktivieren.
Das Logging der Ausgabe des seriellen Ports in Cloud Logging ist standardmäßig deaktiviert. Wenn Sie das Logging der Ausgabe des seriellen Ports aktivieren, stellt Cloud Logging die ersten 50 Gibibyte (GiB) pro Monat kostenlos zur Verfügung und speichert Logs 30 Tage lang.
Projekt- und Instanzmetadaten festlegen
Wenn das Logging der Ausgabe des seriellen Ports in Cloud Logging nicht für Ihre Organisation eingeschränkt ist, können Sie es für Projekte und einzelne Compute-Instanzen aktivieren oder deaktivieren. Dazu legen Sie den Metadateneintrag serial-port-logging-enable auf true bzw. false fest.
Wenn Sie einen projektweiten Metadateneintrag festlegen, übernehmen alle Compute-Instanzen im Projekt diese Einstellung implizit. Wird dagegen ein Instanz-Metadateneintrag festgelegt, wird dieser unabhängig von der Projekteinstellung nur für diese Compute-Instanz aktiviert.
Sie können einen Metadateneintrag mit der Google Cloud -Console, der gcloud CLI oder der Compute Engine API festlegen. Weitere Informationen finden Sie unter Benutzerdefinierte Metadaten einrichten.
Der folgende gcloud CLI-Befehl aktiviert beispielsweise das Logging der Ausgabe des seriellen Ports in Cloud Logging für Ihr Projekt:
gcloud compute project-info add-metadata \
--metadata serial-port-logging-enable=trueStattdessen aktiviert der folgende gcloud CLI-Befehl das Logging der Ausgabe des seriellen Ports für eine bestimmte Instanz in Cloud Logging:
gcloud compute instances add-metadata INSTANCE_NAME \
--metadata serial-port-logging-enable=trueSetzen Sie serial-port-logging-enable auf false, um das Logging der Ausgabe eines seriellen Ports in Cloud Logging zu deaktivieren.
gcloud compute instances add-metadata INSTANCE_NAME \
--metadata serial-port-logging-enable=falseAusschlussfilter
Sie können in Cloud Logging einen Ausschlussfilter erstellen, um bestimmte Einträge für den seriellen Port aus dem Log Explorer zu entfernen. Wenn ein projektweiter Metadateneintrag auf serial-port-logging-enable=true festgelegt ist, können Sie beispielsweise mit einem erweiterten Filter das Logging der Ausgabe des seriellen Ports für bestimmte Compute-Instanzen deaktivieren:
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"
Organisationsrichtlinie festlegen
Sie können das Logging der Ausgabe des seriellen Ports in Cloud Logging für Ihre gesamte Organisation deaktivieren, indem Sie eine Organisationsrichtlinie festlegen, die bestimmte Konfigurationen von Google Cloud Ressourcen einschränkt. Legen Sie insbesondere die folgende boolesche Einschränkung fest: constraints/compute.disableSerialPortLogging. Weitere Informationen finden Sie unter Organisationsrichtlinien erstellen und verwalten.
Wenn Sie das Logging des seriellen Ports durch Festlegen von constraints/compute.disableSerialPortLogging auf true deaktivieren, gilt das nicht rückwirkend. Bei vorhandenen Compute-Instanzen mit einem Metadateneintrag, der das Logging des seriellen Ports in Cloud Logging aktiviert, wird weiterhin in Cloud Logging protokolliert, sofern Sie die Metadaten für diese Instanzen nicht zurücksetzen.
Nachdem Sie diese Organisationseinschränkung auf true gesetzt haben, können Sie keine Instanz- oder Projektmetadaten mehr festlegen, um das Logging der Ausgabe des seriellen Ports in Cloud Logging für Instanzen innerhalb der Organisation zu aktivieren.
Ausgabe des seriellen Ports ansehen
Sie können die Google Cloud Console, die gcloud CLI oder REST verwenden, um sich die letzten 1 MB der Ausgabe pro seriellem Port von ausgeführten Instanzen anzusehen. Wenn Sie Ausgaben mit mehr als 1 MB pro Port oder Ausgaben von beendeten Instanzen ansehen möchten, verwenden Sie Cloud Logging.
Console
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Wählen Sie die Compute-Instanz aus, für die Sie die Ausgabe des seriellen Ports ansehen möchten.
Klicken Sie unter Logs auf Serieller Port 1 (Konsole), Serieller Port 2 (Konsole), Serieller Port 3 oder Serieller Port 4.
Entitäten auf Systemebene verwenden in der Regel Serieller Port 1, der auch als serielle Konsole bezeichnet wird.
gcloud
Verwenden Sie den Befehl gcloud compute instances get-serial-port-output, um die Ausgabe des seriellen Ports einer laufenden Compute-Instanz aufzurufen.
gcloud compute instances get-serial-port-output INSTANCE_NAME \ --port PORT \ --start START \ --zone ZONE
Ersetzen Sie Folgendes:
INSTANCE_NAME: der Name der Instanz.PORT: die Nummer des Ports (1,2,3oder4), für den Sie die Ausgabe ansehen möchten. Entitäten auf Systemebene verwenden normalerweise den ersten seriellen Port (Port 1), der auch als serielle Konsole bezeichnet wird. Standardmäßig wird die Ausgabe des ersten seriellen Ports zurückgegeben.START: der Byteindex (nullbasiert) des ersten Bytes, das zurückgegeben werden soll. Mit diesem Flag können Sie den Abruf der Ausgabe fortsetzen, wenn die Ausgabe einer vorherigen Anfrage zu lang war, um sie in einem Versuch zurückzugeben.ZONE: die Zone Ihrer Instanz.
REST
Erstellen Sie in der API eine get-Anfrage an die Methode instances.getSerialPortOutput.
GET https://compute.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/serialPort
Cloud Logging
Bevor Sie diese Logs ansehen können, müssen Sie die Ausgabe des seriellen Ports an Cloud Logging senden.
- Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Geben Sie im Bereich Abfrage die folgende Abfrage ein und klicken Sie dann auf Abfrage ausführen:
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/serialconsole.googleapis.com%2Fserial_port_1_output" resource.labels.instance_id="INSTANCE_ID"
Ersetzen Sie Folgendes:
PROJECT_ID: die ID des Projekts, das die Instanz enthalten hat.INSTANCE_ID: die ID der Compute-Instanz.
Weitere Informationen zum Filtern im Log-Explorer finden Sie unter Logs mit dem Log-Explorer ansehen.
Umgang mit Zeichen, die nicht zum UTF8-Zeichensatz gehören
Die Ausgabe des seriellen Ports wird mit der Methode CHexEscape() der Open-Source-Bibliothek Abseil für C++ mit Escapezeichen versehen. Zeichen, die nicht zum UTF8-Zeichensatz gehören, werden als Hexadezimalstrings codiert. Mit der entsprechenden Methode CUnescape() erhalten Sie genau die Ausgabe, die an den seriellen Port gesendet wurde.