Come monitorare le app Spring Boot con Elastic APM Java Agent
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
Questo articolo illustra come usare l'agente elastico APM per monitorare le applicazioni Spring Boot in esecuzione in Azure Spring Apps.
Con la soluzione Elastic Observability è possibile ottenere un'osservabilità unificata per:
- Monitorare le app usando l'agente Java di Elastic APM e l'uso dell'archiviazione permanente con Azure Spring Apps.
- Usare le impostazioni di diagnostica per spedire i log di Azure Spring Apps a Elastic. Per altre informazioni, vedere Analizzare i log con Elastic (ELK) usando le impostazioni di diagnostica.
Il video seguente presenta un'osservabilità unificata per le applicazioni Spring Boot che usano Elastic.
Prerequisiti
- Interfaccia della riga di comando di Azure
- Distribuire Elastic in Azure
- Gestire il server APM & Fleet
Distribuire l'applicazione Spring Petclinic
Questo articolo usa l'esempio Spring Petclinic per esaminare i passaggi necessari. Usare la procedura seguente per distribuire l'applicazione di esempio:
Seguire la procedura descritta in Distribuire le app Spring Boot con App Spring di Azure e MySQL fino a raggiungere la sezione Distribuire le applicazioni Spring Boot e impostare le variabili di ambiente.
Usare l'estensione Azure Spring Apps per l'interfaccia della riga di comando di Azure con il comando seguente per creare un'applicazione da eseguire in Azure Spring Apps:
az spring app create \ --resource-group <your-resource-group-name> \ --service <your-Azure-Spring-Apps-instance-name> \ --name <your-app-name> \ --is-public true
Abilitare l'archiviazione permanente personalizzata per Azure Spring Apps
Usare la procedura seguente per abilitare l'archiviazione permanente personalizzata:
Seguire la procedura descritta in Come abilitare la propria risorsa di archiviazione permanente in Azure Spring Apps.
Usare il comando seguente dell'interfaccia della riga di comando di Azure per aggiungere una risorsa di archiviazione permanente per le app Azure Spring Apps.
az spring app append-persistent-storage \ --resource-group <your-resource-group-name> \ --service <your-Azure-Spring-Apps-instance-name> \ --name <your-app-name> \ --persistent-storage-type AzureFileVolume \ --share-name <your-Azure-file-share-name> \ --mount-path <unique-mount-path> \ --storage-name <your-mounted-storage-name>
Attivare l'agente Java APM elastico
Prima di procedere, sono necessarie informazioni utili sulla connettività del server elastico APM, che presuppone la distribuzione di Elastic in Azure. Per altre informazioni, vedere Come distribuire e gestire Elastic in Microsoft Azure. Per ottenere queste informazioni, seguire questa procedura:
Nella portale di Azure passare alla pagina Panoramica della distribuzione elastica e quindi selezionare Gestisci distribuzione cloud elastica.
Nella distribuzione in Elastic Cloud Console selezionare la sezione APM & Fleet per ottenere l'endpoint del server Elastic APM e il token segreto.
Scaricare l'agente Java APM elastico da Maven Central.
Caricare l'agente APM elastico nell'archiviazione permanente personalizzata abilitata in precedenza. Passare a File di Azure hare e selezionare Carica per aggiungere il file JAR dell'agente.
Dopo aver ottenuto l'endpoint elastico APM e il token segreto, usare il comando seguente per attivare l'agente Java di Elastic APM durante la distribuzione delle applicazioni. Il segnaposto
<agent-location>
fa riferimento alla posizione di archiviazione montata dell'agente Java di Elastic APM.az spring app deploy \ --name <your-app-name> \ --artifact-path <unique-path-to-your-app-jar-on-custom-storage> \ --jvm-options='-javaagent:<elastic-agent-location>' \ --env ELASTIC_APM_SERVICE_NAME=<your-app-name> \ ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package-name>' \ ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>' \ ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
Automatizzare il provisioning
È anche possibile eseguire una pipeline di automazione del provisioning usando Terraform, Bicep o un modello di Azure Resource Manager (modello di Resource Manager). Questa pipeline può offrire un'esperienza pratica completa per instrumentare e monitorare tutte le nuove applicazioni create e distribuite.
Automatizzare il provisioning con Terraform
Per configurare le variabili di ambiente in un modello Terraform, aggiungere il codice seguente al modello, sostituendo i <segnaposto ...> con i propri valori. Per altre informazioni, vedere Gestire una distribuzione di App Azure Spring attive.
resource "azurerm_spring_cloud_java_deployment" "example" {
...
jvm_options = "-javaagent:<elastic-agent-location>"
...
environment_variables = {
"ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
"ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
"ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
"ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
}
}
Automatizzare il provisioning con un file Bicep
Per configurare le variabili di ambiente in un file Bicep, aggiungere il codice seguente al file, sostituendo i <segnaposto ...> con i propri valori. Per altre informazioni, vedere Microsoft.AppPlatform Spring/apps/deployments.
deploymentSettings: {
environmentVariables: {
ELASTIC_APM_SERVICE_NAME='<your-app-name>',
ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package>',
ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>',
ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
},
jvmOptions: '-javaagent:<elastic-agent-location>',
...
}
Automatizzare il provisioning usando un modello di Resource Manager
Per configurare le variabili di ambiente in un modello di Resource Manager, aggiungere il codice seguente al modello, sostituendo i <segnaposto ...> con i propri valori. Per altre informazioni, vedere Microsoft.AppPlatform Spring/apps/deployments.
"deploymentSettings": {
"environmentVariables": {
"ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
"ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
"ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
"ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
},
"jvmOptions": "-javaagent:<elastic-agent-location>",
...
}
Aggiornare l'agente Java APM elastico
Per pianificare l'aggiornamento, vedere Aggiornare le versioni per Elastic Cloud in Azure e modifiche di rilievo per APM. Dopo aver aggiornato il server APM, caricare il file JAR dell'agente Java di Elastic APM nell'archiviazione permanente personalizzata. Riavviare quindi le app con le opzioni JVM aggiornate che puntano al file JAR dell'agente Java di Elastic APM aggiornato.
Monitorare applicazioni e metriche con Elastic APM
Usare la procedura seguente per monitorare le applicazioni e le metriche:
Nella portale di Azure passare alla pagina Panoramica della distribuzione elastica e quindi selezionare il collegamento Kibana.
Dopo aver aperto Kibana, cercare APM nella barra di ricerca e quindi selezionare APM.
Kibana APM è l'applicazione curata per supportare i flussi di lavoro di monitoraggio delle applicazioni. Qui è possibile visualizzare dettagli generali, ad esempio tempi di richiesta/risposta, velocità effettiva e transazioni in un servizio con l'impatto maggiore sulla durata.
È possibile eseguire il drill-down in una transazione specifica per comprendere i dettagli specifici della transazione, ad esempio la traccia distribuita.
L'agente Java di Elastic APM acquisisce anche le metriche JVM dalle app Azure Spring Apps disponibili con l'app Kibana per la risoluzione dei problemi.
Usando il motore di intelligenza artificiale predefinito nella soluzione elastica, è anche possibile abilitare rilevamento anomalie nei servizi di Azure Spring Apps e scegliere un'azione appropriata, ad esempio la notifica di Teams, la creazione di un problema JIRA, una chiamata API basata su webhook e altri.