Diagnoseunterbrechung senden

Achtung

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.

Wenn Sie mit Policys nicht vertraut sind, finden Sie weitere Informationen unter Erste Schritte mit Policys und Allgemeine Policys. Referenzmaterial zum Schreiben von Policys für Instanzen, Cloud-Netzwerke oder andere Core Services-API-Ressourcen finden Sie unter Details zu Core Services.

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

Hinweis

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.

Oracle Linux 8
  • 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.
Oracle Linux 7
  • 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.
Oracle Linux 6
  • 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.
  1. Stellen Sie eine Verbindung zur Instanz her.
  2. Installieren und konfigurieren Sie den Dumperfassungskernel:
    1. Installieren Sie kdump und kexec, indem Sie den folgenden Befehl ausführen:
      sudo yum install kexec-tools
    2. Reservieren Sie Arbeitsspeicher auf dem Kernel, um den Crashdump zu speichern. Gehen Sie folgendermaßen vor:
      1. Öffnen Sie die Datei etc/default/grub in einem Texteditor.
      2. Fügen Sie in der Zeile, die mit GRUB_CMDLINE_LINUX_DEFAULT beginnt, den Parameter crashkernel=<memory-to-reserve> hinzu. Beispiel: Um 100 MB zu reservieren, fügen Sie crashkernel=100M hinzu.
      3. Speichern Sie die Änderungen, und schließen Sie die Datei.
      4. Erstellen Sie die GRUB-Datei neu, indem Sie den folgenden Befehl ausführen:
        sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  3. 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
  4. 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:

  1. Stellen Sie eine Verbindung zur Instanz her.
  2. Laden Sie die Oracle VirtIO-Treiber für Microsoft Windows herunter.
  3. 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

  1. Öffnen Sie das Navigationsmenü, und klicken Sie auf Compute. Klicken Sie unter Compute auf Instanzen.
  2. Klicken Sie auf die gewünschte Instanz.
  3. 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.
  4. 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.

  5. 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.

  • Windows-Instanzen: Der Crashdump wird in %SystemRoot%memory.dmp gespeichert. Bei den meisten Windows-Systemen ist das C:\Windows\memory.dmp.

Um den Crashdump zu analysieren, verwenden Sie ein Drittanbietertool, wie das crash-Utility auf Linux-Instanzen oder WinDbg auf Windows-Instanzen.