Instanz debuggen

Sie können den Fehlerbehebungsmodus für eine VM aktivieren. Im Fehlerbehebungsmodus haben Hauptkonten mit den Rollen Inhaber, Bearbeiter und App Engine-Administrator für das Projekt Root-Zugriff auf die VM. Während der Fehlerbehebungsmodus aktiviert ist, ist die automatische Einführung von Betriebssystemaktualisierungen und Sicherheits-Patches deaktiviert. Die VM ist jedoch weiterhin Teil des Load-Balancer-Pools und erhält externe Anfragen.

Wenn Sie das Debugging aktivieren oder deaktivieren, wird in der Google Cloud Console das Ereignis „VM-Instanz-Debugging aktivieren/deaktivieren“ angezeigt und das Ereignis wird in der Datei /var/log/syslog.log der VM protokolliert.

Fehlerbehebungsmodus aktivieren und deaktivieren

Sie können gcloud verwenden, um den Fehlerbehebungsmodus für eine Instanz zu aktivieren oder zu deaktivieren. Zum Debuggen einer Instanz muss Ihre Rolle die Berechtigung appengine.instances.enableDebug enthalten.

So aktivieren und deaktivieren Sie den Fehlerbehebungsmodus mit gcloud:

  1. Verwenden Sie den Befehl gcloud app instances enable-debug, um Fehler an den VMs für eine bestimmte Instanz und Version zu beheben:
    gcloud app --project PROJECT-ID instances enable-debug
    Ersetzen Sie PROJECT-ID durch Ihre eigene Projekt-ID und führen Sie die angezeigten Schritte aus, um die Version der Instanz anzugeben, für die Fehler behoben werden sollen.
  2. Wenn Sie die Fehlerbehebung abgeschlossen haben, deaktivieren Sie den Fehlerbehebungsmodus so:
    gcloud app --project PROJECT-ID instances disable-debug
    Folgen Sie der Anweisungen, um die Version der Instanz anzugeben.

Wenn Sie den Fehlerbehebungsmodus deaktivieren, wird die VM gestoppt und eine neue Instanz Ihrer App gestartet, die auf einer fehlerfreien, neuen VM ausgeführt wird.

Verbindung zur Instanz herstellen

Console

So stellen Sie eine Verbindung zu einer Instanz in der Konsole her:

  1. Rufen Sie die Seite mit den Google Cloud Console-Instanzen für Ihr Projekt auf:

    Öffnen Sie die Seite "Instanzen".

  2. Klicken Sie ganz rechts in der Zeile mit der Instanz, auf die Sie zugreifen möchten, auf SSH:

    Dadurch wird die Instanz in den Fehlerbehebungsmodus versetzt und eine SSH-Sitzung für die Instanz in einem Terminalfenster geöffnet.

    Sie können auch verschiedene Optionen zum Starten einer SSH-Sitzung aus der Drop-down-Liste auswählen.

  3. Zu diesem Zeitpunkt befinden Sie sich auf dem Instanzhost, auf dem mehrere Container ausgeführt werden. Weitere Informationen hierzu finden Sie im Abschnitt Grundlegendes zu allgemeinen Containern.

  4. Lassen Sie im Terminalfenster die Container anzeigen, die in der Instanz ausgeführt werden:

    sudo docker ps

  5. In der Ausgabe des Befehls sudo docker ps werden alle Container zeilenweise aufgeführt. Suchen Sie die Zeile mit Ihrer Projekt-ID. Dies ist der Container, in dem Ihr Code ausgeführt wird. Notieren Sie den NAMEN dieses Containers.

  6. Optional können Sie Logging-Informationen für Ihre Anwendung mit dem folgenden Aufruf auflisten:

    sudo docker logs CONTAINER-NAME

  7. Starten Sie eine Shell in dem Container, in dem der Code ausgeführt wird:

    sudo docker exec -it CONTAINER-NAME /bin/bash

  8. Wenn Sie mit der Fehlerbehebung fertig sind, geben Sie exit ein, um den Container zu beenden, und nochmals exit, um die SSH-Sitzung zu beenden.

  9. Deaktivieren Sie die Fehlerbehebung für die Instanz, damit sie den normalen Betrieb wieder aufnehmen kann.

gcloud

So stellen Sie mit gcloud eine Verbindung zu einer Instanz her:

  1. Rufen Sie den folgenden Befehl auf, wenn die Instanz zur Fehlerbehebung aktiviert ist:

    gcloud beta app instances --project PROJECT-ID ssh INSTANCE-NAME --service SERVICE --version VERSION

  2. An diesem Punkt befinden Sie sich auf dem Instanzhost, auf dem mehrere Container ausgeführt werden. Weitere Informationen hierzu finden Sie im Abschnitt Grundlegendes zu allgemeinen Containern.

  3. Lassen Sie im Terminalfenster die Container anzeigen, die in der Instanz ausgeführt werden:

    sudo docker ps

  4. In der Ausgabe des Befehls sudo docker ps werden alle Container zeilenweise aufgeführt. Suchen Sie die Zeile mit Ihrer Projekt-ID. Dies ist der Container, in dem Ihr Code ausgeführt wird. Notieren Sie den NAMEN dieses Containers.

  5. Optional können Sie Logging-Informationen für Ihre Anwendung mit dem folgenden Aufruf auflisten:

    sudo docker logs CONTAINER-NAME

  6. Starten Sie eine Shell in dem Container, in dem der Code ausgeführt wird:

    docker exec -it CONTAINER-NAME /bin/bash

  7. Wenn Sie mit der Fehlerbehebung fertig sind, geben Sie exit ein, um den Container zu beenden, und nochmals exit, um die SSH-Sitzung zu beenden.

  8. Deaktivieren Sie die Fehlerbehebung für die Instanz, damit sie den normalen Betrieb wieder aufnehmen kann.

Grundlegendes zu allgemeinen Containern

Zusätzlich zu dem Container, in dem der Anwendungscode ausgeführt wird, verfügt Ihre Instanz möglicherweise auch über die folgenden Container:

Container und Quellcode Beschreibung
cloud-sql Sorgt für sichere Verbindungen zu Ihrer Cloud SQL-Instanz.
fluentd_logger Logging-Agent
nginx_proxy Fungiert als Proxy für Anfragen an die Anwendung.
opentelemetry-collector Hier werden Telemetriedaten empfangen, verarbeitet und exportiert.
stackdriver-monitoring-agent Erfasst, speichert und überwacht Systeminformationen.

Beachten Sie, dass diese Sidecar-Container ohne Vorankündigung geändert werden können.