Enviando uma Interrupção de Diagnóstico

Você pode enviar uma interrupção de diagnóstico para solucionar problemas de uma instância da máquina virtual (VM) do serviço Compute que não responde ou inacessível.

Cuidado

Esse recurso se destina a usuários avançados. Enviar uma interrupção de diagnóstico para um sistema ao vivo pode causar corrupção de dados ou falha do sistema.

Uma interrupção de diagnóstico faz com que o sistema operacional da instância falhe e seja reinicializado. Antes de enviar uma interrupção de diagnóstico, configure o sistema operacional para gerar um despejo de memória (também chamado de arquivo de dump de memória) quando ele falhar. O despejo de memória captura informações sobre o estado do sistema operacional no momento da falha. Após a reinicialização do sistema operacional, você pode analisar o despejo de memória para identificar e depurar o problema.

Dica

Para obter mais informações sobre como solucionar problemas usando despejos de memória, consulte: Coletando Despejos de Memória Usando o Utilitário Kdump.

Política de IAM Necessária

Para usar o Oracle Cloud Infrastructure, um administrador deve ser membro de um grupo ao qual foi concedido acesso de segurança em uma política por um administrador da tenancy. Esse acesso será necessário se você estiver usando a Console ou a API REST com um SDK, uma CLI ou outra ferramenta. Se você receber uma mensagem informando que não tem permissão ou está não autorizado, verifique com o administrador da tenancy qual tipo de acesso você tem e qual compartimento seu acesso funciona.

Para administradores: A política de Permitir que os usuários iniciem instâncias de computação inclui a capacidade de enviar uma interrupção de diagnóstico para uma instância. Se o grupo especificado não precisar iniciar instâncias ou anexar volumes, você poderá simplificar essa política para incluir apenas manage instance-family e remover as declarações que envolvem volume-family e virtual-network-family.

Se você for iniciante em políticas, consulte Gerenciando Domínios de Identidades e Políticas Comuns. Para obter material para referência sobre a gravação de políticas para instâncias, redes em nuvem ou outros recursos da API do Core Services, consulte Detalhes do Core Services.

Configurando o Sistema Operacional para Gerar um Despejo de Memória

Antes de enviar uma interrupção de diagnóstico para uma instância, configure o sistema operacional para gerar um despejo de memória quando ele falhar. A interrupção de diagnóstico é recebida como interrupção não mascarável (NMI) na instância de destino.

As etapas dependem do sistema operacional.

Linux

Observação

Nas imagens da plataforma do Oracle Linux, o sistema operacional é total ou parcialmente configurado para gerar um despejo de memória, dependendo da data de liberação da imagem.

Oracle Linux 8
  • Imagens lançadas em agosto de 2020 ou mais recente: A imagem está totalmente configurada para gerar um dump de pane.
  • Imagens anteriores: O kernel de coleta de dump está instalado e configurado, mas você deve executar as outras etapas de configuração.
Oracle Linux 7
  • Imagens lançadas em agosto de 2020 ou mais recente: A imagem está totalmente configurada para gerar um dump de pane.
  • Imagens anteriores: O kernel de coleta de dump está instalado e configurado, mas você deve executar as outras etapas de configuração.
  1. Estabelecer conexão com a instância.
  2. Instalar e configurar o kernel de captura de dump:
    1. Instale kdump e kexec executando o seguinte comando:
      sudo yum install kexec-tools
    2. Reserve memória no kernel para salvar o despejo de memória. Faça o seguinte:
      1. Abra o arquivo etc/default/grub em um editor de texto.
      2. Na linha que começa com GRUB_CMDLINE_LINUX_DEFAULT, adicione o parâmetro crashkernel=<memory-to-reserve> . Por exemplo, para reservar 100 MB, adicione crashkernel=100M.
      3. Salve as alterações e feche o arquivo.
      4. Reconstrua o arquivo GRUB executando o seguinte comando:
        sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  3. Configure o kernel para falhar quando receber uma interrupção de diagnóstico. Para fazer isso, abra o arquivo /etc/sysctl.conf em um editor de texto e adicione a seguinte linha:
    kernel.unknown_nmi_panic=1
  4. Aplique a alteração ao arquivo /etc/sysctl.conf executando o seguinte comando:
    sysctl -p

Windows Server - Imagem da Plataforma

Se você usar uma imagem da plataforma do Windows Server que foi liberada em abril de 2020 ou posteriormente, a imagem já estará configurada para gerar um despejo de memória.

Se você usar uma imagem que foi liberada antes de abril de 2020, faça o seguinte:

  1. Estabelecer conexão com a instância.
  2. Faça Download dos Drivers Oracle VirtIO para Microsoft Windows.
  3. Instale os drivers e depois reinicie a instância.

Windows Server - Imagem Fornecida pelo Cliente

Consulte a documentação de terceiros do seu sistema operacional para obter mais informações.

Enviando uma Interrupção de Diagnóstico

Depois de configurar o sistema operacional da instância para gerar um despejo de memória quando ele falhar, use os procedimentos a seguir para enviar uma interrupção de diagnóstico.

Para enviar uma interrupção de diagnóstico usando a Console

  1. Abra o menu de navegação e selecione Compute. Em Compute, selecione Instâncias.
  2. Clique na instância em que você está interessado.
  3. Clique em Mais Ações e em Enviar interrupção de diagnóstico.

    Cuidado

    O envio de uma interrupção de diagnóstico para um sistema ao vivo pode corromper dados ou causar falha do sistema.
  4. Verifique a mensagem de confirmação e clique em Enviar interrupção de diagnóstico.

    O estado do ciclo de Vida que aparece na Console permanece Em Execução enquanto o sistema operacional da instância falha e reinicia. Não envie várias interrupções de diagnóstico.

  5. Aguarde vários minutos para que o sistema operacional da instância seja reiniciado e, em seguida, estabeleça conexão com a instância. Agora você pode recuperar e analisar o despejo de memória.

Para enviar uma interrupção de diagnóstico usando a API

Use a operação InstanceAction, informando o valor SENDDIAGNOSTICINTERRUPT como ação a ser executada.

Analisando um Despejo de Memória

O despejo de memória é salvo localmente no sistema operacional da instância.

  • Instâncias Linux: O local padrão no qual o dump de memória é salvo depende do sistema operacional.

    • Oracle Linux 8: Salvo em /var/oled/crash.
    • Oracle Linux 7: Para imagens da plataforma lançadas em março de 2021 ou mais recente, salvas em /var/crash. Para imagens de plataforma mais antigas, salvas em /var/oled/crash.
    • Outros sistemas operacionais Linux e semelhantes a UNIX: Salvo em /var/crash/.

    Para alterar o local, modifique o arquivo /etc/kdump.conf.

  • Instâncias do Windows: O dump de memória é salvo em %SystemRoot%memory.dmp. Na maioria dos sistemas Windows, é C:\Windows\memory.dmp.

Para analisar o dump de pane, use uma ferramenta de terceiros, como o utilitário crash nas instâncias Linux ou WinDbg nas instâncias do Windows.