Solucionar problemas de um aplicativo de contêiner
A análise dos logs e das configurações de Aplicativos de Contêiner do Azure pode revelar problemas subjacentes quando o aplicativo de contêiner não está se comportando corretamente. Use o guia a seguir para ajudar a localizar e exibir detalhes sobre o aplicativo de contêiner.
Cenários
A tabela a seguir lista os problemas que você pode encontrar ao usar Aplicativos de Contêiner do Azure e as medidas que pode tomar para resolvê-los.
Cenário | Descrição | Ações |
---|---|---|
Todos os cenários | Exibir logs Usar Diagnosticar e resolver problemas |
|
Erro ao implantar nova revisão | Você recebe uma mensagem de erro ao tentar implantar uma nova revisão. | Verificar se Aplicativos de Contêiner pode efetuar pull da sua imagem de contêiner |
O provisionamento demora muito | A nova revisão implantada tem um Status de provisionamento do Provisionamento e um Status de execução do Processamento indefinidamente. | Verificar se as investigações de integridade estão configuradas corretamente |
A revisão está degradada | Uma nova revisão leva mais de 10 minutos para ser provisionada. Finalmente tem um Status de Provisionamento de Provisionado, mas um Status de execução de Degradado. A dica de ferramenta do Status de execução diz Details: Deployment Progress Deadline Exceeded. 0/1 replicas ready. |
Verificar se as investigações de integridade estão configuradas corretamente |
Solicitações para pontos de extremidade falham | O ponto de extremidade do aplicativo de contêiner não responde às solicitações. | Examinar a configuração de entrada |
As solicitações retornam o status 403 | O ponto de extremidade do aplicativo de contêiner responde às solicitações com o erro HTTP 403 (acesso negado). | Verificar se a configuração da rede está correta |
Não são as respostas esperadas | O ponto de extremidade do aplicativo de contêiner responde às solicitações, mas as respostas não são as esperadas. | Verificar se o tráfego é roteado para a revisão correta Verificar se você está usando marcas exclusivas ao implantar imagens no registro de contêiner |
Erro de parâmetros ausentes | Você recebe mensagens de erro sobre parâmetros ausentes ao executar os comandos az containerapp na CLI do Azure ou ao executar cmdlets do módulo Az.App no Azure PowerShell. |
Verificar se a versão mais recente da extensão dos Aplicativos de Contêiner do Azure está instalada |
Recursos de visualização não disponíveis | Os recursos de visualização não estão disponíveis quando você executa os comandos az containerapp na CLI do Azure. |
Verificar se a extensão dos Aplicativos de Contêiner do Azure permite recursos de visualização |
Excluir o seu aplicativo ou ambiente não funciona | Esse problema geralmente é acompanhado por uma mensagem como provisioningState: ScheduledForDelete. | Excluir manualmente a VNet associada |
Exibir logs
Uma das primeiras etapas a serem tomadas ao procurar problemas no aplicativo de contêiner é ver as mensagens de log. Você pode ver a saída dos logs do console e do sistema. O log do console do aplicativo de contêiner captura os fluxos de stdout
e stderr
do aplicativo. Aplicativos de Contêiner gera logs do sistema para eventos de nível de serviço.
- Entre no portal do Azure.
- Na barra Pesquisar, insira o nome do aplicativo de contêiner.
- Na seção Recursos, selecione o nome do aplicativo de contêiner.
- Na barra de navegação, expanda Monitoramento e selecione Stream de log (não Logs).
- Se a página Stream de log exibir Esta revisão é dimensionada para zero., selecione o botão Ir para Gerenciamento de Revisão. Implante uma nova revisão dimensionada para uma contagem mínima de réplicas de 1. Para saber mais, confira Dimensionamento em Aplicativos de Contêiner do Azure.
- Na página Stream de log, defina Logs como Console ou Sistema.
Usar a ferramenta de diagnóstico e solução de problemas
Você pode usar a ferramenta diagnosticar e resolver problemas para encontrar problemas com a integridade, a configuração e o desempenho do aplicativo de contêiner.
- Entre no portal do Azure.
- Na barra Pesquisar, insira o nome do aplicativo de contêiner.
- Na seção Recursos, selecione o nome do aplicativo de contêiner.
- Na barra de navegação, selecione Diagnosticar e resolver problemas.
- Na página Diagnosticar e resolver problemas, selecione uma das Categorias de solução de problemas.
- Selecione uma das categorias na barra de navegação para encontrar maneiras de corrigir problemas com seu aplicativo de contêiner.
Verificar a acessibilidade da imagem de contêiner
Se você receber uma mensagem de erro ao tentar implantar uma nova revisão, verifique se Aplicativos de Contêiner consegue efetuar pull da imagem do contêiner.
- Verifique se o firewall do ambiente de contêiner não está bloqueando o acesso ao registro de contêiner. Para obter mais informações, confira Controlar o tráfego de saída com rotas definidas pelo usuário.
- Se a VNet existente usar um servidor DNS personalizado em vez do servidor DNS padrão fornecido pelo Azure, verifique se o servidor DNS está configurado corretamente e se a pesquisa DNS do registro de contêiner não falhará. Para obter mais informações, confira DNS.
- Se você usou o recurso de build de nuvem de Aplicativos de Contêiner para gerar uma imagem de contêiner (veja Caminho de código para nuvem para Aplicativos de Contêiner do Azure, sua imagem não pode ser acessada publicamente; portanto, esta seção não se aplica.
Para um contêiner do Docker executado como um aplicativo de console, verifique se sua imagem está acessível publicamente executando o comando a seguir em um prompt de comando com privilégios elevados. Antes de executar o comando, substitua os espaços reservados entre <>
pelos seus valores.
docker run --rm <YOUR_CONTAINER_IMAGE>
Verifique se o Docker executa a imagem sem relatar erros. Se você estiver executando o Docker no Windows, verifique se o Mecanismo Docker está em execução.
O erro a seguir aparece quando a imagem não está acessível publicamente.
docker: Error response from daemon: pull access denied for <YOUR_CONTAINER_IMAGE>, repository does not exist or may require 'docker login': denied: requested access to the resource is denied. See 'docker run --help'.
Para obter mais informações, consulteRede no ambiente de Aplicativos de Contêiner do Azure.
Examinar a configuração de entrada
As configurações de entrada do aplicativo de contêiner são impostas por um conjunto de regras que controlam o roteamento de tráfego externo e interno para o aplicativo de contêiner. Se você não conseguir se conectar ao seu aplicativo de contêiner, examine as configurações de entrada para verificar se não estão bloqueando solicitações.
- Entre no portal do Azure.
- Na barra Pesquisar, insira o nome do aplicativo de contêiner.
- Em Recursos, selecione o nome do aplicativo de contêiner.
- Na barra de navegação, expanda Configurações e selecione Entrada.
Problema | Ação |
---|---|
A entrada está habilitada? | Verifique se a caixa de seleção Habilitada está marcada. |
Deseja permitir entrada externa? | Verifique se Tráfego de Entrada está definido como Aceitar tráfego de qualquer lugar. Se o aplicativo de contêiner não escutar o tráfego HTTP, defina Tráfego de Entrada como Ambiente limitado a Aplicativos de Contêiner. |
O cliente usa HTTP ou TCP para acessar seu aplicativo de contêiner? | Verifique se Tipo de entrada tem o protocolo correto definido (HTTP ou TCP). |
O cliente dá suporte a mTLS? | Se o cliente dá suporte a mTLS, o Modo de certificado do cliente deve ser definido como Exigir. Para obter mais informações, confira Configurar autentificação de certificados de cliente. |
O cliente usa HTTP/1 ou HTTP/2? | Verifique se Transporte tem a versão correta de HTTP definida (HTTP/1 ou HTTP/2). |
A porta de destino está definida corretamente? | Verifique se a Porta de destino está definida como a mesma porta em que seu aplicativo de contêiner está escutando ou a mesma porta exposta pelo Dockerfile do aplicativo de contêiner. |
O endereço IP do cliente foi negado? | Se o Modo de restrições de segurança IP não estiver definido como Permitir todo o tráfego, verifique se o cliente não tem um endereço IP negado. |
Para obter mais informações, consulte Entrada em Aplicativos de Contêiner do Azure.
Verificar configuração de rede
Os Resolvedores recursivos do Azure usam o endereço IP 168.63.129.16
para resolver solicitações.
- Se a VNet usar um servidor DNS personalizado em vez do servidor DNS padrão fornecido pelo Azure, configure-o para encaminhar as consultas DNS não resolvidas para
168.63.129.16
. - Ao configurar seu NSG ou firewall, não bloqueie o endereço
168.63.129.16
.
Para obter mais informações, consulteRede no ambiente de Aplicativos de Contêiner do Azure.
Verificar configuração das investigações de integridade
Para todos os tipos de investigação de integridade (atividade, preparação e inicialização) que usam TCP como transporte, verifique se os números da porta correspondem à porta de destino de entrada configurada para o aplicativo de contêiner.
- Entre no portal do Azure.
- Na barra Pesquisar, insira o nome do aplicativo de contêiner.
- Em Recursos, selecione o nome do aplicativo de contêiner.
- Na barra de navegação, expanda Aplicativo e selecione Contêineres.
- Na página Contêineres, selecione Investigações de integridade.
- Expanda Investigações de atividade, Investigações de preparação e Investigações de inicialização.
- Para cada investigação, verifique se o valor de Porta está correto.
Atualize os valores de Porta como segue:
- Selecione Editar e implantar para criar uma nova revisão.
- Na página Criar e implantar nova revisão, marque a caixa de seleção ao lado da imagem do contêiner e selecione Editar.
- Na janela Editar um contêiner, selecione Investigações de integridade.
- Expanda Investigações de atividade, Investigações de preparação e Investigações de inicialização.
- Para cada investigação, edite o valor de Porta.
- Selecione o botão Salvar.
- Na página Criar e implantar nova revisão, selecione o botão Criar.
Configurar tempo de inicialização estendido nas investigações de integridade
Se a entrada estiver habilitada, as investigações padrão a seguir serão adicionadas automaticamente ao contêiner de aplicativo principal se não houver uma definição para cada tipo.
Aqui estão os valores padrão de cada tipo de investigação.
Propriedade | Inicialização | Preparação | Atividade |
---|---|---|---|
Protocolo | TCP | TCP | TCP |
Porta | Porta de destino de entrada | Porta de destino de entrada | Porta de destino de entrada |
Timeout | 3 Segundos | 5 segundos | N/D |
Período | 1 segundo | 5 segundos | N/D |
Atraso inicial | 1 segundo | 3 Segundos | N/D |
Limite de sucesso | 1 | 1 | N/D |
Limite de falha | 240 | 48 | N/D |
Se o aplicativo de contêiner levar um longo período para iniciar (o que é comum em Java), talvez seja necessário personalizar a investigação de atividade e preparação da propriedade Segundos de atraso iniciais adequadamente. Você pode Exibir os logs para ver a hora de inicialização típica do aplicativo de contêiner.
- Entre no portal do Azure.
- Na barra Pesquisar, insira o nome do aplicativo de contêiner.
- Em Recursos, selecione o nome do aplicativo de contêiner.
- Na barra de navegação, expanda Aplicativo e selecione Contêineres.
- Na página Contêineres, selecione Investigações de integridade.
- Selecione Editar e implantar para criar uma nova revisão.
- Na página Criar e implantar nova revisão, marque a caixa de seleção ao lado da imagem do contêiner e selecione Editar.
- Na janela Editar um contêiner, selecione Investigações de integridade.
- Expanda Investigações de atividade.
- Se Habilitar investigações de atividade estiver selecionado, aumente o valor de Segundos de atraso iniciais.
- Expanda Investigações de preparação.
- Se Habilitar investigações de preparação estiver selecionado, aumente o valor de Segundos de atraso iniciais.
- Selecione Salvar.
- Na página Criar e implantar nova revisão, selecione o botão Criar.
Em seguida, você pode Exibir os logs para ver se o aplicativo de contêiner foi iniciado.
Para obter mais informações, confira Usar investigações de integridade.
Verificar se o tráfego é roteado para a revisão correta
Se o aplicativo de contêiner não se comportar conforme o esperado, pode ser que as solicitações estejam sendo roteadas para uma revisão desatualizada.
- Entre no portal do Azure.
- Na barra Pesquisar, insira o nome do aplicativo de contêiner.
- Em Recursos, selecione o nome do aplicativo de contêiner.
- Na barra de navegação, expanda Aplicativo e selecione Revisões.
Se o Modo de Revisão estiver definido como Single
, todo o tráfego será roteado para a revisão mais recente por padrão. A guia Revisões ativas deve listar apenas uma revisão, com Tráfego com um valor de 100%
.
Se o Modo de Revisão estiver definido como Multiple
, verifique se você não está roteando o tráfego para revisões desatualizadas.
Para obter mais informações sobre como configurar a divisão de tráfego, consulte Divisão de tráfego em Aplicativos de Contêiner do Azure.
Verificar se a versão mais recente da extensão dos Aplicativos de Contêiner do Azure está instalada
Se você receber erros sobre parâmetros ausentes ao executar comandos az containerapp
na CLI do Azure ou cmdlets do módulo Az.App
no Azure PowerShell, certifique-se de ter a versão mais recente da extensão dos Aplicativos de Contêiner do Azure instalada.
az extension add --name containerapp --upgrade
Verificar se a extensão dos Aplicativos de Contêiner do Azure permite recursos de visualização
Se recursos de visualização não estiverem disponíveis ao executar os comandos az containerapp
na CLI do Azure, habilite-os na extensão dos Aplicativos de Contêiner do Azure.
az extension add --name containerapp --upgrade --allow-preview true
Excluir manualmente a VNet que está sendo usada pelo ambiente de Aplicativos de Contêiner do Azure
Se você receber a mensagem provisioningState: ScheduledForDelete, mas o seu ambiente não for realmente excluído, exclua a sua VNet associada manualmente.
Identifique a VNet que está sendo usada pelo ambiente que você está tentando excluir. Substitua os <ESPAÇOS RESERVADOS> pelos seus valores.
az containerapp env show --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT>
Na saída, procure
infrastructureSubnetId
e anote a ID da VNet. Um exemplo de ID de VNet évNet::myVNet.id
.Exclua a VNet manualmente:
az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
Exclua o ambiente dos Aplicativos de Contêiner do Azure:
az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes