Um coredump é um arquivo que contém o estado da memória de um aplicativo no momento de uma falha ou encerramento inesperado. O sistema operacional gera esse arquivo para permitir depuração e análise posteriores. Este tópico descreve como ativar o coredump em uma instância do Elastic Container Instance (ECI). Isso permite analisar os arquivos core gerados por encerramentos inesperados de contêineres, identificar a causa raiz do problema e corrigir o aplicativo.
Informações básicas
No Linux, quando um aplicativo falha ou é encerrado inesperadamente, o sistema operacional registra o estado da memória do aplicativo e o salva em um arquivo. Esse processo é conhecido como coredump. Posteriormente, analise o arquivo core para identificar a causa do problema.
A figura a seguir mostra os sinais do Linux que acionam um coredump. Para esses sinais, a ação padrão é Core.
Para obter mais informações, consulte arquivo de coredump.
Visão geral
Por padrão, o coredump fica desativado em uma instância ECI para evitar uso excessivo de disco, o que poderia causar interrupções no service. Ative o coredump usando um dos seguintes métodos:
-
Método 1: Ativar uma tarefa de O&M de coredump
Após a ativação manual do coredump, o sistema cria uma tarefa de O&M. Quando um contêiner é encerrado anormalmente ou sai, o arquivo core gerado é salvo automaticamente no OSS.
-
Método 2: Personalizar o caminho de salvamento dos arquivos core
Armazene arquivos core em armazenamento externo especificando um caminho de salvamento personalizado. Após definir o caminho, o coredump é ativado automaticamente. Quando um contêiner falha ou é encerrado inesperadamente, o arquivo core resultante é salvo no caminho especificado.
-
O Método 1 é fácil de usar, mas possui limitações de tempo e região. É adequado para depuração e diagnósticos temporários.
A tarefa de O&M gerada é única. Assim que um arquivo core é capturado com sucesso, o coredump é desativado automaticamente. A tarefa de O&M tem validade de 12 horas e expira se não for acionada nesse período.
Este método não é compatível nas seguintes regiões: China (Ulanqab), China (Heyuan), China (Guangzhou), China (Nanjing), Philippines (Manila), South Korea (Seoul) e Thailand (Bangkok).
O Método 2 exige a configuração de armazenamento externo. Se seu aplicativo for instável, use este método para garantir a captura dos arquivos core. No entanto, se um aplicativo com falha reiniciar repetidamente, um grande volume de arquivos core poderá ser gerado.
Método 1: Ativar uma tarefa de O&M de coredump
Console
Faça logon no console do Elastic Container Instance.
-
Ative o coredump para a instância ECI.
Clique em ID da instância desejada para abrir a página de detalhes da instância.
-
Clique em aba O&M, selecione a aba Coredump e clique em Enable.
Após ativar o coredump, o sistema gera uma tarefa de O&M. Se o coredump ainda não tiver sido acionado, o status da tarefa será Pending.
-
Acione um coredump.
Conecte-se à instância ECI. No contêiner, execute o comando
sleep 100e pressioneCtrl+\para acionar um coredump. O arquivo core gerado é salvo automaticamente no OSS.# sleep 100 ^\Quit (core dumped) -
Baixe o arquivo core.
Depois que o coredump é acionado e o arquivo core é gerado, o status da tarefa de O&M muda para Successful. Clique em Download na coluna Result para baixar o arquivo core.
NotaSe o download não iniciar, verifique as configurações de permissão do site no seu navegador.
API
-
Ative o coredump para a instância ECI.
Chame a operação CreateInstanceOpsTask para criar uma tarefa de O&M. Especifique a instância ECI desejada, defina o parâmetro OpsType como
coredumpe defina o parâmetro OpsValue comoenable. Para obter mais informações, consulte CreateInstanceOpsTask.NotaAo especificar a instância ECI, certifique-se de que o parâmetro CorePattern não foi definido durante a criação da instância.
-
Acione um coredump.
Conecte-se à instância ECI. No contêiner, execute o comando
sleep 100e pressioneCtrl+\para acionar um coredump. O arquivo core gerado é salvo automaticamente no OSS. -
Baixe o arquivo core.
Chame a operação DescribeInstanceOpsRecords para visualizar o resultado da tarefa de O&M. Na resposta, o campo ResultContent contém a url do arquivo core no OSS. Acesse a url para baixar o arquivo core.
Método 2: Personalizar o caminho de salvamento
Os arquivos core são normalmente usados para análise offline. Portanto, recomendamos salvá-los em armazenamento externo em vez de um caminho local dentro do contêiner. Isso evita que os arquivos core sejam perdidos quando o contêiner é encerrado. O ECI permite especificar um caminho de salvamento personalizado para arquivos core. Após definir o caminho, o coredump é ativado automaticamente.
Ao chamar a operação CreateContainerGroup para criar uma instância ECI, passe o parâmetro CorePattern para definir o caminho de salvamento dos arquivos core. A tabela a seguir descreve os parâmetros relacionados. Para obter mais informações, consulte CreateContainerGroup.
Configure os parâmetros de volume de acordo com o tipo de volume utilizado.
|
CorePattern |
String |
/data/dump-a/core |
Caminho de salvamento para arquivos core. Este caminho deve estar dentro de um volume montado. Importante
O caminho não pode começar com o caractere pipe ( |
|
Volume.N.Name |
String |
volume1 |
Nome do volume. |
|
Volume.N.Type |
String |
NFSVolume |
Tipo do volume. Neste exemplo, NFSVolume é utilizado. |
|
Volume.N.NFSVolume.Path |
String |
/dump |
Caminho do volume NFS. |
|
Volume.N.NFSVolume.Server |
String |
143b24****-gfn3.cn-beijing.nas.aliyuncs.com |
Endereço do servidor NFS. Se você usar o Alibaba Cloud File Storage NAS, este é o endereço do ponto de montagem do sistema de arquivos NAS. |
|
Container.N.VolumeMount.N.Name |
String |
volume1 |
Nome do volume a ser montado. Deve corresponder ao valor de Volume.N.Name. |
|
Container.N.VolumeMount.N.MountPath |
String |
/data/dump-a/ |
Caminho de montagem. O conteúdo do volume substitui qualquer conteúdo existente no caminho de montagem dentro do contêiner. Certifique-se de que o caminho esteja correto. |
O exemplo a seguir mostra como usar um sistema de arquivos do Alibaba Cloud File Storage NAS como armazenamento externo:
-
Crie uma instância ECI chamada instância A, monte o sistema de arquivos NAS e defina o caminho de salvamento para arquivos core.
Chame a operação CreateContainerGroup para criar a instância A. Defina os seguintes parâmetros para montar o diretório
/dump/do sistema de arquivos NAS em/data/dump-a/no contêiner e defina o caminho de salvamento do arquivo core como/data/dump-a/core.ContainerGroupName=test-a SecurityGroupId=sg-bp1daxpbz9lzpvvc**** VSwitchId=vsw-bp1gds63lmlm7ib05**** # Declare a volume Volume.1.Name=volume1 Volume.1.Type=NFSVolume Volume.1.NFSVolume.Path=/dump/ Volume.1.NFSVolume.Server=143b24****-gfn3.cn-beijing.nas.aliyuncs.com # Mount the volume to the container Container.1.Name=nginx Container.1.Image=registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2 Container.1.VolumeMount.1.Name=volume1 Container.1.VolumeMount.1.MountPath=/data/dump-a/ # Set the save path for core files CorePattern=/data/dump-a/core -
Acione um coredump em qualquer diretório no contêiner da instância A.
No contêiner, execute o comando
sleep 100e pressioneCtrl+\para acionar um coredump. O arquivo core é salvo em/data/dump-a/coreno contêiner.# ls bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var # cd /data/dump-a/ # ls # sleep 100 ^\Quit (core dumped) # ls core.17 Libere a instância A.
-
Monte o mesmo sistema de arquivos NAS em outra instância ECI chamada instância B.
Chame a operação CreateContainerGroup para criar a instância B. Passe os seguintes parâmetros para montar o mesmo diretório
/dump/do sistema de arquivos NAS no diretório/data/dump-b/do contêiner.ContainerGroupName=test-nas-b SecurityGroupId=sg-bp1daxpbz9lzpvvc**** VSwitchId=vsw-bp1gds63lmlm7ib05**** # Declare a volume Volume.1.Name=volume1 Volume.1.Type=NFSVolume Volume.1.NFSVolume.Path=/dump/ Volume.1.NFSVolume.Server=143b24****-gfn3.cn-beijing.nas.aliyuncs.com # Mount the volume to the container Container.1.Name=nginx Container.1.Image=registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2 Container.1.VolumeMount.1.Name=volume1 Container.1.VolumeMount.1.MountPath=/data/dump-b/ -
Visualize o arquivo core no contêiner da instância B.
Visualize o arquivo core no diretório
/data/dump-bdo contêiner. Como o arquivo core foi salvo em armazenamento externo, ele não é perdido após a liberação da instância A e permanece disponível para análise.# ls bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var # cd /data/dump-b/ # ls core.17
Perguntas frequentes
O download não inicia quando clico em Download no console. O que devo fazer?
Se o download não iniciar, verifique as configurações de permissão do site no seu navegador. Por exemplo, no Chrome, siga estas etapas para conceder a permissão necessária:
Clique em ícone de cadeado à esquerda da barra de endereços do navegador Chrome e, no painel pop-up, clique em Site settings.
Na lista de permissões do site, localize Insecure content e defina sua permissão como Allow.