Condividi tramite


Avvio rapido: Monitorare le applicazioni end-to-end

Note

I piani Basic, Standard ed Enterprise sono entrati in un periodo di ritiro il 17 marzo 2025. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.

Questo articolo si applica a: ❎ Basic/Standard ✅ Enterprise

Questa guida di avvio rapido illustra come monitorare le app che eseguono il piano Enterprise di Azure Spring Apps usando Application Insights e Log Analytics.

Note

È possibile monitorare i carichi di lavoro Spring end-to-end usando qualsiasi strumento e piattaforma preferita, tra cui App Insights, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic o Splunk. Per altre informazioni, vedere Uso di altri strumenti di monitoraggio descritti più avanti in questo articolo.

Prerequisiti

Aggiornare le applicazioni

È necessario fornire manualmente la stringa di connessione Application Insights alle applicazioni Order Service (ASP.NET core) e Cart Service (python). Le istruzioni seguenti descrivono come fornire questa stringa di connessione e aumentare la frequenza di campionamento per Application Insights.

Note

Attualmente solo i buildpack per Java e le applicazioni Node.js supportano la strumentazione di Application Insights.

  1. Creare variabili per contenere i nomi delle risorse usando i comandi seguenti. Assicurarsi di sostituire i segnaposto con i propri valori. Il nome dell'istanza del servizio Azure Spring Apps deve avere una lunghezza compresa tra 4 e 32 caratteri e può contenere solo lettere minuscole, numeri e trattini. Il primo carattere del nome del servizio deve essere una lettera e l'ultimo deve essere una lettera o un numero.

    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>"
    

    Note

    Per impostazione predefinita, il APP_INSIGHTS_NAME è uguale al AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME.

  2. Usare i comandi seguenti per recuperare la stringa di connessione di Application Insights e impostarla in 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. Usare il comando seguente per aggiornare la frequenza di campionamento per l'associazione di Application Insights per aumentare la quantità di dati disponibili:

    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. Usare i comandi seguenti per riavviare le applicazioni per ricaricare la configurazione:

    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 è stato configurato l'accesso Single Sign-On, usare i comandi seguenti per riavviare le applicazioni per ricaricare la configurazione dell'app del servizio identità:

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

    Per le applicazioni Java e Node.js, il riavvio consentirà di rendere effettiva la nuova frequenza di campionamento. Per le applicazioni non Java, il riavvio consentirà loro di accedere alla chiave di strumentazione appena aggiunta dall'insieme di credenziali delle chiavi.

Visualizzare i log

Ci sono modi per visualizzare i log in Azure Spring Apps: lo streaming di log per i log in tempo reale per istanza dell'app o con Log Analytics per i log aggregati con funzionalità di query avanzate

Usare lo streaming di log

Generare traffico nell'applicazione spostandosi attraverso l'applicazione, visualizzando il catalogo e inserendo ordini. Usare i comandi seguenti per generare il traffico in modo continuo, fino a quando non viene annullato:

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

Usare il comando seguente per ottenere le 100 righe più recenti dei log della console dell'applicazione dal servizio catalogo:

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

Aggiungendo l'opzione --follow, è possibile ottenere lo streaming dei log in tempo reale da un'app. Usare il comando seguente per tentare lo streaming di log per l'applicazione servizio catalogo:

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

Suggerimento

È possibile usare az spring app logs --help per esplorare altri parametri e funzionalità del flusso di log.

Usare Log Analytics

Passare al portale di Azure e aprire l'istanza di Log Analytics creata. È possibile trovare l'istanza di Log Analytics nello stesso gruppo di risorse in cui è stata creata l'istanza del servizio Azure Spring Apps.

Nella pagina Log Analytics selezionare il riquadro Logs ed eseguire una delle seguenti query di esempio per Azure Spring Apps.

Digitare ed eseguire la seguente query Kusto per visualizzare i log dell'applicazione:

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

Questa query produce risultati simili a quelli mostrati nello screenshot seguente:

Screenshot del portale di Azure che mostra l'output di esempio di tutte le query dei log dell'applicazione.

Digitare ed eseguire la seguente query Kusto per visualizzare i log dell'applicazione catalog-service:

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

Questa query produce risultati simili a quelli mostrati nello screenshot seguente:

Screenshot del portale di Azure che mostra l'output di esempio dei log dell'applicazione Servizio catalogo.

Digitare ed eseguire la query Kusto seguente per visualizzare gli errori e le eccezioni generati da ogni app:

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

Questa query produce risultati simili a quelli mostrati nello screenshot seguente:

Screenshot del portale di Azure che mostra l'output di esempio dei log in ingresso.

Digitare ed eseguire la query Kusto seguente per visualizzare tutte le chiamate in ingresso in Azure Spring Apps:

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

Digitare ed eseguire la query Kusto seguente per visualizzare tutti i log dal gateway di configurazione Spring Cloud gestito da Azure Spring Apps:

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

Questa query produce risultati simili a quelli mostrati nello screenshot seguente:

Screenshot del portale di Azure che mostra l'output di esempio dei log del gateway di Spring Cloud.

Digitare ed eseguire la query Kusto seguente per visualizzare tutti i log dal registro di servizio Spring Cloud gestito da Azure Spring Apps:

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

Questa query produce risultati simili a quelli mostrati nello screenshot seguente:

Screenshot del portale di Azure che mostra l'output di esempio dei log del registro di servizio.

Usare la traccia

Nel portale di Azure aprire l'istanza di Application Insights creata da Azure Spring Apps e avviare il monitoraggio delle applicazioni Spring Boot. È possibile trovare l'istanza di Application Insights nello stesso gruppo di risorse in cui è stata creata un'istanza del servizio Azure Spring Apps.

Passare al riquadro Mappa delle applicazioni, che sarà simile allo screenshot seguente:

Screenshot di portale di Azure che mostra la mappa delle applicazioni di Azure Application Insights.

Passare al riquadro Prestazioni, che sarà simile allo screenshot seguente:

Screenshot di portale di Azure che mostra il riquadro Prestazioni di Azure Application Insights.

Passare al riquadro Prestazioni/Dipendenze. Qui è possibile visualizzare il numero di prestazioni per le dipendenze, in particolare le chiamate SQL, come illustrato nello screenshot seguente:

Screenshot di portale di Azure che mostra la sezione Dipendenze del riquadro Prestazioni di Azure Application Insights.

Passare al riquadro Prestazioni/Ruoli. Qui è possibile visualizzare le metriche delle prestazioni per singole istanze o ruoli, analogamente a quanto illustrato nello screenshot seguente:

Screenshot di portale di Azure che mostra la sezione Ruoli del riquadro Prestazioni di Azure Application Insights.

Selezionare una chiamata SQL per visualizzare la transazione end-to-end nel contesto, analogamente a quanto illustrato nello screenshot seguente:

Screenshot del portale di Azure che mostra la transazione end-to-end di una chiamata S Q L.

Passare al riquadroErrori/Eccezioni. Qui è possibile visualizzare una raccolta di eccezioni, simile a quanto illustrato nello screenshot seguente:

Screenshot del portale di Azure che mostra i grafici degli errori delle applicazioni.

Visualizzare le metriche

Passare al riquadro Metriche. Qui è possibile visualizzare le metriche fornite dalle app Spring Boot, dai moduli Spring Cloud e dalle dipendenze. Il grafico nello screenshot seguente mostra http_server_requests e Memoria heap utilizzata:

Screenshot del portale di Azure che mostra il grafico delle metriche nel tempo.

Spring Boot registra un numero elevato di metriche principali: JVM, CPU, Tomcat, Logback e così via. La configurazione automatica di Spring Boot consente la strumentazione delle richieste gestite da Spring MVC. I controller REST ProductController e PaymentController vengono instrumentati dall'annotazione Micrometer @Timed a livello di classe.

L'applicazione acme-catalog dispone della seguente metrica personalizzata abilitata: @Timed: store.products

L'applicazione acem-payment dispone della seguente metrica personalizzata abilitata: @Timed: store.payment

È possibile visualizzare queste metriche personalizzate nel riquadro Metriche, come illustrato nello screenshot seguente.

Screenshot che mostra le metriche personalizzate instrumentate da Micrometer.

Passare al riquadro Metriche attive. Qui è possibile visualizzare sullo schermo le metriche in tempo reale con latenze basse < 1 secondo, come illustrato nello screenshot seguente:

Screenshot che mostra le metriche attive di tutte le applicazioni.

Uso di altri strumenti di monitoraggio

Il piano Enterprise di Azure Spring Apps supporta anche l'esportazione delle metriche in altri strumenti, inclusi gli strumenti seguenti:

  • AppDynamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelic

È possibile aggiungere altre associazioni a un generatore nel servizio di compilazione Tanzu usando il comando seguente:

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>

Pulire le risorse

Se si prevede di usare le guide di avvio rapido e le esercitazioni successive, è consigliabile non cancellare le risorse create. Quando non è più necessario, eliminare il gruppo di risorse per eliminare tutte le risorse contenute al suo interno. Per eliminare il gruppo di risorse usando l'interfaccia della riga di comando di Azure, usare i comandi seguenti:

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

Passaggi successivi

Continuare con una delle seguenti guide di avvio rapido facoltative: