Ausgabe des seriellen Ports ansehen

Die Instanz einer virtuellen Maschine verfügt über 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 diese Ports gut zur Fehlerbehebung bei Abstürzen, fehlgeschlagenen Startvorgängen, Startproblemen oder Problemen beim Herunterfahren nutzen.

Auf dieser Seite werden Methoden beschrieben, die Ausgabe eines seriellen Ports darzustellen. Es wird auch beschrieben, wie die Ausgabe mit Stackdriver Logging aufbewahrt werden kann, selbst nachdem eine Instanz angehalten oder gelöscht wurde. Wie Sie Befehle an einen seriellen Port senden, während eine Instanz ausgeführt wird, erfahren Sie unter Mit der seriellen Konsole interagieren.

Auf die Ausgabe des seriellen Ports kann nur dann über die GCP Console, das gcloud-Tool und die API zugegriffen werden, wenn die VM-Instanz ausgeführt wird. Außerdem müssen die Logs auf die letzten 1 MB der Ausgabe pro Port beschränkt sein.

Wenn Sie das Logging für die Ausgabe des seriellen Ports in Stackdriver aktivieren, werden Logs 30 Tage lang aufbewahrt. Die ersten 50 GB an Logdaten pro Monat sind bei Stackdriver kostenlos. Weitere Informationen finden Sie unter Preisüberblick Stackdriver.

Hinweise

Logging der Ausgabe des seriellen Ports in Stackdriver aktivieren und deaktivieren

Sie können steuern, ob Ihre Instanzen die Ausgabe des seriellen Ports an Stackdriver senden. Dazu legen Sie auf Projekt- oder Instanzebene Metadaten fest. Sie können das Feature auch für alle Nutzer in Ihrer Organisation durch Festlegen einer Organisationsrichtlinie deaktivieren.

Projekt- und Instanzmetadaten festlegen

Wenn das Logging der Ausgabe des seriellen Ports in Stackdriver für Ihre Organisation nicht eingeschränkt ist, können Sie es für Projekte und einzelne VM-Instanzen aktivieren oder deaktivieren. Dafür legen Sie den Metadatenwert serial-port-logging-enable auf true oder false fest.

Wenn serial-port-logging-enable auf Projektebene auf true festgelegt ist, übernehmen alle VM-Instanzen im Projekt diese Einstellung implizit. Ist der Metadatenwert auf VM-Instanzebene auf true festgelegt, wird das Logging unabhängig von der Projekteinstellung nur für diese VM aktiviert.

Wenn Sie im umgekehrten Fall das Logging der Ausgabe des seriellen Ports für Projekte oder Instanzen deaktivieren möchten, legen Sie den Metadatenwert serial-port-logging-enable auf false fest. Wird dieser Metadatenwert auf Projektebene auf false festgelegt, wird das Logging der Ausgabe des seriellen Ports in Stackdriver für alle Instanzen im Projekt deaktiviert. Bei Einstellung auf false auf Instanzebene wird das Logging des seriellen Ports unabhängig von der Projekteinstellung nur für die jeweilige VM deaktiviert.

Sie können Metadaten über die Google Cloud Platform Console, das gcloud-Tool oder die API festlegen. Weitere Informationen finden Sie unter Benutzerdefinierte Metadaten einrichten.

Mit dem folgenden gcloud-Befehl können Sie beispielsweise das Logging der Ausgabe des seriellen Ports in Stackdriver für eine vorhandene Instanz aktivieren. Der Befehl schlägt fehl, wenn eine Organisationsrichtlinie diese Konfiguration verhindert:

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

Wenn Sie das Logging der Ausgabe des seriellen Ports in Stackdriver deaktivieren möchten, legen Sie serial-port-logging-enable auf false fest:

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

Ausschlussfilter

Sie können in Stackdriver einen Ausschlussfilter verwenden, um bestimmte Einträge für den seriellen Port aus der Loganzeige zu entfernen. Mit der Einstellung serial-port-logging-enable=true auf Projektebene können Sie beispielsweise mit einem erweiterten Filter das Logging der Ausgabe des seriellen Ports für bestimmte VM-Instanzen deaktivieren, wie im folgenden Beispiel:

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]"

Organisationsrichtlinie festlegen

Sie können das Logging der Ausgabe des seriellen Ports in Stackdriver für Ihre gesamte Organisation deaktivieren. Dazu legen Sie eine Organisationsrichtlinie fest, die bestimmte Konfigurationen von GCP-Ressourcen einschränkt. Legen Sie insbesondere die boolesche Einschränkung constraints/compute.disableSerialPortLogging fest. Weitere Informationen finden Sie unter Organisationsrichtlinien erstellen und bearbeiten.

Wenn Sie das Logging des seriellen Ports durch Festlegen von constraints/compute.disableSerialPortLogging auf true deaktivieren, wird dies nicht rückwirkend ausgeführt: Vorhandene VM-Instanzen mit Metadaten, die das Logging des seriellen Ports in Stackdriver aktivieren, senden weiterhin Logs an Stackdriver, 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 Stackdriver für Instanzen innerhalb der Organisation zu aktivieren.

Ausgabe des seriellen Ports ansehen

Konsole

  1. Rufen Sie die Seite "VM-Instanzen" auf.

    Zur Seite "VM-Instanzen"

  2. Wählen Sie die VM-Instanz aus, für die Sie die Ausgabe des seriellen Ports ansehen möchten.
  3. Klicken Sie unter Logs auf Serieller Port 1, 2, 3 oder 4. Entitäten auf Systemebene verwenden normalerweise den ersten seriellen Port (Port 1), der auch als serielle Konsole bezeichnet wird.

gcloud

Verwenden Sie den Befehl gcloud instances get-serial-port-output:

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

Dabei gilt:

  • [INSTANCE_NAME] ist der Name der Instanz.
  • [PORT] ist die Nummer des Ports (1, 2, 3 oder 4), für den Sie die Ausgabe aufrufen 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] gibt den Byte-Index (nullbasiert) des ersten Byte an, 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 einzigen Versuch zurückzugeben.

API

Erstellen Sie in der API eine get-Anfrage an die Methode instances.getSerialPortOutput:

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

Stackdriver

  1. Aktivieren Sie das Logging des seriellen Ports mit Stackdriver.
  2. Gehen Sie zur Seite "VM-Instanzen".

    Zur Seite "VM-Instanzen"

  3. Wählen Sie die VM-Instanz aus, deren Start-Agent-Logs Sie aufrufen möchten.
  4. Klicken Sie unter Logs auf Stackdriver Logging, um die Stackdriver-Logs aufzurufen.

  5. Maximieren Sie das Drop-down-Menü Alle Logs und wählen Sie die Ausgabe des seriellen Ports aus, die Sie sich ansehen möchten. Entitäten auf Systemebene verwenden normalerweise den ersten seriellen Port (Port 1), der auch als serielle Konsole bezeichnet wird. Wenn ein Port nicht im Drop-down-Menü angezeigt wird, steht keine Ausgabe zur Verfügung.

  6. Maximieren Sie optional das Drop-down-Menü Alle Logebenen, um Logs auszublenden, die unter der gewünschten Wichtigkeitsstufe liegen. Wenn Sie beispielsweise die Logebene "Info" auswählen, werden die Logeinträge der Stufe "Fehlerbehebung" ausgeblendet. Einträge der Stufe "Fehlerbehebung" werden normalerweise nur vom BIOS beim Booten verwendet.

  7. Weitere Informationen, auch über einfache und erweiterte Filter, finden Sie in der Stackdriver-Dokumentation unter Logs 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++ maskiert. 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.

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation