Share via


Come monitorare le app Spring Boot con Elastic APM Java Agent

Nota

Azure Spring Apps è il nuovo nome del servizio Azure Spring Cloud. Anche se il servizio ha un nuovo nome, il nome precedente verrà visualizzato in alcune posizioni per un po' mentre si lavora per aggiornare gli asset, ad esempio screenshot, video e diagrammi.

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

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:

  1. 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.

  2. 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:

  1. Seguire la procedura descritta in Come abilitare la propria risorsa di archiviazione permanente in Azure Spring Apps.

  2. 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:

  1. Nella portale di Azure passare alla pagina Panoramica della distribuzione elastica e quindi selezionare Gestisci distribuzione cloud elastica.

    Screenshot della pagina portale di Azure Elasticsearch (Elastic Cloud).

  2. Nella distribuzione in Elastic Cloud Console selezionare la sezione APM & Fleet per ottenere l'endpoint del server Elastic APM e il token segreto.

    Screenshot della pagina Elastic APM & Fleet con l'opzione Copia endpoint e token segreto del server APM evidenziata.

  3. Scaricare l'agente Java APM elastico da Maven Central.

    Screenshot di Maven Central con il download jar evidenziato.

  4. 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.

    Screenshot del portale di Azure che mostra il riquadro Carica file della pagina Condivisione file.

  5. 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:

  1. Nella portale di Azure passare alla pagina Panoramica della distribuzione elastica e quindi selezionare il collegamento Kibana.

    Screenshot del portale di Azure che mostra la pagina Elasticsearch con il collegamento Kibana DELL'URL di distribuzione evidenziato.

  2. Dopo aver aperto Kibana, cercare APM nella barra di ricerca e quindi selezionare APM.

    Screenshot di Elastic/Kibana che mostra i risultati della ricerca 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.

Screenshot di Elastic/Kibana che mostra la pagina Panoramica di APM Services.

È possibile eseguire il drill-down in una transazione specifica per comprendere i dettagli specifici della transazione, ad esempio la traccia distribuita.

Screenshot di Elastic/Kibana che mostra la pagina Transazioni dei servizi APM.

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.

Screenshot di Elastic/Kibana che mostra la pagina JVM di APM Services.

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.

Screenshot di Elastic/Kibana che mostra la pagina Servizi APM con il riquadro Crea regola che mostra e Azioni evidenziate.

Passaggi successivi