In diesem Dokument werden die häufigsten Gründe für unerwartete Shutdowns und Neustarts von VM-Instanzen beschrieben und wie Sie diese verhindern.
Das Herunterfahren oder Neustarten von VMs kann durch Systemereignisse oder Administratoraktivitäten verursacht werden. Shutdown- und Neustarts von Systemereignissen werden von Google-Systemen oder dem Betriebssystem Ihrer VM generiert. Das Herunterfahren und Neustarten von Administratoraktivitäten werden durch einen vom Nutzer oder Dienstkonto generierten API-Aufruf generiert. Alle Shutdown- und Neustarts werden protokolliert, mit Ausnahme der Neustarts, die innerhalb der VM initiiert werden.
Hinweise
-
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 bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Geben Sie im Feld Query die folgende Abfrage ein:
resource.type="gce_instance" "VM_NAME" logName:("logs/cloudaudit.googleapis.com%2Fsystem_event" OR "logs/cloudaudit.googleapis.com%2Factivity")
Ersetzen Sie
VM_NAME
durch den Namen der VM, die heruntergefahren oder neu gestartet wird.Wenn das gewünschte Ereignis vor mehr als einer Stunde aufgetreten ist, legen Sie einen benutzerdefinierten Zeitraum fest. Klicken Sie dazu auf das Uhrsymbol und geben Sie einen benutzerdefinierten Bereich ein.
Klicken Sie auf Abfrage ausführen. Die Ergebnisse werden im Abschnitt Abfrageergebnisse angezeigt.
Klicken Sie auf den Erweiterungspfeil
neben jedem Ergebnis, um detaillierte Informationen aufzurufen.Unter Cloud-Audit-Logs überprüfen erfahren Sie mehr über die Felder
method
undprincipalEmail
, die ein Herunterfahren und Neustarten verursachen, und wie Sie sie verhindern können.Sehen Sie sich Cloud-Audit-Logs mit dem Befehl
gcloud logging read
an:gcloud logging read --freshness=TIME 'resource.type="gce_instance" "VM_NAME" logName:("logs/cloudaudit.googleapis.com%2Fsystem_event" OR "logs/cloudaudit.googleapis.com%2Factivity")'
Dabei gilt:
TIME
: die Zeitspanne, die Sie abfragen möchten. Zum Beispiel fragt1h
Logeinträge aus der letzten Stunde ab. Weitere Informationen zu Datums- und Uhrzeitformaten finden Sie unter gcloud topic datetimes.VM_NAME
: der Name der VM, die heruntergefahren oder neu gestartet wird.
Die Ergebnisanzeige.
Unter Cloud-Audit-Logs überprüfen erfahren Sie mehr über die Felder
method
undprincipalEmail
, die ein Herunterfahren und Neustarten verursachen, und wie Sie sie verhindern können.Überprüfen Sie die
method
-Felder der Cloud-Audit-Logs und vergleichen Sie sie mit den in der folgenden Tabelle aufgeführten Methoden.Methode Shutdown-Typ Beschreibung compute.instances.repair.recreateInstance
Systemereignis Wenn Ihre VM zu einer verwalteten Instanzgruppe gehört, erstellt die MIG die VM neu, wenn sich der Status der VM von
RUNNING
ändert und die MIG den Änderungsstatus nicht initiiert hat.Zu den Änderungen des Instanzstatus, die nicht von der MIG initiiert werden, gehören:
- Hardwarefehler.
- Beenden einer Instanz auf Abruf.
- Infrastrukturwartungsereignisse, wenn die VM-Instanz nicht auf Live-Migration eingestellt ist.
- Eine MIG-Instanz mit einer der folgenden Methoden löschen:
- Der API-Methode
instances.delete
. - Befehl
gcloud compute instances delete
- Der API-Methode
compute.instances.hostError
Systemereignis Ein Hostfehler (
compute.instances.hostError
) bedeutet, dass auf der physischen Maschine oder der Rechenzentrumsinfrastruktur, die Ihre Compute-Instanz hostet, ein Problem mit der Hardware oder Software aufgetreten ist, das zum Absturz der Instanz geführt hat. Ein Hostfehler, der einen völligen Hardwareausfall oder andere Hardwareprobleme nach sich zieht, kann eine Live-Migration Ihrer Instanz verhindern. Wenn Ihre Instanz so eingestellt ist, dass sie automatisch neu startet (dies ist die Standardeinstellung), startet die Compute Engine Ihre Instanz in der Regel innerhalb von drei Minuten ab dem Fehler. Je nach Problem kann der Neustart bis zu 5,5 Minuten dauern.Gelegentlich reagiert eine Compute-Instanz möglicherweise nicht mehr, bevor ein Hostfehler gemeldet wird. Sie können die Zeit verkürzen, die Compute Engine auf den Neustart oder die Beendigung der Instanz wartet. Legen Sie dazu das Zeitlimit für die Fehlerbehebung des Hosts fest (Vorabversion). Weitere Informationen finden Sie unter Verfügbarkeitsrichtlinien festlegen.
Physische Hardware- und Softwarefehler können von Zeit zu Zeit auftreten, sind jedoch eher selten. Um Ihre Anwendungen und Dienste solchen potenziell störenden Systemereignissen zu schützen, sollten Sie folgende Ressourcen prüfen:
- Robuste Systeme konzipieren
- Skalierbare und robuste Anwendungen erstellen
- Verwaltete Instanzgruppen erstellen
Google bietet auch verwaltete Dienste wie App Engine und die flexible App Engine-Umgebung.
compute.instances.automaticRestart
Systemereignis Dieses Ereignis tritt nach einem
hostError
- oderterminateOnHostMaintenance
-Ereignis auf, wenn dieautomaticRestart
-Hostwartungsrichtlinie Ihrer VM auftrue
festgelegt ist. In den Logs steht vor diesem Log einhostError
- oderterminateOnHostMaintenance
-Logeintrag.Informationen zum Ändern der Hostwartungsrichtlinie Ihrer VM finden Sie unter Aktualisierungsoptionen für eine Instanz.
compute.instances.guestTerminate
Systemereignis Das Betriebssystem Ihrer VM hat die Shutdown-Funktion gestartet. compute.instances.terminateOnHostMaintenance
Systemereignis Wenn Sie die
onHostMaintenance
-Wartungsrichtlinie Ihrer VM aufTERMINATE
setzen, beendet Compute Engine die VM, wenn ein Wartungsereignis vorliegt, bei dem Google die VM auf einen anderen Host verschieben muss.Wenn Sie die Richtlinie
onHostMaintenance
Ihrer VM ändern möchten, finden Sie weitere Informationen unter Aktualisierungsoptionen für eine Instanz.compute.instances.preempted
Systemereignis Ihre Spot-VM oder die Legacy-VM auf Abruf wurde von Compute Engine vorzeitig beendet:
- Wenn Compute Engine eine Spot-VM vorzeitig beendet, wird die Spot-VM entsprechend ihrer Beendigungsaktion von Compute Engine beendet oder gelöscht. Spot-VMs haben keine maximale Laufzeit.
- Wenn Compute Engine eine VM auf Abruf vorzeitig beendet, wird sie nach einer maximalen Laufzeit von 24 Stunden beendet. Verwenden Sie stattdessen Spot-VMs, um diese Einschränkungen zu vermeiden.
Spot-VMs und VMs auf Abruf sind überschüssige Compute Engine-Kapazitäten. Daher kann Compute Engine sie vorzeitig beenden, wenn die Kapazität an anderer Stelle benötigt wird. Sie können die Auswirkungen des vorzeitigen Beendens mindern, indem Sie die Best Practices befolgen. Wenn Sie hingegen VMs mit nutzergesteuerten Laufzeiten benötigen, erstellen Sie stattdessen Standard-VMs.
compute.instances.stop
Administratoraktivität Die VM wurde von einem Nutzer oder Dienstkonto beendet.
Fahren Sie mit dem nächsten Schritt fort, um den Nutzer oder das Dienstkonto zu identifizieren, das die VM beendet hat. Weitere Informationen zum Neustarten der VM finden Sie unter Angehaltene Instanz neu starten.
compute.instances.delete
Administratoraktivität Die VM wurde von einem Nutzer oder Dienstkonto beendet.
Fahren Sie mit dem nächsten Schritt fort, um den Nutzer oder das Dienstkonto zu identifizieren, das Ihre VM gelöscht hat. Informationen zum Erstellen einer neuen VM finden Sie unter VM erstellen und starten.
compute.instances.insert
Administratoraktivität Ihre VM wurde von einem Nutzer oder Dienstkonto erstellt.
Fahren Sie mit dem nächsten Schritt fort, um den Nutzer oder das Dienstkonto zu identifizieren, der/das Ihre VM erstellt hat. Informationen zum Erstellen einer neuen VM finden Sie unter VM erstellen und starten.
compute.instances.reset
Administratoraktivität Ein Nutzer oder ein Dienstkonto setzt Ihre VM zurück.
Fahren Sie mit dem nächsten Schritt fort, um den Nutzer oder das Dienstkonto zu identifizieren, das die VM beendet hat.
Überprüfen Sie die
principalEmail
-Felder der Cloud-Audit-Logs, um den Nutzer oder Dienst zu identifizieren, der das Herunterfahren oder den Neustart initiiert hat. Die folgende Tabelle enthält gängige von Google verwaltete Dienste, die das Herunterfahren oder Neustarten der Instanzen auslösen.E-Mail Beschreibung system@google.com
Ein Systemereignis hat das Herunterfahren oder den Neustart verursacht. project-number@cloudservices.gserviceaccount.com
Ein Dienst-Agent hat das Herunterfahren eingeleitet.
Sehen Sie sich die
project-number
des Dienst-Agents an, um festzustellen, über welches Projekt der Dienst gestartet wurde.Sehen Sie sich das Feld
protoPayload.requestMetadata.callerSuppliedUserAgent
an, um festzustellen, welcher Google-Dienst die Anfrage gesendet hat.Wenn ein Nutzer das Herunterfahren oder einen Neustart ausgelöst hat, wird seine E-Mail-Adresse im Feld
principalEmail
angezeigt. Beispiel:cloudysanfrancisco@gmail.com
.Administratoren können Nutzer daran hindern, den Status von Projekt-VMs zu ändern, indem sie die Berechtigungen der Identitäts- und Zugriffsverwaltung für Nutzerkonten ändern. Weitere Informationen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.
Rufen Sie in der Google Cloud Console die Seite Logbasierte Messwerte auf.
Klicken Sie auf Messwert erstellen.
- Wählen Sie
Counter
aus. - Behalten Sie für Verteilung die Standardeinstellung bei.
- Name des logbasierten Messwerts:
vm-lifecycle-events
. Sie müssen genau diesen Namen verwenden, damit das Dashboard ordnungsgemäß funktioniert. - Beschreibung: Optional – Geben Sie eine Beschreibung für diesen Messwert ein.
- Einheiten:
1
Geben Sie im Bereich Filterauswahl Folgendes an:
- Wählen Sie im Menü Projekt oder Log-Bucket auswählen die Option „Projektlogs“ aus.
- Geben Sie unter Filter erstellen Folgendes ein:
resource.type = "gce_instance" AND log_id("cloudaudit.googleapis.com/activity") OR log_id("cloudaudit.googleapis.com/system_event") operation.first="true"
Klicken Sie im Bereich Labels auf Label hinzufügen.
Geben Sie Folgendes an:
- Labelname:
method
- Labeltyp:
STRING
- Feldname:
protoPayload.methodName
- Regulärer Ausdruck:
(recreateInstance|hostError|automaticRestart|guestTerminate|terminateOnHostMaintenance|preempted|insert|stop|delete|reset|start)
- Labelname:
Klicken Sie auf Fertig.
Klicken Sie auf Messwert erstellen.
- Führen Sie einen
stop
- undstart
-Vorgang auf einer vorhandenen VM aus oder erstellen Sie eine neue VM zu Testzwecken. Öffnen Sie in der Google Cloud Console Dashboards.
Öffnen Sie auf dem Tab Dashboard-Liste das Dashboard
GCE VM Lifecycle Events Monitoring
.Wählen Sie die VM im Drop-down-Menü Name aus.
Begrenzen Sie die Zeitreihe auf einen relevanten Zeitraum.
Weitere Möglichkeiten zum Filtern des Dashboards finden Sie unter Temporären Filter hinzufügen.
Im Diagramm VM-Lebenszyklus wird Folgendes angezeigt:
- Der Messwert
compute.googleapis.com/instance/uptime
, der angibt, ob die VM zu einem bestimmten Zeitpunkt ausgeführt wurde, wobei 1 aktiv und 0 inaktiv ist. Dieser Messwert gibt die Verfügbarkeit aufgrund von Nutzeraktivitäten und Systemereignissen an und ist kein Hinweis auf das Compute Engine-SLA. - Der logbasierte Messwert
vm-lifecycle-events
zum Zählen der Anzahl der Lebenszyklusaktionen, z. B.stop
oderstart
, die zu einem bestimmten Zeitpunkt auf die VM ausgeführt wurden
- Der Messwert
Das Diagramm „Ereignisse“ zeigt denselben
vm-lifecycle-events
-logbasierten Messwert, aber in einer vergrößerten Ansicht, um die Lesbarkeit zu erleichtern. Die X-Achsen sind zwar ausgerichtet, die Farben sind jedoch nicht zwischen den beiden Diagrammen synchronisiert.Ermitteln Sie die von den VMs verwendete freigegebene VPC mit dem Befehl
gcloud compute instances describe
:gcloud compute instances describe VM_NAME \ --format="flattened(networkInterfaces[].network)"
Die Ausgabe sieht etwa so aus:
networkInterfaces[0].network: https://www.googleapis.com/compute/v1/projects/SHARED_VPC_PROJECT/global/networks/FROZEN_NETWORK
Überprüfen Sie im Hostprojekt der freigegebenen VPC, ob die Abrechnung deaktiviert wurde.
resource.type="project" protoPayload.request.@type="type.googleapis.com/google.internal.cloudbilling.billingaccount.v1.DisableResourceBillingRequest" protoPayload.response.resourceBillingInfo.billingAccountAssignmentType="DISABLED"
Falls erforderlich aktivieren Sie die Abrechnung für das Hostprojekt.
- Durch Systemereignisse ausgelöste Herunterfahren und Neustarts:Hier werden Herunterfahren, die von internen Google Cloud-Systemen aufgrund von Systemwartungsereignissen, normalen Hardwareausfällen oder Ressourceneinschränkungen initiiert wurden, erfasst.
- Durch Aktivitäten von Systemadministratoren ausgelöste Herunter-/Neustarts:Hier werden Abschlüsse untersucht, die durch direkte Aktionen wie API-Aufrufe von Nutzern oder Dienstkonten verursacht wurden. Dazu gehören manuelle Herunter- und Neustarts oder automatisierte Prozesse, die sich auf den VM-Status auswirken.
- Unofficial RCA text generation (Erstellung eines inoffiziellen RCA-Texts): Hier finden Sie einen detaillierten Text zur Ursachenanalyse, in dem die identifizierte Ursache für die Beendigung, die beteiligten Systeme oder Aktivitäten und Empfehlungen zur Vermeidung zukünftiger Vorfälle beschrieben werden.
- Führen Sie den folgenden Befehl aus und kopieren Sie ihn.
- Öffnen Sie die Google Cloud Console und aktivieren Sie Cloud Shell. Cloud Console öffnen
- Fügen Sie den kopierten Befehl ein.
- Führen Sie den Befehl
gcpdiag
aus, um das Docker-Imagegcpdiag
herunterzuladen und dann Diagnoseprüfungen durchzuführen. Folgen Sie gegebenenfalls der Anleitung für die Ausgabe, um fehlgeschlagene Prüfungen zu beheben. - Kopieren Sie den folgenden Befehl und führen Sie ihn auf Ihrer lokalen Workstation aus.
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- Führen Sie den Befehl
gcpdiag
aus../gcpdiag runbook gce/vm-termination \ --parameter project_id=PROJECT_ID \ --parameter name=VM_NAME \ --parameter zone=ZONE
- PROJECT_ID: Die ID des Projekts, das die Ressource enthält
- VM_NAME: Der Name der Ziel-VM in Ihrem Projekt.
- ZONE: Die Zone, in der sich die Ziel-VM befindet.
--universe-domain
: Die Domain Trusted Partner Sovereign Cloud, auf der die Ressource gehostet wird--parameter
oder-p
: Runbook-Parameter
Shutdown- und Neustarts von VMs diagnostizieren
Sie können die Logs einer VM abfragen, um die Ursache für das Herunterfahren oder Neustarten einer VM zu ermitteln. Damit Sie in Zukunft schnell die Ursache für Shutdowns oder Neustarts von VMs finden können, erstellen Sie ein Dashboard, das die Logs enthält. Prüfen Sie nach dem Abfragen der Logging-Protokolle die Felder
method
undprincipalEmail
, um festzustellen, welches Ereignis und welcher Nutzer oder Dienst das Herunterfahren oder den Neustart ausgelöst hat.Cloud-Audit-Logs abfragen
Fragen Sie Cloud-Audit-Logs ab, um eine Liste der Systemereignisse und Administratoraktivitäten anzeigen zu lassen, die zu einem Herunterfahren oder Neustart geführt haben.
Console
gcloud
Cloud-Audit-Logs prüfen
Prüfen Sie die Felder
method
undprincipalEmail
der Cloud-Audit-Logs, um festzustellen, warum Ihre VM heruntergefahren oder neu gestartet wurde.VM-Lifecycle-Events überwachen
Sie können VM-Lifecycle-Events (einschließlich Herunterfahren, Neustarts und Hostfehler) überwachen, indem Sie ein Cloud Monitoring-Dashboard erstellen.
Auf diesem Dashboard können Sie Systemereignisse und Administratoraktivitäten visualisieren, die im Abschnitt Audit-Logs prüfen dieses Dokuments ausführlicher beschrieben werden.
Abbildung 1. Ein Beispieldashboard, das die Verfügbarkeit einer Instanz und ihre Lifecycle-Events zeigt, z. B. eine beendete Instanz.
Logbasierten Messwert erstellen
Erstellen Sie einen benutzerdefinierten logbasierten Messwert, um VM-Lifecycle-Events zu erfassen. Bei diesem Messwert werden Audit-Logs verwendet, um zu erfassen, wie oft ein bestimmtes VM-Lifecycle-Event aufgetreten ist.
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Logs Writer (
roles/logging.logWriter
) für das Projekt zu erteilen, um die Berechtigungen zu erhalten, die Sie zum Erstellen des Messwerts benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
So erstellen Sie einen benutzerdefinierten logbasierten Messwert:
Führen Sie im Abschnitt Messwerttyp folgende Schritte aus:
Geben Sie im Abschnitt Details Folgendes ein:
Dashboard verwenden
Auf dem Dashboard werden erst dann Daten angezeigt, wenn auf einer VM ein Systemereignis oder eine Administratoraktivität auftritt. Wenn Sie testen möchten, ob das Dashboard funktioniert, führen Sie eine Administratoraktivität aus, z. B. einen
stop
- und einenstart
-Vorgang:Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Monitoring Dashboard Viewer (
roles/monitoring.dashboardViewer
) für das Projekt zu erteilen, um die für die Nutzung des Dashboards erforderlichen Berechtigungen zu erhalten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Das Dashboard enthält zwei Diagramme mit einer Zeitachse für Systemereignisse und Administratoraktivitäten auf einer VM:
Massive projektübergreifende Shutdowns von VMs untersuchen
Compute Engine kann mehrere VMs herunterfahren, die mit einem freigegebenen VPC-Hostprojekt verbunden sind, wenn die Abrechnung des Hostprojekts der freigegebenen VPC inaktiv oder deaktiviert ist.
Suchen Sie nach Stoppvorgängen, die von
cloud-cluster-manager@prod.google.com
initiiert wurden, um festzustellen, ob Ihre VMs durch eine Anfrage für massive Shutdowns heruntergefahren wurden.Beim Starten einer betroffenen Instanz wird ein Fehler wie dieser zurückgegeben:
Starting instance(s) INSTANCE_NAME...failed. ERROR: (gcloud.compute.instances.start) The default network interface [nic0] is frozen.
So beheben Sie das Problem:
Informationen dazu, wie Sie verhindern können, dass dieses Problem erneut auftritt, finden Sie unter Verknüpfung zwischen einem Projekt und seinem Rechnungskonto sichern.
Probleme beim Beenden von VMs mit gcpdiag untersuchen
gcpdiag
ist ein Open-Source-Tool. Es ist kein offiziell unterstütztes Google Cloud-Produkt. Mit dem Toolgcpdiag
können Sie Probleme mit Google Cloud-Projekten identifizieren und beheben. Weitere Informationen finden Sie im gcpdiag-Projekt auf GitHub.In diesem gcpdiag-Runbook werden Probleme beim Beenden von VMs untersucht. Dabei werden die folgenden Bereiche geprüft:Google Cloud Console
gcpdiag runbook gce/vm-termination \ --parameter project_id=PROJECT_ID \ --parameter name=VM_NAME \ --parameter zone=ZONE
Docker
Sie können
gcpdiag
mit einem Wrapper ausführen, dergcpdiag
in einem Docker-Container startet. Docker oder Podman muss installiert sein.Verfügbare Parameter für dieses Runbook ansehen
Ersetzen Sie Folgendes:
Nützliche Flags:
Eine Liste und Beschreibung aller
gcpdiag
-Tool-Flags finden Sie in dergcpdiag
-Nutzungsanleitung.Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-12-22 (UTC).
-