Envoi d'une interruption de diagnostic
Vous pouvez envoyer une interruption de diagnostic pour résoudre le problème d'une instance de machine virtuelle de calcul non réactive ou inaccessible.
Cette fonction s'adresse aux utilisateurs avancés. L'envoi d'une interruption de diagnostic à un système en service peut entraîner la corruption des données ou une défaillance du système.
Une interruption de diagnostic provoque une panne et le redémarrage du système d'exploitation de l'instance. Avant d'envoyer une interruption de diagnostic, vous devez configurer le système d'exploitation pour générer un vidage sur incident (également appelée fichier de vidage de mémoire) en cas de panne. Le vidage sur incident saisit des informations sur l'état du système d'exploitation au moment de la panne. Après le redémarrage du système d'exploitation, vous pouvez analyser le vidage sur incident pour identifier et déboguer le problème.
Pour plus d'informations sur le dépannage à l'aide de vidages sur incident, voir : Collecte de vidages sur incident à l'aide de l'utilitaire Kdump.
Politique GIA requise
Pour utiliser Oracle Cloud Infrastructure, un administrateur doit être membre d'un groupe auquel l'accès de sécurité est accordé dans une politique par un administrateur de location. Cet accès est requis que vous utilisiez la console ou l'API REST avec une trousse SDK, l'interface de ligne de commande ou un autre outil. Si vous obtenez un message indiquant que vous ne disposez pas de l'autorisation requise, vérifiez auprès de l'administrateur de la location quel type d'accès vous avez et dans quel compartiment votre accès fonctionne.
Pour les administrateurs : La politique sous Autoriser les utilisateurs à lancer des instances de calcul offre la possibilité d'envoyer une interruption de diagnostic à une instance. Si le groupe spécifié n'a pas besoin de lancer des instances ou d'attacher des volumes, vous pouvez simplifier cette politique pour inclure seulement manage instance-family
et supprimer les énoncés impliquant volume-family
et virtual-network-family
.
Avant de commencer
- Le système d'exploitation de l'instance doit être configuré pour générer un fichier de vidage sur incident.
- L'instance doit être à l'état en cours d'. Pour plus d'informations, voir Arrêt, démarrage ou redémarrage d'une instance.
- Il n'y a aucune action en cours ayant une incidence sur l'instance, comme les volumes par blocs ou les cartes vNIC secondaires en cours d'attachement ou de détachement.
Configuration du système d'exploitation pour générer un vidage sur incident
Avant d'envoyer une interruption de diagnostic à une instance, vous devez configurer le système d'exploitation pour générer un vidage sur incident en cas de panne. L'interruption de diagnostic est reçue en tant qu'interruption non masquable (NMI) sur l'instance cible.
Les étapes dépendent du système d'exploitation.
Linux
Sur les images de plate-forme Oracle Linux, le système d'exploitation est entièrement configuré ou partiellement configuré pour générer un vidage sur incident, selon la date de lancement de l'image.
- Images lancées en août 2020 ou ultérieurement : L'image est entièrement configurée pour générer un vidage sur incident.
- Images antérieures : Le noyau de saisie de vidage est installé et configuré, mais vous devez effectuer les autres étapes de configuration.
- Images lancées en août 2020 ou ultérieurement : L'image est entièrement configurée pour générer un vidage sur incident.
- Images antérieures : Le noyau de saisie de vidage est installé et configuré, mais vous devez effectuer les autres étapes de configuration.
- Vous connecter à l'instance.
- Installez et configurez le noyau de saisie de vidage :
- Installez
kdump
etkexec
en exécutant la commande suivante :sudo yum install kexec-tools
- Réservez de la mémoire sur le noyau pour enregistrer le vidage sur incident. Effectuez les étapes suivantes :
- Ouvrez le fichier
etc/default/grub
dans un éditeur de texte. - Dans la ligne commençant par
GRUB_CMDLINE_LINUX_DEFAULT
, ajoutez le paramètrecrashkernel=<memory-to-reserve>
. Par exemple, pour réserver 100 Mo, ajoutezcrashkernel=100M
. - Enregistrez les modifications et fermez le fichier.
- Recréez le fichier GRUB en exécutant la commande suivante :
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
- Ouvrez le fichier
- Installez
- Configurez le noyau pour qu'une panne se produise lorsqu'il reçoit une interruption de diagnostic. Pour ce faire, ouvrez le fichier
/etc/sysctl.conf
dans un éditeur de texte et ajoutez la ligne suivante :kernel.unknown_nmi_panic=1
- Appliquez la modification à
/etc/sysctl.conf
en exécutant la commande suivante :sysctl -p
Windows Server - Image de plate-forme
Si vous utilisez une image de plate-forme Windows Server qui a été lancée en avril 2020 ou ultérieurement, l'image est déjà configurée pour générer un vidage sur incident.
Si vous utilisez une version d'image datant d'avant avril 2020, procédez de la façon suivante :
- Vous connecter à l'instance.
- Téléchargez les pilotes Oracle VirtIO pour Microsoft Windows.
- Installez les pilotes, puis redémarrez l'instance.
Windows Server - Image fournie par le client
Pour plus d'informations, consultez la documentation de la tierce partie sur votre système d'exploitation.
Envoi d'une interruption de diagnostic
Après avoir configuré le système d'exploitation de l'instance pour générer un vidage en cas de panne, utilisez les procédures suivantes pour envoyer une interruption de diagnostic.
Pour envoyer une interruption de diagnostic à l'aide de la console
- Ouvrez le menu de navigation et sélectionnez Calcul. Sous Calcul, sélectionnez Instances.
- Cliquez sur l'instance qui vous intéresse.
-
Cliquez sur Actions supplémentaires, puis sur Envoyer une interruption de diagnostic.
Attention
L'envoi d'une interruption de diagnostic à un système en service peut entraîner la corruption des données ou une défaillance du système. -
Vérifiez le message de confirmation, puis cliquez sur Envoyer une interruption de diagnostic.
L'état du cycle de vie qui s'affiche dans la console reste En cours d'exécution pendant que le système d'exploitation de l'instance s'arrête et redémarre. N'envoyez pas plusieurs interruptions de diagnostic.
- Attendez plusieurs minutes pour que le système d'exploitation de l'instance redémarre, puis connectez-vous à l'instance. Vous pouvez maintenant récupérer et analyser le vidage sur incident.
Pour envoyer une interruption de diagnostic à l'aide de l'API
Utilisez l'opération InstanceAction, en transmettant la valeur SENDDIAGNOSTICINTERRUPT
comme action à entreprendre.
Analyse d'un vidage sur incident
Le vidage sur incident est enregistré localement sur le système d'exploitation de l'instance .
-
Instances Linux : L'emplacement par défaut où le vidage sur incident est enregistré dépend du système d'exploitation.
- Oracle Linux 8 : Enregistré dans
/var/oled/crash
. - Oracle Linux 7 : Pour les images de plate-forme lancées en mars 2021 ou ultérieurement, enregistré dans
/var/crash
. Pour les anciennes images de plate-forme, enregistré dans/var/oled/crash
. - Autres systèmes d'exploitation de type Linux et UNIX : Enregistré dans
/var/crash/
.
Pour changer d'emplacement, modifiez le fichier
/etc/kdump.conf
. - Oracle Linux 8 : Enregistré dans
- Instances Windows : Le vidage sur incident est enregistré dans
%SystemRoot%memory.dmp
. Sur la plupart des systèmes Windows, il s'agit deC:\Windows\memory.dmp
.
Pour analyser le vidage sur incident, utilisez un outil tiers tel que l'utilitaire panne sur les instances Linux ou WinDbg sur les instances Windows.