Share via


Solucionar problemas comuns do Azure Spring Apps

Nota

Azure Spring Apps é o novo nome para o serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns lugares por um tempo enquanto trabalhamos para atualizar ativos, como capturas de tela, vídeos e diagramas.

Este artigo aplica-se a: ✔️ Basic/Standard ✔️ Enterprise

Este artigo fornece instruções para solucionar problemas de desenvolvimento do Azure Spring Apps. Para obter mais informações, consulte Perguntas frequentes sobre o Azure Spring Apps.

Problemas de disponibilidade, desempenho e aplicativos

A minha aplicação não consegue iniciar

Quando seu aplicativo não pode iniciar, você pode achar que seu ponto de extremidade não pode ser conectado ou retorna um 502 após algumas tentativas.

Para solucionar problemas, exporte os logs para o Azure Log Analytics. A tabela para logs de aplicativos Spring é chamada 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 problemas prováveis:

  • Falta um dos feijões ou uma das suas dependências.
  • Uma das propriedades do bean está em falta 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 acoplados. Por exemplo, vamos supor que seu aplicativo tenha uma ligação a uma instância do MySQL definida para a hora do sistema local. Se o aplicativo falhar ao iniciar, a seguinte mensagem de erro pode 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, vá para a server parameters instância do MySQL e altere o time_zone valor de SYSTEM para +0:00.

A minha aplicação falha ou emite um erro inesperado

Quando você estiver depurando falhas de aplicativo, comece verificando o status de execução e o status de descoberta do aplicativo. Para fazer isso, vá para Aplicativos no portal do Azure para garantir que os status de todos os aplicativos estejam em Execução e UP.

  • Se o status for Em execução, mas o status da descoberta não estiver UP, vá para a seção "Meu aplicativo não pode ser registrado".

  • Se o status da descoberta for UP, vá para Métricas para verificar a integridade do aplicativo. Inspecione as seguintes métricas:

    • tomcat.global.error:

      Todas as exceções do aplicativo Spring são contadas aqui. Se esse número for grande, vá para o Azure Log Analytics para inspecionar os logs do aplicativo.

    • jvm.memory.max:

      A quantidade máxima de memória disponível para o aplicativo. A quantidade pode estar indefinida ou pode mudar ao longo do tempo se for definida. Se for definido, a quantidade de memória usada e comprometida é sempre menor ou igual ao máximo. No entanto, uma alocação de memória pode falhar com uma OutOfMemoryError mensagem se a alocação tentar aumentar a memória usada de tal forma que usado > comprometido, mesmo se usado <= max ainda é verdadeiro. Em tal situação, tente aumentar o tamanho máximo da pilha usando o -Xmx parâmetro.

    • jvm.memory.used:

      A quantidade de memória em bytes que é usada atualmente pelo aplicativo. Para uma aplicação Java de carga normal, esta série métrica forma um padrão de dente de serra, onde o uso de memória aumenta e diminui constantemente em pequenos incrementos e de repente cai muito, e então o padrão se repete. Essa série de métricas ocorre devido à coleta de lixo dentro da máquina virtual Java, onde as ações de coleta representam quedas no padrão dente de serra.

      Essa métrica é importante para ajudar a identificar problemas de memória, como:

      • Uma explosão de memória logo no início.
      • A alocação de memória de surto para um caminho lógico específico.
      • Fugas de memória graduais.

    Para obter mais informações, consulte Métricas.

    Nota

    Essas métricas estão disponíveis apenas para aplicativos Spring Boot. Para habilitar essas métricas, adicione a spring-boot-starter-actuator dependência. Para obter mais informações, consulte a seção Adicionar dependência do atuador do aplicativo 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 como muito alta, a seguinte mensagem de erro pode aparecer em seus logs:

    "memória necessária 2728741K é maior que 2000M disponível para alocação"

Para saber mais sobre o Azure Log Analytics, consulte Introdução ao Log Analytics no Azure Monitor.

A minha aplicação tem uma elevada utilização da CPU ou da memória

Se o seu aplicativo tiver alto uso de CPU ou memória, uma das duas coisas é verdadeira:

  • Todas as instâncias do aplicativo experimentam alto uso de CPU ou memória.
  • Algumas das instâncias do aplicativo experimentam alto uso de CPU ou memória.

Para verificar qual situação se aplica, use as seguintes etapas:

  1. Vá para Métricas e selecione Porcentagem de uso da CPU de serviço ou Memória de serviço usada.
  2. Adicione um filtro App= para especificar qual aplicativo você deseja monitorar.
  3. Divida as métricas por instância.

Se todas as instâncias estiverem enfrentando alto uso de CPU ou memória, você precisará dimensionar 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 com 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 Azure Spring Apps.

Se todas as instâncias estiverem ativas e em execução, vá para o Azure Log Analytics para consultar os logs do aplicativo e revisar a lógica do código. Esta revisão ajuda você a ver se algum deles 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 Azure Log Analytics, consulte 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 no Azure Spring Apps

Antes de integrar a sua candidatura, certifique-se de que cumpre os seguintes critérios:

  • O aplicativo pode ser executado localmente com a versão de tempo de execução Java especificada.
  • A configuração do ambiente (CPU/RAM/Instances) atende ao requisito mínimo definido pelo provedor do aplicativo.
  • Os itens de configuração têm seus valores esperados. Para obter mais informações, consulte 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 da JVM têm seus valores esperados.
  • Recomendamos que você desabilite ou remova os serviços incorporados do Config Server e do Spring Service Registry do pacote do aplicativo.
  • Se os recursos do Azure forem vinculados através do Vínculo de Serviços, confirme que os recursos de destino estão a funcionar.

Configuração e gestão

Encontrei um problema ao criar uma instância de serviço do Azure Spring Apps

Quando você configura uma instância de 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 do Azure Spring Apps usando a CLI do Azure ou o modelo do Azure Resource Manager, verifique se você atende às seguintes condições:

  • A subscrição está ativa.
  • O Azure Spring Apps está disponível na região que está a utilizar. Para obter mais informações, consulte as Perguntas frequentes do Azure Spring Apps.
  • O grupo de recursos para a instância já está criado.
  • O nome do recurso está em conformidade com a regra de nomenclatura. O nome deve conter apenas letras minúsculas, números e hífenes. O primeiro caráter tem de ser uma letra. O último caráter tem de ser uma letra ou um número. O valor deve conter de 2 a 32 caracteres.

Se você quiser configurar a instância de serviço do Azure Spring Apps usando o modelo do Resource Manager, primeiro consulte Compreender a estrutura e a sintaxe dos modelos do Azure Resource Manager.

O nome da instância de serviço do Azure Spring Apps é usado para solicitar um nome de subdomínio em , portanto, a instalação falhará se o nome entrar em azuremicroservices.ioconflito com um nome existente. Você pode encontrar mais detalhes nos registros de atividades.

Não consigo implantar um aplicativo .NET Core

Não é possível carregar um arquivo .zip para um aplicativo .NET Core Steeltoe usando o portal do Azure ou o modelo do Gerenciador de Recursos.

Quando você implanta seu pacote de aplicativo usando a CLI do Azure, a CLI do Azure sonda periodicamente o progresso da implantação e, no final, exibe o resultado da implantação.

Certifique-se de que seu aplicativo está empacotado no formato de arquivo .zip correto. Se não estiver empacotado corretamente, o processo para de responder ou você recebe uma mensagem de erro.

Não consigo implantar um pacote JAR

Não é possível carregar o arquivo Java Archive (JAR)/pacote de código-fonte usando o portal do Azure ou o modelo do Gerenciador de Recursos.

Quando você implanta seu pacote de aplicativo usando a CLI do Azure, a CLI do Azure sonda periodicamente o progresso da implantação e, no final, exibe o resultado da implantação.

Se a consulta for interrompida, ainda poderá utilizar o seguinte comando para obter os registos de implementação:

az spring app show-deploy-log --name <app-name>

Certifique-se de que seu aplicativo esteja empacotado no formato JAR executável correto. Se ele não estiver 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 código-fonte

Não é possível carregar JAR/pacote de origem usando o portal do Azure ou o modelo do Gerenciador de Recursos.

Quando você implanta seu pacote de aplicativo usando a CLI do Azure, a CLI do Azure sonda periodicamente o progresso da implantação e, no final, exibe o resultado da implantação.

Se a consulta for interrompida, ainda poderá utilizar o seguinte comando para obter e construir os registos de implementação:

az spring app show-deploy-log --name <app-name>

No entanto, uma instância de serviço do Azure Spring Apps pode disparar apenas um trabalho de compilação para um pacote de origem de cada vez. Para obter mais informações, consulte Implantar um aplicativo e Configurar um ambiente de preparo no Azure Spring Apps.

A minha candidatura não pode ser registada

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 no arquivo POM (Project Object Model). Depois de configurado, o ponto de extremidade interno do servidor do Registro de Serviço é injetado como uma variável de ambiente com seu aplicativo. Em seguida, os aplicativos se registram no servidor do Registro de Serviço e descobrem outros aplicativos dependentes.

Aguarde pelo menos dois minutos antes que uma instância recém-registrada comece a receber tráfego.

Se você estiver migrando uma solução existente baseada no Spring Cloud para o Azure, certifique-se de remover ou desabilitar suas instâncias ad-hoc do Registro de Serviço e do Servidor de Configuração para evitar conflitos com as instâncias gerenciadas fornecidas pelo Azure Spring Apps.

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 Azure Log Analytics, consulte Introdução ao Log Analytics no Azure Monitor. Consulte os logs usando a linguagem de consulta Kusto.

Quero inspecionar as variáveis de ambiente do 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. Garantir que as variáveis de ambiente estejam corretas é uma primeira etapa necessária na solução de possíveis problemas. Você pode usar o ponto de extremidade Spring Boot Actuator para revisar suas variáveis de ambiente.

Aviso

Este 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 acessível publicamente ou se você tiver atribuído um nome de domínio ao seu aplicativo.

  1. Aceder a https://<your-application-test-endpoint>/actuator/health.

    Uma resposta semelhante indica {"status":"UP"} que o ponto de extremidade foi habilitado. Se a resposta for negativa, inclua a seguinte dependência no arquivo POM.xml :

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. Com o ponto de extremidade do Spring Boot Actuator habilitado, vá para o 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 *.

  3. Reinicie o aplicativo.

  4. Vá para https://<your-application-test-endpoint>/actuator/env e inspecione a resposta. Deverá ter o seguinte aspeto:

    {
        "activeProfiles": [],
        "propertySources": {,
            "name": "server.ports",
            "properties": {
                "local.server.port": {
                    "value": 1025
                }
            }
        }
    }
    

Procure o nó filho chamado systemEnvironment. Este nó contém as variáveis de ambiente do seu aplicativo.

Importante

Lembre-se de reverter a exposição das variáveis de ambiente antes de tornar seu aplicativo acessível ao público. Vá para o portal do Azure, procure a página de configuração do seu 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 garantir que os status do aplicativo estejam em execução e UP.

Verifique se o JMX está ativado no seu pacote de aplicativos. Esse recurso pode ser habilitado com a propriedade spring.jmx.enabled=truede configuração .

Verifique se a dependência está habilitada spring-boot-actuator no seu pacote de aplicativo e se ele é inicializado 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 espaço de trabalho do Log Analytics. Além disso, esteja ciente de que o plano Basic não fornece um contrato de nível de serviço (SLA). Para obter mais informações, consulte Contratos de nível de serviço (SLA) para serviços online.

Plano empresarial

Erro 112039: Falha ao comprar no Azure Marketplace

A criação de uma instância do plano do Azure Spring Apps Enterprise falha com o código de erro "112039". Para obter mais informações, verifique a mensagem de erro detalhada na lista a seguir:

  • "Falha ao comprar no Azure Marketplace porque o RP Microsoft.SaaS não está registrado na assinatura do Azure.": o plano Azure Spring Apps Enterprise compra uma oferta SaaS da VMware.

    Você deve registrar o provedor de recursos antes de criar a Microsoft.SaaS instância do Azure Spring Apps Enterprise. Veja como registrar um provedor de recursos.

  • "Falha ao carregar o produto de catálogo vmware-inc.azure-spring-cloud-vmware-tanzu-2 no mercado de assinaturas do Azure.": O endereço da conta de cobrança da sua assinatura do Azure não está no local suportado.

    Para obter mais informações, consulte a seção Não há planos disponíveis para o mercado '<Localização>'.

  • "Falha ao comprar no Azure Marketplace devido à verificação de assinatura no contrato legal do Marketplace. Verifique se a assinatura do Azure concordou com os termos 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 ser comprado.

    Vá para 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, você pode entrar em contato com a equipe de suporte com as seguintes informações.

    • AZURE_TENANT_ID: a ID do locatário do Azure que hospeda a assinatura do Azure
    • AZURE_SUBSCRIPTION_ID: a ID de assinatura do Azure usada para criar a instância do Azure Spring Apps
    • SPRING_CLOUD_NAME: o nome da instância com falha
    • ERROR_MESSAGE: a mensagem de erro observada

Não há planos disponíveis para a '<Localização>' do mercado

Quando você visita a oferta de SaaS do Azure Spring Apps Enterprise no Azure Marketplace, ele pode dizer "Não há planos disponíveis para '<Localização>' do mercado", conforme na imagem a seguir.

Captura de ecrã do portal do Azure que mostra a mensagem de erro No plans are available for market.

O plano Azure Spring Apps Enterprise precisa que os clientes paguem por uma licença para componentes Tanzu por meio de uma oferta do Azure Marketplace. Para comprar no Azure Marketplace, o país ou região da conta de cobrança da sua assinatura do Azure deve estar nos locais geográficos suportados da oferta SaaS.

O Azure Spring Apps Enterprise agora suporta todas as localizações geográficas suportadas pelo Azure Marketplace. Consulte a seção Localizações geográficas suportadas em Disponibilidade geográfica e suporte de moeda para o mercado comercial.

Pode ver a conta de faturação da sua subscrição se tiver acesso de administrador. Consulte Ver contas de faturação.

Preciso do VMware Spring Runtime Support (somente plano Enterprise)

O plano Enterprise tem suporte integrado ao VMware Spring Runtime, para que você possa abrir tíquetes de suporte para o VMware se achar que seu problema está no escopo do VMware Spring Runtime Support. Para entender melhor o VMware Spring Runtime Support em si, 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 corporativas da VMware. Para quaisquer outros problemas, abra um tíquete de suporte com a Microsoft.

Próximos passos