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 so bei Compute Engine authentifizieren.
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, die Ihre VM hostet, ein Problem mit der Hardware oder Software aufgetreten ist, das zum Absturz der VM führte. Ein Hostfehler, der einen völligen Hardwareausfall oder andere Hardwareprobleme nach sich zieht, kann eine Live-Migration Ihrer VM verhindern. Wenn Ihre VM so eingestellt ist, dass sie automatisch neu startet (dies ist die Standardeinstellung), startet Google Ihre VM in der Regel innerhalb von drei Minuten ab dem Fehler. Je nach Problem kann der Neustart bis zu 5,5 Minuten dauern.VMs mit lokalen SSD-Laufwerken
Wenn ein Hostfehler auf einer VM auftritt, an die ein oder mehrere lokale SSDs angehängt sind, versucht Compute Engine, die Verbindung zur VM wiederherzustellen und die lokalen SSD-Daten beizubehalten. Während Compute Engine Ihre VM und das lokale SSD-Laufwerk wiederherstellt, reagieren das Hostsystem und das zugrunde liegende Laufwerk nicht.
Sie können festlegen, wie lange Compute Engine versuchen soll, lokale SSD-Daten wiederherzustellen, indem Sie das Zeitlimit für die lokale SSD-Wiederherstellung bestimmen.
Weitere Informationen zum Verhalten lokaler SSD-Laufwerke bei einem Hostfehler finden Sie unter Datenpersistenz auf lokalen SSDs.
Nicht reagierende VMs
Manchmal reagiert eine VM möglicherweise nicht mehr, bevor ein Hostfehler erkannt wird. Sie können die Zeit verkürzen, die Compute Engine auf den Neustart oder die Beendigung der VM wartet. Legen Sie dazu das Zeitlimit für die Fehlerbehebung des Hosts fest (Vorschau). 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 auf einer vorhandenen VM einen
stop
- undstart
-Vorgang aus oder erstellen Sie zu Testzwecken eine neue VM. Öffnen Sie Dashboards in der Google Cloud Console.
Öffnen Sie auf dem Tab Dashboard-Liste das Dashboard
GCE VM Lifecycle Events Monitoring
.Wählen Sie im Drop-down-Menü Name die VM aus.
Grenzen Sie die Zeitreihe auf einen relevanten Zeitraum ein.
Weitere Möglichkeiten zum Filtern des Dashboards finden Sie unter Temporären Filter hinzufügen.
Im Diagramm Zeitleiste für den 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. Beachten Sie, dass dieser Messwert die Verfügbarkeit als Ergebnis von Nutzeraktivitäten und Systemereignissen widerspiegelt. Er ist kein Hinweis auf das Compute Engine-SLA. - Der logbasierte Messwert
vm-lifecycle-events
zum Zählen der Lebenszyklusaktionen wiestop
oderstart
, die zu einem bestimmten Zeitpunkt für die VM ausgeführt wurden
- Der Messwert
Das Diagramm „Ereignisse“ zeigt denselben logbasierten Messwert „
vm-lifecycle-events
“, jedoch zur besseren Lesbarkeit in einer vergrößerten Ansicht. Beachten Sie, dass die X-Achsen zwar ausgerichtet sind, die Farben jedoch nicht zwischen den beiden Diagrammen synchronisiert werden.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.
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 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
Im Dashboard werden erst dann Daten angezeigt, wenn auf einer VM ein Systemereignis oder 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 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 der 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 der folgende 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.
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-11-29 (UTC).
-