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
:
-
Verwenden Sie den Befehl gcloud app instances enable-debug, um Fehler an den VMs für eine bestimmte Instanz und Version zu beheben:
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.gcloud app --project PROJECT-ID instances enable-debug
- Wenn Sie die Fehlerbehebung abgeschlossen haben, deaktivieren Sie den Fehlerbehebungsmodus so:
Folgen Sie der Anweisungen, um die Version der Instanz anzugeben.gcloud app --project PROJECT-ID instances disable-debug
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:
Rufen Sie die Seite mit den Google Cloud Console-Instanzen für Ihr Projekt auf:
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.
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.
Lassen Sie im Terminalfenster die Container anzeigen, die in der Instanz ausgeführt werden:
sudo docker ps
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.Optional können Sie Logging-Informationen für Ihre Anwendung mit dem folgenden Aufruf auflisten:
sudo docker logs CONTAINER-NAME
Starten Sie eine Shell in dem Container, in dem der Code ausgeführt wird:
sudo docker exec -it CONTAINER-NAME /bin/bash
Wenn Sie mit der Fehlerbehebung fertig sind, geben Sie
exit
ein, um den Container zu beenden, und nochmalsexit
, um die SSH-Sitzung zu beenden.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:
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
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.
Lassen Sie im Terminalfenster die Container anzeigen, die in der Instanz ausgeführt werden:
sudo docker ps
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.Optional können Sie Logging-Informationen für Ihre Anwendung mit dem folgenden Aufruf auflisten:
sudo docker logs CONTAINER-NAME
Starten Sie eine Shell in dem Container, in dem der Code ausgeführt wird:
docker exec -it CONTAINER-NAME /bin/bash
Wenn Sie mit der Fehlerbehebung fertig sind, geben Sie
exit
ein, um den Container zu beenden, und nochmalsexit
, um die SSH-Sitzung zu beenden.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.