Início Rápido: Monitorar aplicativos de ponta a ponta

Observação

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

Este artigo se aplica ao:❌ nível Básico/Standard ✔️ nível Enterprise

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

Observação

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, confira Trabalhar com outras ferramentas de monitoramento posteriormente neste artigo.

Pré-requisitos

Atualizar aplicativos

Você deve fornecer manualmente a cadeia de conexão do Application Insights aos 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.

Observação

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

  1. Crie variáveis para manter os nomes dos recursos usando os comandos a seguir. Substitua os espaços reservados pelos seus valores. O nome da instância de serviço dos Aplicativos Spring do Azure deve ter entre 4 e 32 caracteres e pode conter apenas letras minúsculas, números e hifens. 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>"
    

    Observação

    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 Key Vault:

    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ê tiver configurado 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 do Key Vault.

Exibir logs

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

Usar o streaming de log

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

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 comando a seguir para obter as 100 linhas mais recentes de logs do console do aplicativo 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 opção --follow, 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 Catalog Service:

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

Dica

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

Usar 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 do serviço Azure Spring Apps.

Na página do Log Analytics, selecione o painel Logs e execute qualquer uma das seguintes consultas de exemplo para o aplicativo Azure Spring Apps.

Digite e execute a seguinte consulta Kusto para conferir 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 seguinte captura de tela:

Screenshot of Azure portal showing example output from all application logs query.

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

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

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

Screenshot of Azure portal showing example output from Catalog Service application logs.

Digite e execute a seguinte consulta Kusto para conferir 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 seguinte captura de tela:

Screenshot of Azure portal showing example output from the Ingress Logs.

Digite e execute a seguinte consulta Kusto para conferir todas as 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 conferir 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 seguinte captura de tela:

Screenshot of Azure portal showing example output from the Spring Cloud Gateway Logs.

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

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

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

Screenshot of Azure portal showing example output from service registry logs.

Usar rastreamento

No portal do Azure, abra a instância do Application Insights criada pelo Azure Spring Apps e comece a monitorar os aplicativos 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 à seguinte captura de tela:

Screenshot of Azure portal showing the Application Map of Azure Application Insights.

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

Screenshot of Azure portal showing the Performance pane of Azure Application Insights.

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

Screenshot of Azure portal showing the Dependencies section of the Performance pane of 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, semelhante ao que é mostrado na captura de tela a seguir:

Screenshot of Azure portal showing the Roles section of the Performance pane of 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:

Screenshot of Azure portal showing the end-to-end transaction of an S Q L call.

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

Screenshot of Azure portal showing application failures graphed.

Métricas de exibição

Navegue até o painel Métricas. Aqui você pode conferir as 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 Heap Utilizada:

Screenshot of Azure portal showing metrics over time graph.

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 REST ProductController e PaymentController foram instrumentados pela anotação Micrômetro @Timed no nível de classe.

O aplicativo acme-catalog tem as seguintes métricas personalizadas habilitadas: @Timed: store.products

O aplicativo acem-payment tem as seguintes métricas personalizadas habilitadas: @Timed: store.payment

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

Screenshot showing custom metrics instrumented by Micrometer.

Navegue até o painel Métricas Dinâmicas. Aqui você pode ver as métricas ao vivo na tela com baixas latências < de 1 segundo, conforme mostrado na captura de tela a seguir:

Screenshot showing the live metrics of all applications.

Trabalhar com outras ferramentas de monitoramento

O plano Enterprise do Azure Spring Apps também dá suporte à exportação de métricas para outras ferramentas, incluindo as seguintes:

  • AppDynamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelic

Você pode adicionar mais associaçõ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>

Limpar os recursos

Se planejar continuar trabalhando com os tutoriais e inícios rápidos subsequentes, deixe esses recursos onde estão. Quando não for mais necessário, exclua o grupo de recursos, que excluirá os recursos no 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óximas etapas

Continue com qualquer um dos seguintes guias de início rápido opcionais: