Guida introduttiva: Monitorare le applicazioni end-to-end
Nota
I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.
Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.
Questo articolo si applica a:❌ Basic/Standard ✔️ Enterprise
Questa guida introduttiva illustra come monitorare le app che eseguono il piano Enterprise di Azure Spring Apps usando Application Insights e Log Analytics.
Nota
È 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 più avanti in questo articolo.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Comprendere e soddisfare la sezione Requisiti del piano Enterprise in Azure Marketplace.
- Interfaccia della riga di comando di Azure versione 2.45.0 o successiva.
- Git.
- Estensione del piano Enterprise di Azure Spring Apps. Usare il comando seguente per rimuovere le versioni precedenti e installare l'estensione del piano Enterprise più recente. Se l'estensione
spring-cloud
è stata installata in precedenza, disinstallarla per evitare la mancata corrispondenza della configurazione e della versione.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Risorse da monitorare, ad esempio quelle create nelle guide introduttive seguenti:
Aggiornare le applicazioni
È necessario fornire manualmente l'stringa di connessione Application Insights alle applicazioni Order Service (ASP.NET core) e Cart Service (python). Le istruzioni seguenti descrivono come fornire questo stringa di connessione e aumentare la frequenza di campionamento ad Application Insights.
Nota
Attualmente solo i buildpack per le applicazioni Java e NodeJS supportano la strumentazione di Application Insights.
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>"
Nota
Per impostazione predefinita, il APP_INSIGHTS_NAME è uguale al AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME.
Usare i comandi seguenti per recuperare il stringa di connessione di Application Insights e impostarlo 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}
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}
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
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 NodeJS, 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
Esistono due modi per visualizzare i log in Azure Spring Apps: lo streaming di log dei log in tempo reale per ogni istanza dell'app o Log Analytics per i log aggregati con funzionalità di query avanzate
Usare lo streaming dei 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 provare a registrare lo streaming per l'applicazione del 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 Log ed eseguire una delle query di esempio seguenti per Azure Spring Apps.
Digitare ed eseguire la query Kusto seguente 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:
Digitare ed eseguire la query Kusto seguente per visualizzare catalog-service
i log dell'applicazione:
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:
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:
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 gestito da Azure Spring Apps:
AppPlatformSystemLogs
| where LogType contains "SpringCloudGateway"
| project TimeGenerated,Log
Questa query produce risultati simili a quelli mostrati nello screenshot seguente:
Digitare ed eseguire la query Kusto seguente per visualizzare tutti i log dal Registro di sistema gestito del 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:
Usare la traccia
Nella 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 applicazioni, che sarà simile allo screenshot seguente:
Passare al riquadro Prestazioni , che sarà simile allo screenshot seguente:
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:
Passare al riquadro Prestazioni/Ruoli . Qui è possibile visualizzare le metriche delle prestazioni per singole istanze o ruoli, analogamente a quanto illustrato nello screenshot seguente:
Selezionare una chiamata SQL per visualizzare la transazione end-to-end nel contesto, analogamente a quanto illustrato nello screenshot seguente:
Passare al riquadro Errori/Eccezioni . Qui è possibile visualizzare una raccolta di eccezioni, simile a quanto illustrato nello screenshot seguente:
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 usata:
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 ProductController
REST e PaymentController
sono stati instrumentati dall'annotazione @Timed
Micrometer a livello di classe.
L'applicazione acme-catalog
ha la metrica personalizzata seguente abilitata: : @Timedstore.products
L'applicazione acem-payment
ha la metrica personalizzata seguente abilitata: : @Timedstore.payment
È possibile visualizzare queste metriche personalizzate nel riquadro Metriche , come illustrato nello screenshot seguente.
Passare al riquadro Metriche attive. Qui è possibile visualizzare le metriche in tempo reale sullo schermo con latenze < basse 1 secondo, come illustrato nello screenshot seguente:
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
- ApacheSkyRsk
- Dynatrace
- ElasticAPM
- NewRelic
È possibile aggiungere altri binding 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 uno degli argomenti di avvio rapido facoltativi seguenti: