Utilisez les fichiers de vidage de mémoire afin d'analyser les causes pour lesquelles une instance de machine virtuelle (VM) ne répond pas.
Pour collecter les fichiers de vidage de mémoire sur Compute Engine, vous devez configurer vos VM afin de recevoir un signal d'interruption non masquable (NMI), puis exécuter une commande SendDiagnosticInterrupt
pour afficher une invite panique du noyau ou écran bleu dans votre système d'exploitation. Une panique du noyau ou un écran bleu lance une collecte de fichiers de vidage de mémoire via le système d'exploitation invité. Ces fichiers de vidage de mémoire peuvent ensuite être utilisés à des fins de débogage, en particulier dans les scénarios difficiles à reproduire, tels qu'un gel de noyau.
Avant de commencer
- L'envoi de signaux NMI est comptabilisé dans le quota de l'API Queries par défaut. Pour en savoir plus, consultez la page Limites relatives à l'API.
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Configurez votre VM pour générer des fichiers de vidage de mémoire.
- Envoyez un signal NMI pour générer des fichiers de vidage de mémoire.
- Examinez les fichiers de vidage de mémoire.
- Le registre définit
AlwaysKeepMemoryDump
sur1
. - Le disque dispose d'au moins 25 Go d'espace libre.
VM_NAME
: ID d'instance ou nom de la VM à partir duquel vous souhaitez collecter les fichiers de vidage de mémoire.ZONE
: zone où se trouve votre VM.Facultatif. Si ce n'est pas déjà fait, créez une clé API. Pour en savoir plus sur la création de clés API, consultez la page Créer une clé API.
Pour envoyer le signal NMI, envoyez une requête
POST
à la méthodesendDiagnosticInterrupt
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/sendDiagnosticInterrupt?key=API_KEY
Par exemple, vous pouvez utiliser la commande
curl
pour envoyer la requête comme suit :curl --request POST 'https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/sendDiagnosticInterrupt?key=API_KEY' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' \ --header 'Accept: application/json' \ --compressed
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet dans lequel créer la VMZONE
: zone où se trouve votre VM.VM_NAME
: ID d'instance ou nom de la VM à partir duquel vous souhaitez collecter les fichiers de vidage de mémoire.API_KEY
: votre clé API.
Le résultat ressemble à ce qui suit :
<Empty Response>
Pour obtenir la liste complète des résultats, consultez la section suivante de ce document concernant les "réponses de la commande NMI".
- Vérifiez que la VM est correctement configurée. Consultez la section Configurer la VM.
- Attendez et réessayez d'envoyer la requête
SendDiagnosticInterrupt
.
REST
Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.
Rôles requis
Pour vous assurer que votre utilisateur ou votre compte de service dispose de l'autorisation nécessaire pour envoyer des signaux NMI à une VM, demandez à votre administrateur d'accorder à cet utilisateur ou à ce compte de service le rôle IAM Administrateur d'instances Compute (v1) (
roles/compute.instanceAdmin.v1
) sur votre projet. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.Ce rôle prédéfini contient l'autorisation
compute.instances.sendDiagnosticInterrupt
, qui est nécessaire pour envoyer des signaux NMI à une VM.Votre administrateur peut également attribuer cette autorisation à votre utilisateur ou votre compte de service avec des rôles personnalisés ou d'autres rôles prédéfinis.
Présentation
Pour utiliser des fichiers de vidage de mémoire afin de faciliter le débogage d'une VM qui ne répond pas ou d'un problème de sécurité, procédez comme suit :
Limites
Pour les VM sur lesquelles le démarrage sécurisé est activé, vous devez le désactiver avant d'envoyer un signal d'interruption NMI. Pour obtenir des instructions, consultez la page Modifier les options de VM protégée sur une instance de VM.
Configurer la VM
La réponse d'une VM à la réception d'un signal d'interruption NMI dépend de la configuration du système d'exploitation de la VM.
Chaque système d'exploitation écrit ses journaux de vidage de mémoire dans un emplacement différent. Par exemple, dans les systèmes d'exploitation Ubuntu, le fichier de vidage sur incident est enregistré par défaut dans
/var/crash/
.Pour configurer votre système d'exploitation invité afin de générer un fichier de vidage sur incident lorsqu'un signal NMI est reçu, consultez la documentation du système d'exploitation compatible.
Système d'exploitation Liens vers les instructions Remarques supplémentaires Ubuntu Ubuntu : vidage sur plantage du noyau Pour les VM Linux, vous devez configurer le noyau pour qu'il plante lorsqu'il reçoit le signal d'interruption NMI.
Pour configurer le noyau afin qu'il plante, ajoutez les éléments suivants à votre fichier de configuration :
kernel.unknown_nmi_panic=1
SUSE Linux Enterprise Server (SLES) Configurez la mémoire de Crashkernel pour l'analyse des fichiers de vidage de mémoire du noyau. Red Hat Enterprise Linux (RHEL) Utilisez les deux documents suivants :
Container-Optimized OS (COS) Activer le vidage sur plantage du noyau sur les instances GCE COS Seuls les versions COS 93 et ultérieures sont compatibles avec la génération de kdump à l'aide du signal NMI. Windows Générer un noyau ou effectuer un vidage sur plantage Les VM clientes Windows ne conservent pas les fichiers de dump mémoire, sauf s'ils sont membres d'un domaine AD ou si les conditions suivantes sont remplies :
Pour en savoir plus, consultez la page Stockage du vidage du noyau et comportement de nettoyage dans Windows 7.
Envoyer le signal NMI pour générer des fichiers de vidage de mémoire
Après avoir configuré la VM, vous pouvez envoyer le signal NMI à la VM à l'aide de Google Cloud CLI ou de REST.
gcloud
Pour envoyer le signal NMI, utilisez la commande
instances send-diagnostic-interrupt
.gcloud compute instances send-diagnostic-interrupt VM_NAME \ --zone=ZONE
Remplacez les éléments suivants :
Le résultat ressemble à ce qui suit :
<Empty Response>
Pour obtenir la liste complète des résultats, consultez la section suivante de ce document concernant les "réponses de la commande NMI".
REST
Réponses de la commande NMI
L'une des réponses suivantes est renvoyée lorsque vous tentez d'envoyer un signal NMI.
État Corps Remarques SUCCESS <Empty Response>
SUCCESS
indique que le signal NMI est transmis au système d'exploitation. Cela ne garantit pas que les fichiers de vidage de mémoire sont collectés, ni que la VM s'arrête ou redémarre. Ces comportements sont déterminés par la configuration du système d'exploitation.FAIL UNSUPPORTED_OPERATION
Cette erreur se produit lorsque le système d'exploitation ne reçoit pas le signal NMI. Il existe plusieurs raisons à cela. Il est courant que la VM soit migrée à chaud ou qu'elle ne soit pas correctement configurée pour recevoir des signaux NMI.
Pour résoudre ce problème, vous pouvez essayer les solutions suivantes :FAIL Required 'compute.instances.sendDiagnosticInterrupt' permission for [..]
La commande a échoué, car l'utilisateur qui envoie la requête ne dispose pas des autorisations suffisantes.
Pour résoudre ce problème, vous pouvez attribuer un rôle à l'utilisateur qui comprend l'autorisationcompute.instances.sendDiagnosticInterrupt
.Examiner les fichiers de vidage de mémoire
Examinez le fichier de vidage sur incident à l'emplacement configuré ou par défaut de votre système d'exploitation.
Par exemple, dans les systèmes d'exploitation Ubuntu, le fichier de vidage sur incident est enregistré par défaut dans
/var/crash/
.Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/11/22 (UTC).
-