Partilhar via


Guia de início rápido: monitore aplicativos de ponta a ponta

Nota

Os planos Basic, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.

O plano de consumo padrão e dedicado 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 obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.

Este artigo aplica-se a: ❎ Basic/Standard ✅ Enterprise

Este guia de início rápido mostra como monitorar aplicativos que executam o plano do Azure Spring Apps Enterprise usando o Application Insights e o Log Analytics.

Nota

Você pode monitorar suas cargas de trabalho do Spring de ponta a ponta usando qualquer ferramenta e plataforma de sua escolha, incluindo App Insights, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic ou Splunk. Para obter mais informações, consulte Trabalhando com outras ferramentas de monitoramento mais adiante neste artigo.

Pré-requisitos

Atualizar aplicativos

Você deve fornecer manualmente a cadeia de conexão do Application Insights para os aplicativos Order Service (ASP.NET core) e Cart Service (python). As instruções a seguir descrevem como fornecer essa cadeia de conexão e aumentar a taxa de amostragem para o Application Insights.

Nota

Atualmente, apenas os buildpacks para aplicativos Java e NodeJS suportam instrumentação do Application Insights.

  1. Crie variáveis para manter os nomes dos recursos usando os comandos a seguir. Certifique-se de substituir os espaços reservados pelos seus próprios valores. O nome da sua instância de serviço do Azure Spring Apps deve ter entre 4 e 32 caracteres e pode conter apenas letras minúsculas, números e hífenes. O primeiro caractere do nome do serviço deve ser uma letra e o último caractere deve ser uma letra ou um número.

    export RESOURCE_GROUP="<resource-group-name>"
    export APP_INSIGHTS_NAME="<app-insights-name>"
    export KEY_VAULT_NAME="<key-vault-name>"
    export AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME="<Azure-Spring-Apps-service-instance-name>"
    

    Nota

    Por padrão, o APP_INSIGHTS_NAME é o mesmo que o AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME.

  2. Use os seguintes comandos para recuperar a cadeia de conexão do Application Insights e defini-la no Cofre da Chave:

    export CONNECTION_STRING=$(az monitor app-insights component show \
        --resource-group ${RESOURCE_GROUP} \
        --app ${APP_INSIGHTS_NAME} \
        --query "connectionString" \
        --output tsv)
    
    az keyvault secret set \
        --vault-name ${KEY_VAULT_NAME} \
        --name "ApplicationInsights--ConnectionString" \
        --value ${CONNECTION_STRING}
    
  3. Use o comando a seguir para atualizar a taxa de amostragem da associação do Application Insights para aumentar a quantidade de dados disponíveis:

    az spring build-service builder buildpack-binding set \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --builder-name default \
        --name default \
        --type ApplicationInsights \
        --properties sampling-rate=100 connection_string=${CONNECTION_STRING}
    
  4. Use os seguintes comandos para reiniciar aplicativos para recarregar a configuração:

    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name cart-service
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name order-service
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name catalog-service
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name frontend
    
    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name payment-service
    
  5. Se você configurou o logon único, use os seguintes comandos para reiniciar aplicativos para recarregar a configuração do aplicativo de serviço de identidade:

    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name identity-service
    

    Para os aplicativos Java e NodeJS, a reinicialização permitirá que a nova taxa de amostragem entre em vigor. Para os aplicativos não-Java, a reinicialização permitirá que eles acessem a Chave de Instrumentação recém-adicionada a partir do Cofre da Chave.

Ver registos

Há duas maneiras de ver logs no Azure Spring Apps: streaming de log de logs em tempo real por instância de aplicativo ou Log Analytics para logs agregados com recurso de consulta avançada

Usar streaming de log

Gere tráfego no aplicativo movendo-se pelo aplicativo, visualizando o catálogo e fazendo pedidos. Use os seguintes comandos para gerar tráfego continuamente, até ser cancelado:

export GATEWAY_URL=$(az spring gateway show \
    --resource-group ${RESOURCE_GROUP} \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --query "properties.url" \
    --output tsv)

export GATEWAY_URL=https://${GATEWAY_URL} 

cd azure-spring-apps-enterprise/load-test/traffic-generator
./gradlew gatlingRun-com.vmware.acme.simulation.GuestSimulation.java

Use o seguinte comando para obter as 100 linhas mais recentes de logs do console do aplicativo Catalog Service:

az spring app logs \
    --resource-group ${RESOURCE_GROUP} \
    --name catalog-service \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --lines 100

Ao adicionar a --follow opção, você pode obter streaming de log em tempo real de um aplicativo. Use o seguinte comando para tentar o streaming de log para o aplicativo Serviço de Catálogo:

az spring app logs \
    --resource-group ${RESOURCE_GROUP} \
    --name catalog-service \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --follow

Gorjeta

Você pode usar os logs --help do aplicativo az spring para explorar mais parâmetros e funcionalidades de fluxo de log.

Utilizar o Log Analytics

Navegue até o portal do Azure e abra a instância do Log Analytics que você criou. Você pode encontrar a instância do Log Analytics no mesmo grupo de recursos em que criou a instância de serviço do Azure Spring Apps.

Na página Análise de Logs, selecione o painel Logs e execute qualquer uma das seguintes consultas de exemplo para o Azure Spring Apps.

Digite e execute a seguinte consulta Kusto para ver os logs do aplicativo:

AppPlatformLogsforSpring
| where TimeGenerated > ago(24h)
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log

Essa consulta produz resultados semelhantes aos mostrados na captura de tela a seguir:

Captura de tela do portal do Azure mostrando a saída de exemplo de todas as consultas de logs do aplicativo.

Digite e execute a seguinte consulta Kusto para ver catalog-service os logs do aplicativo:

AppPlatformLogsforSpring
| where AppName has "catalog-service"
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log

Essa consulta produz resultados semelhantes aos mostrados na captura de tela a seguir:

Captura de tela do portal do Azure mostrando a saída de exemplo dos logs do aplicativo do Serviço de Catálogo.

Digite e execute a seguinte consulta Kusto para ver erros e exceções gerados por cada aplicativo:

AppPlatformLogsforSpring
| where Log contains "error" or Log contains "exception"
| extend FullAppName = strcat(ServiceName, "/", AppName)
| summarize count_per_app = count() by FullAppName, ServiceName, AppName, _ResourceId
| sort by count_per_app desc
| render piechart

Essa consulta produz resultados semelhantes aos mostrados na captura de tela a seguir:

Captura de tela do portal do Azure mostrando a saída de exemplo dos Logs de Ingresso.

Digite e execute a seguinte consulta Kusto para ver tudo nas chamadas de entrada no Azure Spring Apps:

AppPlatformIngressLogs
| project TimeGenerated, RemoteAddr, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

Digite e execute a seguinte consulta Kusto para ver todos os logs do Spring Cloud Config Gateway gerenciado pelo Azure Spring Apps:

AppPlatformSystemLogs
| where LogType contains "SpringCloudGateway"
| project TimeGenerated,Log

Essa consulta produz resultados semelhantes aos mostrados na captura de tela a seguir:

Captura de tela do portal do Azure mostrando a saída de exemplo dos logs do Spring Cloud Gateway.

Digite e execute a seguinte consulta Kusto para ver todos os logs do Registro gerenciado do Spring Cloud Service gerenciado pelo Azure Spring Apps:

AppPlatformSystemLogs
| where LogType contains "ServiceRegistry"
| project TimeGenerated, Log

Essa consulta produz resultados semelhantes aos mostrados na captura de tela a seguir:

Captura de ecrã do portal do Azure a mostrar um exemplo de saída dos registos de registo do serviço.

Utilizar o rastreio

No portal do Azure, abra a instância do Application Insights criada pelo Azure Spring Apps e comece a monitorar aplicativos do Spring Boot. Você pode encontrar a instância do Application Insights no mesmo grupo de recursos em que criou uma instância de serviço do Azure Spring Apps.

Navegue até o painel Mapa do aplicativo , que será semelhante à captura de tela a seguir:

Captura de ecrã do portal do Azure a mostrar o Mapa de Aplicações do Azure Application Insights.

Navegue até o painel Desempenho , que será semelhante à seguinte captura de tela:

Captura de ecrã do portal do Azure a mostrar o painel Desempenho do Azure Application Insights.

Navegue até o painel Desempenho/Dependências . Aqui você pode ver o número de desempenho para dependências, particularmente chamadas SQL, semelhante ao que é mostrado na captura de tela a seguir:

Captura de ecrã do portal do Azure a mostrar a secção Dependências do painel Desempenho do Azure Application Insights.

Navegue até o painel Desempenho/Funções . Aqui você pode ver as métricas de desempenho para instâncias ou funções individuais, semelhantes ao que é mostrado na captura de tela a seguir:

Captura de ecrã do portal do Azure a mostrar a secção Funções do painel Desempenho do Azure Application Insights.

Selecione uma chamada SQL para ver a transação de ponta a ponta no contexto, semelhante ao que é mostrado na captura de tela a seguir:

Captura de tela do portal do Azure mostrando a transação de ponta a ponta de uma chamada S Q L.

Navegue até o painel Falhas/Exceções . Aqui você pode ver uma coleção de exceções, semelhante ao que é mostrado na captura de tela a seguir:

Captura de tela do portal do Azure mostrando falhas de aplicativo grafadas.

Ver métricas

Navegue até o painel Métricas . Aqui você pode ver métricas contribuídas por aplicativos Spring Boot, módulos Spring Cloud e dependências. O gráfico na captura de tela a seguir mostra http_server_requests e memória de pilha usada:

Captura de ecrã do portal do Azure a mostrar métricas ao longo do tempo.

O Spring Boot registra um grande número de métricas principais: JVM, CPU, Tomcat, Logback e assim por diante. A configuração automática do Spring Boot permite a instrumentação de solicitações tratadas pelo Spring MVC. Os controladores ProductController REST e PaymentController foram instrumentados pela anotação Micrometer @Timed no nível da classe.

O acme-catalog aplicativo tem a seguinte métrica personalizada habilitada: @Timedstore.products

O acem-payment aplicativo tem a seguinte métrica personalizada habilitada: @Timedstore.payment

Você pode ver essas métricas personalizadas no painel Métricas , conforme mostrado na captura de tela a seguir.

Captura de tela mostrando métricas personalizadas instrumentadas pelo micrômetro.

Navegue até o painel Métricas em tempo real. Aqui você pode ver métricas ao vivo na tela com latências baixas de < 1 segundo, como mostrado na captura de tela a seguir:

Captura de tela mostrando as métricas ao vivo de todos os aplicativos.

Trabalhar com outras ferramentas de monitorização

O plano Azure Spring Apps Enterprise também suporta a exportação de métricas para outras ferramentas, incluindo as seguintes ferramentas:

  • AppDynamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelíquia

Você pode adicionar mais ligações a um construtor no Tanzu Build Service usando o seguinte comando:

az spring build-service builder buildpack-binding create \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> \
    --builder-name <builder-name> \
    --name <binding-name> \
    --type <ApplicationInsights|AppDynamics|ApacheSkyWalking|Dynatrace|ElasticAPM|NewRelic> \
    --properties <connection-properties>
    --secrets <secret-properties>

Clean up resources (Limpar recursos)

Se você planeja continuar trabalhando com guias de início rápido e tutoriais subsequentes, convém deixar esses recursos no lugar. Quando não for mais necessário, exclua o grupo de recursos, que exclui os recursos do grupo de recursos. Para excluir o grupo de recursos usando a CLI do Azure, use os seguintes comandos:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Próximos passos

Continue para qualquer um dos seguintes inícios rápidos opcionais: