Diagnoseunterbrechung senden
Dieses Feature ist für fortgeschrittene Benutzer gedacht. Wenn Sie eine Diagnoseunterbrechung an ein Livesystem senden, kann das zu Datenbeschädigung oder Systemfehlern führen.
Sie können eine Diagnoseunterbrechung senden, um Fehler bei einer nicht reagierenden oder nicht erreichbaren VM-Compute-Instanz zu beheben.
Eine Diagnoseunterbrechung sorgt für den Absturz und Neustart des Betriebssystems der Instanz. Bevor Sie eine Diagnoseunterbrechung senden, müssen Sie das Betriebssystem so konfigurieren, dass ein Crashdump (auch als Speicherdumpdatei bezeichnet) generiert wird, wenn es abstürzt. Der Crashdump erfasst Informationen zum Status des Betriebssystems zum Zeitpunkt des Absturzes. Nach dem Neustart des Betriebssystems können Sie den Crashdump analysieren, um das Problem zu identifizieren und zu debuggen.
Erforderliche IAM-Policy
Um Oracle Cloud Infrastructure zu verwenden, muss Ihnen ein Administrator in einer Policy Sicherheitszugriff erteilen. Dieser Zugriff ist erforderlich, unabhängig davon, ob Sie die Konsole oder die REST-API mit einem SDK, einer CLI oder einem anderen Tool verwenden. Wenn Sie eine Meldung erhalten, dass Sie keine Berechtigung haben oder nicht autorisiert sind, fragen Sie den Administrator, welcher Zugriffstyp Ihnen erteilt wurde und in welchem Compartment Sie arbeiten sollen.
Für Administratoren: Mit der Policy unter Starten von Compute-Instanzen durch Benutzer zulassen können Benutzer eine Diagnoseunterbrechung an eine Instanz senden. Wenn die angegebene Gruppe keine Instanzen starten oder Volumes zuordnen muss, können Sie die Policy so vereinfachen, dass nur manage instance-family
enthalten ist, und die Anweisungen mit volume-family
sowie virtual-network-family
entfernen.
Bevor Sie beginnen
- Das Betriebssystem der Instanz muss so konfiguriert sein, dass eine Crashdumpdatei generiert wird.
- Die Instanz muss sich im Status Wird ausgeführt befinden. Weitere Informationen finden Sie unter Instanz stoppen, starten oder neu starten.
- Es sind keine laufenden Aktionen vorhanden, die sich auf die Instanz auswirken, wie Block-Volumes oder sekundäre VNICs, die gerade angehängt oder getrennt werden.
BS zum Generieren eines Crashdumps konfigurieren
Bevor Sie eine Diagnoseunterbrechung an eine Instanz senden, müssen Sie das Betriebssystem so konfigurieren, dass ein Crashdump generiert wird, wenn es abstürzt. Die Diagnoseunterbrechung wird als nicht maskierbare Unterbrechung (Non-Maskable Interrupt, NMI) auf der Zielinstanz empfangen.
Die Schritte hängen vom Betriebssystem ab.
Linux
Auf Oracle Linux-Plattformimages ist das BS entweder vollständig konfiguriert oder teilweise so konfiguriert, dass ein Crashdump generiert wird, je nach Freigabedatum des Images.
- Images, die im August 2020 oder später freigegeben wurden: Das Image ist vollständig für die Generierung eines Crashdumps konfiguriert.
- Frühere Images: Der Dump-Capture-Kernel ist installiert und konfiguriert, Sie müssen jedoch die anderen Konfigurationsschritte ausführen.
- Images, die im August 2020 oder später freigegeben wurden: Das Image ist vollständig für die Generierung eines Crashdumps konfiguriert.
- Frühere Images: Der Dump-Capture-Kernel ist installiert und konfiguriert, Sie müssen jedoch die anderen Konfigurationsschritte ausführen.
- Images, die im September 2020 oder später freigegeben wurden: Das Image ist vollständig für die Generierung eines Crashdumps konfiguriert.
- Frühere Images: Der Dump-Capture-Kernel ist installiert und konfiguriert, Sie müssen jedoch die anderen Konfigurationsschritte ausführen.
- Stellen Sie eine Verbindung zur Instanz her.
- Installieren und konfigurieren Sie den Dumperfassungskernel:
- Installieren Sie
kdump
undkexec
, indem Sie den folgenden Befehl ausführen:sudo yum install kexec-tools
- Reservieren Sie Arbeitsspeicher auf dem Kernel, um den Crashdump zu speichern. Gehen Sie folgendermaßen vor:
- Öffnen Sie die Datei
etc/default/grub
in einem Texteditor. - Fügen Sie in der Zeile, die mit
GRUB_CMDLINE_LINUX_DEFAULT
beginnt, den Parametercrashkernel=<memory-to-reserve>
hinzu. Beispiel: Um 100 MB zu reservieren, fügen Siecrashkernel=100M
hinzu. - Speichern Sie die Änderungen, und schließen Sie die Datei.
- Erstellen Sie die GRUB-Datei neu, indem Sie den folgenden Befehl ausführen:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
- Öffnen Sie die Datei
- Installieren Sie
- Konfigurieren Sie den Kernel so, dass er abstürzt, wenn er eine Diagnoseunterbrechung empfängt. Öffnen Sie dazu die Datei
/etc/sysctl.conf
in einem Texteditor, und fügen Sie die folgende Zeile hinzu:kernel.unknown_nmi_panic=1
- Wenden Sie die Änderung auf
/etc/sysctl.conf
an, indem Sie den folgenden Befehl ausführen:sysctl -p
Windows Server - Plattformimage
Wenn Sie ein Plattformimage für Windows Server verwenden, das im April 2020 oder später freigegeben wurde, ist das Image bereits so konfiguriert, dass ein Crashdump generiert wird.
Wenn Sie ein Image verwenden, das vor April 2020 freigegeben wurde, gehen Sie wie folgt vor:
- Stellen Sie eine Verbindung zur Instanz her.
- Laden Sie die Oracle VirtIO-Treiber für Microsoft Windows herunter.
- Installieren Sie die Treiber, und starten Sie die Instanz neu.
Windows Server - Vom Kunden bereitgestelltes Image
Weitere Informationen finden Sie in der Dokumentation des Betriebssystems.
Diagnoseunterbrechung senden
Nachdem Sie das Betriebssystem der Instanz so konfiguriert haben, dass ein Crashdump beim Absturz generiert wird, verwenden Sie die folgenden Prozeduren, um eine Diagnoseunterbrechung zu senden.
So senden Sie eine Diagnoseunterbrechung mit der Konsole
- Öffnen Sie das Navigationsmenü, und klicken Sie auf Compute. Klicken Sie unter Compute auf Instanzen.
- Klicken Sie auf die gewünschte Instanz.
-
Klicken Sie auf Weitere Aktionen und dann auf Diagnoseunterbrechung senden.
Achtung
Wenn Sie eine Diagnoseunterbrechung an ein Livesystem senden, kann das zu Datenbeschädigung oder Systemfehlern führen. -
Prüfen Sie die Bestätigungsmeldung, und klicken Sie dann auf Diagnoseunterbrechung senden.
Der in der Konsole angezeigte Lebenszyklusstatus ist weiterhin Wird ausgeführt, während das Betriebssystem der Instanz abstürzt und neu gestartet wird. Senden Sie keine mehrfachen Diagnoseunterbrechungen.
- Warten Sie mehrere Minuten, bis das Betriebssystem der Instanz neu gestartet wurde, und stellen Sie dann eine Verbindung zur Instanz her. Sie können den Crashdump nun abrufen und analysieren.
So senden Sie eine Diagnoseunterbrechung mit der API
Verwenden Sie den InstanceAction-Vorgang, und übergeben Sie den Wert SENDDIAGNOSTICINTERRUPT
als auszuführende Aktion.
Crashdumps analysieren
Der Crashdump wird lokal auf dem Betriebssystem der Instanz gespeichert.
-
Linux-Instanzen: Der Standardspeicherort, in dem der Crashdump gespeichert wird, hängt vom Betriebssystem ab.
- Oracle Linux 8: Wird in
/var/oled/crash
gespeichert. - Oracle Linux 7: Bei Plattformimages, die im März 2021 oder später veröffentlicht wurden, lautet der Speicherort
/var/crash
. Bei älteren Plattformimages lautet der Speicherort/var/oled/crash
. - Andere Linux- und UNIX-ähnliche Betriebssysteme:: Wird in
/var/crash/
gespeichert.
Um den Speicherort zu ändern, ändern Sie die Datei
/etc/kdump.conf
. - Oracle Linux 8: Wird in
- Windows-Instanzen: Der Crashdump wird in
%SystemRoot%memory.dmp
gespeichert. Bei den meisten Windows-Systemen ist dasC:\Windows\memory.dmp
.
Um den Crashdump zu analysieren, verwenden Sie ein Drittanbietertool, wie das crash-Utility auf Linux-Instanzen oder WinDbg auf Windows-Instanzen.