Enviando uma Interrupção de Diagnóstico
Você pode enviar uma interrupção de diagnóstico para diagnosticar e solucionar um problema de instância de máquina virtual (VM) do serviço Compute que não está responsiva ou não está acessível.
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.
Para obter mais informações sobre a solução de 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 instruções que envolvem volume-family
e virtual-network-family
.
Antes de Começar
- O sistema operacional da instância deve ser configurado para gerar um arquivo de despejo de memória.
- A instância deve estar no estado Em Execução. Para obter mais informações, consulte Interrompendo, Iniciando ou Reiniciando uma Instância.
- Não há ações em andamento que afetem a instância, como volumes em blocos ou VNICs secundárias no processo de serem anexadas ou desanexadas.
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
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.
- Imagens liberadas em agosto de 2020 ou depois: A imagem está totalmente configurada para gerar um despejo de memória.
- Imagens anteriores: O kernel de captura de dump está instalado e configurado, mas você deve executar as outras etapas de configuração.
- Imagens liberadas em agosto de 2020 ou depois: A imagem está totalmente configurada para gerar um despejo de memória.
- Imagens anteriores: O kernel de captura de dump está instalado e configurado, mas você deve executar as outras etapas de configuração.
- Estabelecer conexão com a instância.
- Instalar e configurar o kernel de captura de dump:
- Instale
kdump
ekexec
executando o seguinte comando:sudo yum install kexec-tools
- Reserve memória no kernel para salvar o despejo de memória. Faça o seguinte:
- Abra o arquivo
etc/default/grub
em um editor de texto. - Na linha que começa com
GRUB_CMDLINE_LINUX_DEFAULT
, adicione o parâmetrocrashkernel=<memory-to-reserve>
. Por exemplo, para reservar 100 MB, adicionecrashkernel=100M
. - Salve as alterações e feche o arquivo.
- Reconstrua o arquivo GRUB executando o seguinte comando:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
- Abra o arquivo
- Instale
- 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
- 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:
- Estabelecer conexão com a instância.
- Faça download dos Drivers do Oracle VirtIO para Microsoft Windows.
- 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
- Abra o menu de navegação e selecione Computação. Em Compute, selecione Instâncias.
- Clique na instância em que você está interessado.
-
Clique em Mais Ações e, depois, clique 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. -
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 é reiniciado. Não envie várias interrupções de diagnóstico.
- 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 do Linux: O local padrão onde o despejo de memória é salvo depende do sistema operacional.
- Oracle Linux 8: Salvo em
/var/oled/crash
. - Oracle Linux 7: Para imagens de plataforma liberadas em março de 2021 ou depois, salvas em
/var/crash
. Para imagens de plataforma mais antigas, salvas em/var/oled/crash
. - Outros sistemas operacionais semelhantes ao Linux e UNIX: Salvos em
/var/crash/
.
Para alterar o local, modifique o arquivo
/etc/kdump.conf
. - Oracle Linux 8: Salvo em
- Instâncias do Windows: O despejo de memória é salvo em
%SystemRoot%memory.dmp
. Na maioria dos sistemas Windows, éC:\Windows\memory.dmp
.
Para analisar o dump de memória, use uma ferramenta de terceiros, como o utilitário crash nas instâncias do Linux ou o WinDbg nas instâncias do Windows.