Solucionar problemas comuns do Azure Spring Apps
Observação
Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.
O plano consumo e dedicado Standard será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.
Este artigo se aplica a:✅ Básico/Standard ✅ Enterprise
Este artigo fornece instruções para solucionar problemas de desenvolvimento no Azure Spring Apps. Para obter mais informações, consulte Perguntas frequentes sobre Aplicativos Spring do Azure.
Disponibilidade, desempenho e problemas de aplicativos
Não consigo iniciar meu aplicativo
Quando o aplicativo não pode ser iniciado, você pode descobrir que seu ponto de extremidade não pode ser conectado ou retorna um erro 502 após algumas tentativas.
Para solucionar problemas, exporte os logs para o Azure Log Analytics. A tabela para os logs de aplicativo Spring é denominada AppPlatformLogsforSpring. Para saber mais, consulte Analisar logs e métricas com configurações de diagnóstico.
A seguinte mensagem de erro pode aparecer em seus logs: org.springframework.context.ApplicationContextException: Unable to start web server
A mensagem indica um dos dois prováveis problemas:
- Um dos grãos ou uma de suas dependências está ausente.
- Uma das propriedades do Bean está ausente ou é inválida. Nesse caso, "java.lang.IllegalArgumentException" é exibido.
As associações de serviço também podem causar falhas de inicialização do aplicativo. Para consultar os logs, use palavras-chave relacionadas aos serviços associados. Por exemplo, vamos supor que seu aplicativo tenha uma associação a uma instância do MySQL definida como hora do sistema local. Se o aplicativo falhar ao iniciar, a seguinte mensagem de erro poderá aparecer no log:
"java.sql.SQLException: o valor de fuso horário do servidor “Tempo Universal Coordenado” não é reconhecido ou representa mais de um fuso horário."
Para corrigir esse erro, acesse o server parameters
de sua instância do MySQL e altere o valor de time_zone
para SYSTEM to +0:00.
Meu aplicativo falha ou gera um erro inesperado
Ao depurar falhas de aplicativo, comece verificando o status da execução e o status de descoberta do aplicativo. Para fazer isso, acesse Aplicativos no portal do Azure para certificar-se de que todos os aplicativos tenham o status Em execução e ATIVO.
Se o status for Em execução mas o status de descoberta não for ATIVO, acesse a seção “Meu aplicativo não pode ser registrado”.
Se o status de descoberta for ATIVO, acesse Métricas para verificar a integridade do aplicativo. Inspecione as seguintes métricas:
tomcat.global.error
:Todas as exceções de aplicativo Spring são contadas aqui. Se este número for muito alto, acesse o Azure Log Analytics para inspecionar seus logs de aplicativo.
jvm.memory.max
:a quantidade máxima de memória disponível para o aplicativo. O valor pode ser indefinido ou pode mudar ao longo do tempo, se for definido. Se estiver definido, a quantidade de memória usada e comprometida será sempre menor ou igual ao máximo. No entanto, uma alocação de memória pode falhar com uma mensagem
OutOfMemoryError
se a alocação tentar aumentar a memória usada de maneira que usada > comprometida, mesmo se usada <= máx. ainda for verdadeiro. Nesse caso, tente aumentar o tamanho de heap máximo usando o parâmetro-Xmx
.jvm.memory.used
:A quantidade de memória em bytes que o aplicativo usa atualmente. Para um aplicativo Java de carregamento normal, essa série de métricas forma um padrão de sawtooth, em que o uso de memória aumenta e diminui em pequenos incrementos de forma constante e então cai subitamente. Esse padrão se repete. Essa série de métricas ocorre devido à coleta de lixo dentro da máquina virtual Java, em que as ações de coleta representam quedas no padrão sawtooth.
Essa métrica é importante para ajudar a identificar problemas de memória, como:
- Uma explosão de memória no início.
- A alocação de memória de sobretensão para um caminho lógico específico.
- Vazamentos de memória gradual.
Para saber mais, consulte Métricas.
Observação
Essas métricas estão disponíveis apenas para aplicativos do Spring Boot. Para habilitar essas métricas, adicione a dependência
spring-boot-starter-actuator
. Para obter mais informações, consulte a seção Adicionar dependência do acionador de Gerenciar e monitorar com o Spring Boot Actuator.Se o aplicativo falhar ao iniciar, verifique se o aplicativo tem parâmetros jvm válidos. Se a memória jvm estiver definida com um valor muito alto, a seguinte mensagem de erro poderá aparecer em seus logs:
"a memória necessária 2728741K é maior que os 2000M disponíveis para alocação"
Para saber mais sobre o Log Analytics, confira Introdução ao Log Analytics no Azure Monitor.
Meu aplicativo experimenta alto uso da CPU ou alta utilização de memória
Se seu aplicativo apresentar alta utilização de CPU ou memória, uma das duas coisas será verdadeira:
- Todas as instâncias de aplicativo apresentam alto uso de CPU ou de memória.
- Algumas das instâncias de aplicativo apresentam alto uso de CPU ou de memória.
Para verificar qual situação se aplica, use as seguintes etapas:
- Vá para Métricas e selecione Percentual de Uso da CPU de Serviço ouMemória de Serviço Usada.
- Adicione um filtro App= para especificar qual aplicativo você deseja monitorar.
- Divida as métricas por Instância.
Se todas as instâncias estiverem apresentando um alto uso de CPU ou memória, você precisará escalar horizontalmente o aplicativo ou aumentar o uso de CPU ou memória. Para obter mais informações, consulte Tutorial: Dimensionar um aplicativo no Azure Spring Apps.
Se algumas instâncias estiverem apresentando alto uso de CPU ou memória, verifique o status da instância e seu status de descoberta.
Para obter mais informações, consulte Métricas para o Azure Spring Apps.
Se todas as instâncias estiverem em execução, vá para o Azure Log Analytics para consultar os logs de aplicativo e examine sua lógica de código. Essa revisão ajuda você a ver se alguma delas pode afetar o particionamento de escala. Para obter mais informações, consulte Analisar logs e métricas com configurações de diagnóstico.
Para saber mais sobre o Log Analytics, confira Introdução ao Log Analytics no Azure Monitor. Consulte os logs usando a linguagem de consulta Kusto.
Lista de verificação para implantar seu aplicativo Spring ao Azure Spring Apps
Antes de carregar seu aplicativo, verifique se ele atende aos seguintes critérios:
- O aplicativo pode ser executado localmente com a versão do Java Runtime.
- A configuração de ambiente (CPU/RAM/Instâncias) atende ao requisito mínimo definido pelo provedor de aplicativos.
- Os itens de configuração têm seus valores esperados. Para saber mais, confira Configurar uma instância do Spring Cloud Config Server para seu serviço. Para o plano Enterprise, consulte Usar o Serviço de Configuração do Aplicativo.
- As variáveis de ambiente têm seus valores esperados.
- Os parâmetros de JVM têm seus valores esperados.
- É recomendável desabilitar ou remover o Servidor de Configuração e o serviço Registro de Serviço do Spring do pacote de aplicativos.
- Se algum recurso do Azure for ser associado via Associação de serviço, verifique se os recursos de destino estão ativos e em execução.
Configuração e gerenciamento
Encontrei um problema ao criar uma instância do serviço do Azure Spring Apps
Quando você configura uma instância do serviço do Azure Spring Apps usando o portal do Azure, o Azure Spring Apps executa a validação para você.
Mas se você tentar configurar a instância de serviço de Aplicativos Spring do Azure usando a CLI do Azure ou o modelo do Azure Resource Manager, verifique se você atende às seguintes condições:
- A assinatura está ativa.
- O serviço Aplicativos Spring do Azure está disponível na região que você está usando. Para obter mais informações, consulte Perguntas frequentes dos Aplicativos Spring do Azure.
- O grupo de recursos da instância já foi criado.
- O nome do recurso está em conformidade com a regra de nomenclatura. O nome deve conter apenas letras minúsculas, números e hifens. O primeiro caractere deve ser uma letra. O último caractere deve ser uma letra ou um número. O valor precisa conter de 2 a 32 caracteres.
Se você quiser configurar a instância do serviço do Azure Spring Apps usando o modelo do Resource Manager, primeiro consulte Entender a estrutura e a sintaxe dos modelos do Azure Resource Manager.
O nome da instância de serviço de Aplicativos Spring do Azure é usado para solicitar um nome de subdomínio em azuremicroservices.io
. Portanto, a configuração falhará se o nome entrar em conflito com um existente. Você pode encontrar mais detalhes nos logs de atividade.
Não consigo implantar um aplicativo .NET Core
Você não pode carregar um arquivo .zip para um aplicativo .NET Core Steeltoe usando o portal do Azure ou o modelo do Resource Manager.
Quando você implantar seu pacote de aplicativos usando a CLI do Azure, ela será sondada periodicamente no andamento da implantação e, no final, ela mostra o resultado da implantação.
Verifique se o aplicativo está empacotado no formato .zip correto. Se não for empacotado corretamente, o processo deixará de responder ou você receberá uma mensagem de erro.
Não consigo implantar um pacote JAR
Não é possível carregar o pacote de origem do arquivo Java (JAR) usando o portal do Azure ou o modelo do Resource Manager.
Quando você implantar seu pacote de aplicativos usando a CLI do Azure, ela será sondada periodicamente no andamento da implantação e, no final, ela mostra o resultado da implantação.
Se a sondagem for interrompida, você ainda poderá usar o seguinte comando para buscar os logs de implantação:
az spring app show-deploy-log --name <app-name>
Verifique se o aplicativo está empacotado no formato JAR executável correto. Se não for empacotado corretamente, você receberá uma mensagem de erro semelhante ao exemplo a seguir: Error: Invalid or corrupt jarfile /jar/11111111-1111-1111-1111-111111111111
Não consigo implantar um pacote de origem
Não é possível carregar o pacote JAR de origem usando o portal do Azure ou o modelo do Resource Manager.
Quando você implantar seu pacote de aplicativos usando a CLI do Azure, ela será sondada periodicamente no andamento da implantação e, no final, ela mostra o resultado da implantação.
Se a sondagem for interrompida, você ainda poderá usar o seguinte comando para buscar os logs de implantação e build:
az spring app show-deploy-log --name <app-name>
No entanto, uma instância de serviço de Aplicativos Spring do Azure pode disparar apenas um trabalho de build para um pacote de origem ao mesmo tempo. Para obter mais informações, confira Implantar um aplicativo e Configurar um ambiente de preparo no Azure Spring Apps.
Meu aplicativo não pode ser registrado
Na maioria dos casos, essa situação ocorre quando as Dependências necessárias e a Descoberta de serviço não estão configuradas corretamente em seu arquivo de Modelo de Objeto do Projeto (POM). Depois de configurado, o ponto de extremidade do servidor do registro de serviço interno é injetado como uma variável de ambiente com seu aplicativo. Em seguida, os aplicativos podem se registrar por conta própria no servidor do Registro de Serviço e descobrir outros microsserviços dependentes.
Aguarde pelo menos dois minutos antes que uma instância recém-registrada comece a receber tráfego.
Se você estiver migrando de uma solução baseada no Spring Cloud existente para o Azure, remova ou desabilite as instâncias do Registro de Serviço e do Servidor de Configuração para evitar conflitos com as instâncias gerenciadas fornecidas por Aplicativos Spring do Azure.
Você também pode verificar os logs do cliente do Registro de Serviço no Azure Log Analytics. Para obter mais informações, consulte Analisar logs e métricas com configurações de diagnóstico
Para saber mais sobre o Log Analytics, confira Introdução ao Log Analytics no Azure Monitor. Consulte os logs usando a linguagem de consulta Kusto.
Desejo inspecionar as variáveis de ambiente de meu aplicativo
As variáveis de ambiente informam a estrutura do Azure Spring Apps, garantindo que o Azure entenda onde e como configurar os serviços que compõem seu aplicativo. Verificar se as variáveis de ambiente estão corretas é uma primeira etapa necessária para solucionar problemas potenciais. Use o ponto de extremidade do Atuador do Spring Boot para examinar as variáveis de ambiente.
Aviso
Esse procedimento expõe as variáveis de ambiente usando o ponto de extremidade de teste. Não prossiga se o ponto de extremidade de teste estiver publicamente acessível ou se você tiver atribuído um nome de domínio ao aplicativo.
Ir para
https://<your-application-test-endpoint>/actuator/health
.Uma resposta semelhante a
{"status":"UP"}
indica que o ponto de extremidade foi habilitado. Se a resposta for negativa, inclua a seguinte dependência em seu arquivo POM.xml:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
Com o ponto de extremidade do acionador do Spring Boot habilitado, vá para a portal do Azure e procure a página de configuração do seu aplicativo. Adicione uma variável de ambiente com o nome
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE
e o valor*
.Reinicie o aplicativo.
Vá até
https://<your-application-test-endpoint>/actuator/env
e inspecione a resposta. Ele deverá ser parecido com:{ "activeProfiles": [], "propertySources": {, "name": "server.ports", "properties": { "local.server.port": { "value": 1025 } } } }
Observe o nó filho chamado systemEnvironment
. Esse nó contém as variáveis de ambiente do aplicativo.
Importante
Lembre-se de reverter a exposição das variáveis de ambiente antes de tornar o aplicativo acessível ao público. Acesse o portal do Azure, procure a página de configuração do aplicativo e exclua esta variável de ambiente: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE
.
Não consigo encontrar métricas ou logs para meu aplicativo
Vá para Aplicativos para certificar-se de que os status do aplicativo sejam Em execução e ATIVO.
Verifique se o JMX está habilitado no pacote de aplicativos. Esse recurso pode ser habilitado com a propriedade de configuração spring.jmx.enabled=true
.
Verifique se a dependência spring-boot-actuator
está habilitada no pacote de aplicativos e se ela foi inicializada com êxito.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Se os logs do aplicativo puderem ser arquivados em uma conta de armazenamento, mas não enviados para o Azure Log Analytics, verifique se você configurou seu espaço de trabalho corretamente. Para obter mais informações, consulte Criar um workspace do Log Analytics. Além disso, lembre-se de que o plano Básico não fornece um SLA (Contrato de Nível de Serviço). Para mais informações, consulte Contratos de Nível de Serviço (SLA) para Serviços Online.
Plano Enterprise
Erro 112039: falha ao efetuar a compra no Azure Marketplace
Falha na criação de uma instância do plano Enterprise de Aplicativos Spring do Azure com o código de erro “112039”. Para obter mais informações, verifique a mensagem de erro detalhada na lista a seguir:
“Falha ao efetuar a compra no Azure Marketplace porque o RP Microsoft.SaaS não está registrado na assinatura do Azure.”: o plano Enterprise de Aplicativos Spring do Azure compra uma oferta de SaaS do VMware.
Você precisa registrar o provedor de recursos
Microsoft.SaaS
antes de criar a instância Enterprise de Aplicativos Spring do Azure. Consulte como registrar um provedor de recursos.“Falha ao carregar o produto de catálogo vmware-inc.azure-spring-cloud-vmware-tanzu-2 no mercado da assinatura do Azure.”: o endereço da conta de cobrança da sua assinatura do Azure não está na localização com suporte.
Para obter mais informações, confira a seção Nenhum plano disponível para o mercado '<Localização>'.
"Falha ao efetuar a compra no Azure Marketplace devido à verificação de assinatura no contrato legal do Marketplace. Verifique se a assinatura do Azure concordou com os termos de vmware-inc.azure-spring-cloud-vmware-tanzu-2.asa-ent-hr-mtr”: sua assinatura do Azure não assinou os termos da oferta e do plano a serem adquiridos.
Acesse sua assinatura do Azure e execute o seguinte comando da CLI do Azure para concordar com os termos:
az term accept \ --publisher vmware-inc \ --product azure-spring-cloud-vmware-tanzu-2 \ --plan asa-ent-hr-mtr
Se isso não ajudar, entre em contato com a equipe de suporte com as informações a seguir.
AZURE_TENANT_ID
: a ID de locatário do Azure que hospeda a assinatura do AzureAZURE_SUBSCRIPTION_ID
: a ID da assinatura do Azure usada para criar a instância do Azure Spring AppsSPRING_CLOUD_NAME
: o nome da instância com falhaERROR_MESSAGE
: a mensagem de erro observada
Não há nenhum plano disponível para o mercado '<Localização>'
Quando você acessar a oferta de SaaS do plano Enterprise de Aplicativos Spring do Azure no Azure Marketplace, poderá encontrar a mensagem “Não há planos disponíveis para o mercado “<Localização>”” como na imagem a seguir.
O plano Enterprise de Aplicativos Spring do Azure exige que os clientes paguem uma licença para componentes do Tanzu por meio de uma oferta do Azure Marketplace. Para compras no Azure Marketplace, o país ou a região da conta de cobrança da sua assinatura do Azure deve estar nas localizações geográficas com suporte da oferta de SaaS.
O plano Enterprise de Aplicativos Spring do Azure agora dá suporte a todas as localizações geográficas com suporte no Azure Marketplace. Confira a seção Localizações geográficas com suporte de Disponibilidade geográfica e suporte a moedas para o marketplace comercial.
Veja a conta de cobrança da sua assinatura se tiver acesso de administrador. Confira Exibir contas de cobrança.
Preciso do suporte do VMware Spring Runtime (somente plano Enterprise)
O plano Enterprise tem suporte interno do VMware Spring Runtime para que você possa abrir os tíquetes de suporte no VMware se considera que o problema está no escopo do suporte do VMware Spring Runtime. Para entender melhor o próprio suporta a VMware Spring Runtime, consulte o VMware Spring Runtime. Para obter mais informações sobre como registrar e usar esse serviço de suporte, consulte a seção Suporte nas Perguntas frequentes do plano Enterprise do VMware. No caso de outros problemas, abra um tíquete de suporte com a Microsoft.