Use os despejos principais para analisar as causas de uma instância de máquina virtual (VM) sem resposta.
Para coletar os despejos principais no Compute Engine, configure as
VMs para receber um sinal de Interrupção não mascarável (NMI, na sigla em inglês) e execute um
comando SendDiagnosticInterrupt
para solicitar uma kernel panic ou tela azul
no sistema operacional. Uma tela de pânico ou azul do kernel inicia uma coleção de despejo de núcleo pelo sistema operacional convidado. Esses dumps de núcleo podem ser usados para fins de depuração, especialmente em cenários que são difíceis de reproduzir, como um congelamento do kernel.
Antes de começar
- O envio de sinais NMI é contado na cota padrão da API Consultas. Para mais informações, consulte Limites de taxa de API.
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud .
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
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.
- Configure sua VM para gerar dumps de núcleo
- Enviar um sinal NMI para gerar dumps de núcleo
- Revise os despejos principais
- O registro define
AlwaysKeepMemoryDump
como1
- O disco tem mais de 25 GB de espaço livre
VM_NAME
: ID da instância ou nome da VM da qual você quer coletar os dumps de núcleoZONE
: a zona em que a VM está localizada.Opcional. Crie uma chave de API, caso ainda não esteja disponível. Para mais informações sobre como criar chaves de API, consulte Como criar uma chave de API.
Para enviar o sinal NMI, faça uma solicitação
POST
ao métodosendDiagnosticInterrupt
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/sendDiagnosticInterrupt?key=API_KEY
Por exemplo, é possível usar o comando
curl
para fazer a solicitação a seguir: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
Substitua:
PROJECT_ID
: ID do projeto em que a VM será criadaZONE
: a zona em que a VM está localizada.VM_NAME
: ID da instância ou nome da VM da qual você quer coletar dumps de núcleoAPI_KEY
: sua chave de API
A saída será assim:
<Empty Response>
Para uma lista completa de saídas, consulte a próxima seção neste documento sobre "respostas de comando NMI".
- Verifique se a VM está configurada corretamente. Consulte Configurar VM.
- Aguarde e repita a solicitação
SendDiagnosticInterrupt
.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Funções exigidas
Para garantir que seu usuário ou conta de serviço tenha a permissão necessária para enviar sinais NMI para uma VM, peça para seu administrador conceder ao seu usuário ou conta de serviço o papel do IAM de Administrador da instância do Compute (v1) (
roles/compute.instanceAdmin.v1
) do projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.Esse papel predefinido contém a permissão
compute.instances.sendDiagnosticInterrupt
, que é necessária para enviar sinais NMI a uma VM.O administrador também pode conceder essa permissão à sua conta de serviço ou usuário com papéis personalizados ou outros papéis predefinidos.
Visão geral
Para usar os despejos principais para ajudar a depurar uma VM não responsiva ou um problema de segurança, você precisa concluir as seguintes etapas:
Limitações
Para VMs com a Inicialização segura ativada, é necessário desativar a Inicialização segura antes de enviar um sinal de interrupção de NMI. Para instruções, consulte Como modificar as opções da VM protegida em uma instância de VM.
Configurar VM
A resposta de uma VM para receber um sinal de interrupção NMI depende da configuração do sistema operacional da VM.
Cada sistema operacional grava os registros de despejo principais em um local diferente. Por exemplo, em sistemas operacionais Ubuntu, o arquivo crash dump é salvo em
/var/crash/
por padrão.Para configurar seu SO convidado para gerar um despejo de falha quando um sinal NMI for recebido, consulte a documentação do sistema operacional compatível.
Sistema operacional Links para instruções Observações adicionais Ubuntu Ubuntu: crash dump do Kernel Para VMs do Linux, configure o kernel para falhar quando receber o sinal de interrupção NMI.
Para configurar o kernel para falhar, adicione ao seu arquivo de configuração:
kernel.unknown_nmi_panic=1
SUSE Linux Enterprise Server (SLES) Configurar a memória do kernelcrash para análise do dump do núcleo do kernel Red Hat Enterprise Linux (RHEL) Use os dois documentos a seguir:
Container-Optimized OS (COS) Como ativar o despejo de falhas do Kernel em instâncias do COS do GCE Somente o COS 93 e versões mais recentes são compatíveis com a geração de kdump usando sinal NMI. Windows Gerar um kernel ou concluir o despejo de falhas As VMs cliente do Windows não mantêm arquivos dump de memória, a menos que sejam membros de um domínio do AD ou o seguinte seja verdadeiro:
Para ver mais informações, consulte Armazenamento dump de kernel e limpeza do comportamento no Windows 7.
Enviar NMI para gerar dumps de núcleo
Depois de configurar a VM, envie o sinal NMI para a VM usando a CLI do Google Cloud ou REST.
gcloud
Para enviar o sinal NMI, use o comando
instances send-diagnostic-interrupt
.gcloud compute instances send-diagnostic-interrupt VM_NAME \ --zone=ZONE
Substitua:
A saída será assim:
<Empty Response>
Para uma lista completa de saídas, consulte a próxima seção neste documento sobre "respostas de comando NMI".
REST
Respostas do comando NMI
Uma das respostas a seguir é retornada quando você tenta enviar um sinal NMI.
Estado Corpo Observações SUCESSO <Empty Response>
SUCCESS
mostra que o sinal NMI é entregue ao sistema operacional. Isso não garante que o dump de núcleo seja coletado ou que a VM seja encerrada ou reinicializada. Esses comportamentos são determinados pela configuração do sistema operacional.FALHA UNSUPPORTED_OPERATION
Isso ocorre quando o sistema operacional não recebe o sinal NMI. Há vários motivos para isso. Cenários comuns são quando a VM está sendo migrada em tempo real ou não está configurada corretamente para receber sinais NMI.
Para resolver isso, tente o seguinte:FALHA Required 'compute.instances.sendDiagnosticInterrupt' permission for [..]
Falha no comando porque o usuário que fez a solicitação não tem permissões suficientes.
Para resolver isso, atribua ao usuário o papel que contém a permissãocompute.instances.sendDiagnosticInterrupt
.Analisar dumps de núcleo
Analise o arquivo crash dump no local configurado ou padrão do seu sistema operacional.
Por exemplo, por padrão, nos sistemas operacionais Ubuntu, o arquivo crash dump é salvo em
/var/crash/
.Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-01-29 UTC.
-